Skip to content

Commit 1ef408a

Browse files
committed
more automation in alloc functions
1 parent 95c379c commit 1ef408a

4 files changed

Lines changed: 11 additions & 22 deletions

File tree

src/utils/CSC_Matrix.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,13 @@ CSR_Matrix *ATA_alloc(const CSC_Matrix *A, size_t *mem)
109109
}
110110

111111
/* Allocate C and symmetrize it */
112-
CSR_Matrix *C = new_csr_matrix(n, n, nnz, NULL);
112+
CSR_Matrix *C = new_csr_matrix(n, n, nnz, mem);
113113
symmetrize_csr(Cp, Ci->data, n, C);
114114

115115
/* free workspace */
116116
free(Cp);
117117
iVec_free(Ci);
118118

119-
if (mem) *mem += csr_memory_bytes(C);
120119
return C;
121120
}
122121

@@ -213,7 +212,7 @@ void ATDA_fill_values(const CSC_Matrix *A, const double *d, CSR_Matrix *C)
213212

214213
CSC_Matrix *csr_to_csc_alloc(const CSR_Matrix *A, int *iwork, size_t *mem)
215214
{
216-
CSC_Matrix *C = new_csc_matrix(A->m, A->n, A->nnz, NULL);
215+
CSC_Matrix *C = new_csc_matrix(A->m, A->n, A->nnz, mem);
217216

218217
int i, j;
219218
int *count = iwork;
@@ -252,7 +251,6 @@ CSC_Matrix *csr_to_csc_alloc(const CSR_Matrix *A, int *iwork, size_t *mem)
252251
}
253252
}
254253

255-
if (mem) *mem += csc_memory_bytes(C);
256254
return C;
257255
}
258256

@@ -277,7 +275,7 @@ void csr_to_csc_fill_values(const CSR_Matrix *A, CSC_Matrix *C, int *iwork)
277275

278276
CSR_Matrix *csc_to_csr_alloc(const CSC_Matrix *A, int *iwork, size_t *mem)
279277
{
280-
CSR_Matrix *C = new_csr_matrix(A->m, A->n, A->nnz, NULL);
278+
CSR_Matrix *C = new_csr_matrix(A->m, A->n, A->nnz, mem);
281279

282280
int i, j;
283281
int *count = iwork;
@@ -318,7 +316,6 @@ CSR_Matrix *csc_to_csr_alloc(const CSC_Matrix *A, int *iwork, size_t *mem)
318316
}
319317
}
320318

321-
if (mem) *mem += csr_memory_bytes(C);
322319
return C;
323320
}
324321

@@ -388,15 +385,14 @@ CSR_Matrix *BTA_alloc(const CSC_Matrix *A, const CSC_Matrix *B, size_t *mem)
388385
}
389386

390387
/* Allocate C */
391-
CSR_Matrix *C = new_csr_matrix(p, n, nnz, NULL);
388+
CSR_Matrix *C = new_csr_matrix(p, n, nnz, mem);
392389
memcpy(C->p, Cp, (p + 1) * sizeof(int));
393390
memcpy(C->i, Ci->data, nnz * sizeof(int));
394391

395392
/* free workspace */
396393
free(Cp);
397394
iVec_free(Ci);
398395

399-
if (mem) *mem += csr_memory_bytes(C);
400396
return C;
401397
}
402398

@@ -536,15 +532,14 @@ CSC_Matrix *symBA_alloc(const CSR_Matrix *B, const CSC_Matrix *A, size_t *mem)
536532

537533
/* allocate C and copy the computed structure */
538534
int total_nnz = Cp[n];
539-
CSC_Matrix *C = new_csc_matrix(m, n, total_nnz, NULL);
535+
CSC_Matrix *C = new_csc_matrix(m, n, total_nnz, mem);
540536
memcpy(C->p, Cp, (n + 1) * sizeof(int));
541537
memcpy(C->i, Ci->data, total_nnz * sizeof(int));
542538

543539
free(marker);
544540
free(Cp);
545541
iVec_free(Ci);
546542

547-
if (mem) *mem += csc_memory_bytes(C);
548543
return C;
549544
}
550545

src/utils/CSR_Matrix.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,18 @@ CSR_Matrix *new_csr_matrix(int m, int n, int nnz, size_t *mem)
3939

4040
CSR_Matrix *new_csr(const CSR_Matrix *A, size_t *mem)
4141
{
42-
CSR_Matrix *copy = new_csr_matrix(A->m, A->n, A->nnz, NULL);
42+
CSR_Matrix *copy = new_csr_matrix(A->m, A->n, A->nnz, mem);
4343
memcpy(copy->p, A->p, (A->m + 1) * sizeof(int));
4444
memcpy(copy->i, A->i, A->nnz * sizeof(int));
4545
memcpy(copy->x, A->x, A->nnz * sizeof(double));
46-
if (mem) *mem += csr_memory_bytes(copy);
4746
return copy;
4847
}
4948

5049
CSR_Matrix *new_csr_copy_sparsity(const CSR_Matrix *A, size_t *mem)
5150
{
52-
CSR_Matrix *copy = new_csr_matrix(A->m, A->n, A->nnz, NULL);
51+
CSR_Matrix *copy = new_csr_matrix(A->m, A->n, A->nnz, mem);
5352
memcpy(copy->p, A->p, (A->m + 1) * sizeof(int));
5453
memcpy(copy->i, A->i, A->nnz * sizeof(int));
55-
if (mem) *mem += csr_memory_bytes(copy);
5654
return copy;
5755
}
5856

@@ -190,7 +188,7 @@ CSR_Matrix *transpose(const CSR_Matrix *A, int *iwork)
190188
CSR_Matrix *AT_alloc(const CSR_Matrix *A, int *iwork, size_t *mem)
191189
{
192190
/* Allocate A^T and compute sparsity pattern without filling values */
193-
CSR_Matrix *AT = new_csr_matrix(A->n, A->m, A->nnz, NULL);
191+
CSR_Matrix *AT = new_csr_matrix(A->n, A->m, A->nnz, mem);
194192

195193
int i, j;
196194
int *count = iwork;
@@ -229,7 +227,6 @@ CSR_Matrix *AT_alloc(const CSR_Matrix *A, int *iwork, size_t *mem)
229227
}
230228
}
231229

232-
if (mem) *mem += csr_memory_bytes(AT);
233230
return AT;
234231
}
235232

src/utils/linalg_dense_sparse_matmuls.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ CSR_Matrix *YT_kron_I_alloc(int m, int k, int n, const CSC_Matrix *J, size_t *me
197197
// ---------------------------------------------------------------
198198
// replicate sparsity pattern across blocks
199199
// ---------------------------------------------------------------
200-
CSR_Matrix *C = new_csr_matrix(m * n, J->n, total_nnz, NULL);
200+
CSR_Matrix *C = new_csr_matrix(m * n, J->n, total_nnz, mem);
201201
int idx = 0;
202202
for (i = 0; i < m * n; i++)
203203
{
@@ -215,7 +215,6 @@ CSR_Matrix *YT_kron_I_alloc(int m, int k, int n, const CSC_Matrix *J, size_t *me
215215
iVec_free(pattern[blk_row]);
216216
}
217217
free(pattern);
218-
if (mem) *mem += csr_memory_bytes(C);
219218
return C;
220219
}
221220

@@ -287,7 +286,7 @@ CSR_Matrix *I_kron_X_alloc(int m, int k, int n, const CSC_Matrix *J, size_t *mem
287286

288287
/* Step 2: replicate each block's pattern for all m rows
289288
* within that block. */
290-
CSR_Matrix *C = new_csr_matrix(m * n, J->n, total_nnz, NULL);
289+
CSR_Matrix *C = new_csr_matrix(m * n, J->n, total_nnz, mem);
291290
int idx = 0;
292291
for (i = 0; i < m * n; i++)
293292
{
@@ -305,7 +304,6 @@ CSR_Matrix *I_kron_X_alloc(int m, int k, int n, const CSC_Matrix *J, size_t *mem
305304
iVec_free(pattern[blk]);
306305
}
307306
free(pattern);
308-
if (mem) *mem += csr_memory_bytes(C);
309307
return C;
310308
}
311309

src/utils/linalg_sparse_matmuls.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,12 @@ CSR_Matrix *csr_csc_matmul_alloc(const CSR_Matrix *A, const CSC_Matrix *B,
304304
Cp[i + 1] = nnz;
305305
}
306306

307-
CSR_Matrix *C = new_csr_matrix(m, p, nnz, NULL);
307+
CSR_Matrix *C = new_csr_matrix(m, p, nnz, mem);
308308
memcpy(C->p, Cp, (m + 1) * sizeof(int));
309309
memcpy(C->i, Ci->data, nnz * sizeof(int));
310310
free(Cp);
311311
iVec_free(Ci);
312312

313-
if (mem) *mem += csr_memory_bytes(C);
314313
return C;
315314
}
316315

0 commit comments

Comments
 (0)