Skip to content

Add support for aggregation in the creation of sparse matrices - #5527

Open
benharsh wants to merge 9 commits into
Bears-R-Us:mainfrom
benharsh:agg_sparse_matrix_creation
Open

Add support for aggregation in the creation of sparse matrices#5527
benharsh wants to merge 9 commits into
Bears-R-Us:mainfrom
benharsh:agg_sparse_matrix_creation

Conversation

@benharsh

@benharsh benharsh commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

This PR adds the ability to use an aggregator when creating a sparse matrix. This CustomCopyAggregation works similarly to other aggregators, and accepts a 3-tuple of the indices and corresponding value. These 3-tuples are then flushed by utilizing the pre-existing SparseIndexBuffer, which adds indices in bulk. This work is almost entirely from the initial effort of @alvaradoo , with only a few minor performance tweaks and a bug fix by myself. This PR requires chapel-lang/chapel#29307 to compile correctly.

A new config param, aggregatedSparseMatrixCreation, has been added to toggle this functionality.

This PR also adds a to_scipy_sparse method to sparse matrices, to help support correctness tests.

A new benchmark for sparse matrix performance is also added to measure both multiplication time and matrix-creation time.

Other notes:

  • fixes a minor bug in the message creation for to_pdarrays

alvaradoo and others added 9 commits August 19, 2026 17:03
Signed-off-by: Oliver Alvarado Rodriguez <oliver.alvarado-rodriguez@hpe.com>
Signed-off-by: Oliver Alvarado Rodriguez <oliver.alvarado-rodriguez@hpe.com>
Signed-off-by: Oliver Alvarado Rodriguez <oliver.alvarado-rodriguez@hpe.com>
Also, no need to use += when the summation already occurred.

Fixes a bug with the custom copy aggregation code where we need to be
locking the domain while we're inserting values. Otherwise, 'find' will
return bogus indices to insert the data.

Finally, perform some cleanup of the original effort.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants