Commit b5c530373dcf6288da2d3c07bc0117ca3afbf0e3
1 parent
91589064
fixed memory leak
Showing
1 changed file
with
16 additions
and
5 deletions
Show diff stats
stim/biomodels/flow.h
@@ -118,6 +118,22 @@ namespace stim { | @@ -118,6 +118,22 @@ namespace stim { | ||
118 | Q.resize(n_e); | 118 | Q.resize(n_e); |
119 | } | 119 | } |
120 | 120 | ||
121 | + void reset(unsigned n_v) { | ||
122 | + | ||
123 | + for (unsigned i = 0; i < n_v; i++) { | ||
124 | + for (unsigned j = 0; j < n_v; j++) { | ||
125 | + C[i][j] = 0; | ||
126 | + } | ||
127 | + } | ||
128 | + } | ||
129 | + | ||
130 | + void clear(unsigned n_v) { | ||
131 | + | ||
132 | + for (unsigned i = 0; i < n_v; i++) | ||
133 | + delete[] C[i]; | ||
134 | + delete[] C; | ||
135 | + } | ||
136 | + | ||
121 | /// Calculate the inverse of A and store the result in C | 137 | /// Calculate the inverse of A and store the result in C |
122 | void inversion(T** A, int order, T* C) { | 138 | void inversion(T** A, int order, T* C) { |
123 | 139 | ||
@@ -128,7 +144,6 @@ namespace stim { | @@ -128,7 +144,6 @@ namespace stim { | ||
128 | for (unsigned i = 0; i < order; i++) | 144 | for (unsigned i = 0; i < order; i++) |
129 | for (unsigned j = 0; j < order; j++) | 145 | for (unsigned j = 0; j < order; j++) |
130 | Aflat[i * order + j] = A[i][j]; | 146 | Aflat[i * order + j] = A[i][j]; |
131 | - //T* Cflat = C;// (T*)malloc(order * order * sizeof(T)); | ||
132 | 147 | ||
133 | // create device pointer | 148 | // create device pointer |
134 | T* d_Aflat; // flat original matrix | 149 | T* d_Aflat; // flat original matrix |
@@ -178,12 +193,8 @@ namespace stim { | @@ -178,12 +193,8 @@ namespace stim { | ||
178 | // copy inverse matrix from device to host | 193 | // copy inverse matrix from device to host |
179 | HANDLE_ERROR(cudaMemcpy(C, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); | 194 | HANDLE_ERROR(cudaMemcpy(C, d_Cflat, order * order * sizeof(T), cudaMemcpyDeviceToHost)); |
180 | 195 | ||
181 | - //for(unsigned i = 0; i < order; i++) | ||
182 | - // memcpy(C[i], &Cflat[i*order], order * sizeof(T*)); | ||
183 | - | ||
184 | // clear up | 196 | // clear up |
185 | free(Aflat); | 197 | free(Aflat); |
186 | - //free(Cflat); | ||
187 | HANDLE_ERROR(cudaFree(d_Aflat)); | 198 | HANDLE_ERROR(cudaFree(d_Aflat)); |
188 | HANDLE_ERROR(cudaFree(d_Cflat)); | 199 | HANDLE_ERROR(cudaFree(d_Cflat)); |
189 | HANDLE_ERROR(cudaFree(d_A)); | 200 | HANDLE_ERROR(cudaFree(d_A)); |