Commit a19e3c80cf8a9e09bf51cca9ea28f9c11a923884
1 parent
ef1f6218
matrix edits for the 2D flow simulation
Showing
3 changed files
with
11 additions
and
10 deletions
Show diff stats
stim/biomodels/flow.h
@@ -118,7 +118,8 @@ namespace stim { | @@ -118,7 +118,8 @@ namespace stim { | ||
118 | Q.resize(n_e); | 118 | Q.resize(n_e); |
119 | } | 119 | } |
120 | 120 | ||
121 | - void inversion(T** A, int order, T** C) { | 121 | + /// Calculate the inverse of A and store the result in C |
122 | + void inversion(T** A, int order, T* C) { | ||
122 | 123 | ||
123 | #ifdef __CUDACC__ | 124 | #ifdef __CUDACC__ |
124 | 125 | ||
@@ -127,7 +128,7 @@ namespace stim { | @@ -127,7 +128,7 @@ namespace stim { | ||
127 | for (unsigned i = 0; i < order; i++) | 128 | for (unsigned i = 0; i < order; i++) |
128 | for (unsigned j = 0; j < order; j++) | 129 | for (unsigned j = 0; j < order; j++) |
129 | Aflat[i * order + j] = A[i][j]; | 130 | Aflat[i * order + j] = A[i][j]; |
130 | - T* Cflat = (T*)malloc(order * order * sizeof(T)); | 131 | + //T* Cflat = C;// (T*)malloc(order * order * sizeof(T)); |
131 | 132 | ||
132 | // create device pointer | 133 | // create device pointer |
133 | T* d_Aflat; // flat original matrix | 134 | T* d_Aflat; // flat original matrix |
@@ -175,14 +176,14 @@ namespace stim { | @@ -175,14 +176,14 @@ namespace stim { | ||
175 | HANDLE_ERROR(cudaMemcpy(&d_Cflat, d_C, sizeof(T*), cudaMemcpyDeviceToHost)); | 176 | HANDLE_ERROR(cudaMemcpy(&d_Cflat, d_C, sizeof(T*), cudaMemcpyDeviceToHost)); |
176 | 177 | ||
177 | // copy inverse matrix from device to host | 178 | // copy inverse matrix from device to host |
178 | - HANDLE_ERROR(cudaMemcpy(Cflat, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); | 179 | + HANDLE_ERROR(cudaMemcpy(C, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); |
179 | 180 | ||
180 | - for(unsigned i = 0; i < order; i++) | ||
181 | - memcpy(C[i], &Cflat[i*order], order * sizeof(T*)); | 181 | + //for(unsigned i = 0; i < order; i++) |
182 | + // memcpy(C[i], &Cflat[i*order], order * sizeof(T*)); | ||
182 | 183 | ||
183 | // clear up | 184 | // clear up |
184 | free(Aflat); | 185 | free(Aflat); |
185 | - free(Cflat); | 186 | + //free(Cflat); |
186 | HANDLE_ERROR(cudaFree(d_Aflat)); | 187 | HANDLE_ERROR(cudaFree(d_Aflat)); |
187 | HANDLE_ERROR(cudaFree(d_Cflat)); | 188 | HANDLE_ERROR(cudaFree(d_Cflat)); |
188 | HANDLE_ERROR(cudaFree(d_A)); | 189 | HANDLE_ERROR(cudaFree(d_A)); |
stim/math/matrix.h