Skip to content

Kronecker mask#1

Open
ilyamaltsev05 wants to merge 4 commits intoSparseLinearAlgebra:kroneker-maskfrom
ilyamaltsev05:kronecker-mask
Open

Kronecker mask#1
ilyamaltsev05 wants to merge 4 commits intoSparseLinearAlgebra:kroneker-maskfrom
ilyamaltsev05:kronecker-mask

Conversation

@ilyamaltsev05
Copy link

@ilyamaltsev05 ilyamaltsev05 commented Feb 28, 2026

Implementation of non-complemented mask support in Kronecker product, moved it to GB_kron since transposed A and B input matrices are not needed and bitmap A and B are okay.

MT is built as sparse matrix in same CSR/CSC format as mask matrix M. First iteration over mask counts number of values in each vector of MT, then pointers array MTp is passed to GB_cumsum to get prefix sum in MTp. Second iteration over mask is needed to initialize MTi array of coordinates and actual values in MTx. Later MT is transposed and converted to hypersparse if necessary and passed to GB_accum_mask to transplant its result into C.

Two tests (test226 and test227) are modified to check implementation and pass (with malloc debugging turned off as in testall)

UPD: removed mask from final GB_accum_mask call

@ilyamaltsev05 ilyamaltsev05 force-pushed the kronecker-mask branch 7 times, most recently from 28eacc7 to 2ecc008 Compare March 6, 2026 03:48
@gsvgit gsvgit requested a review from vkutuev March 6, 2026 05:56
@ilyamaltsev05 ilyamaltsev05 changed the base branch from stable to kroneker-mask March 16, 2026 05:57
@ilyamaltsev05
Copy link
Author

ilyamaltsev05 commented Mar 16, 2026

Замеры потребления памяти реализацией Кронекера с маской (WIP)

Рассмотрены два вида входов:

  • Произведение Кронекера матриц, подобных тем, что
    встречаются в masked mxm PageRank_demo - матрица m-на-1 на матрицу
    1-на-n из единиц со случайной маской подходящего размера.
  • Произведение Кронекера некоторых матриц из SuiteSparse Matrix Collection с построенными с помощью LAGraph_Random_Matrix масками.

Замеры сделаны с помощью heaptrack.

1) Вычисление, эквивалентное mxm в PageRank_demo.

Сравнение существующей реализации с применением маски после с новой на примере вычисления произведения Кронекера матрицы m-на-1 и матрицы из единиц 1-на-n. Матрица m-на-1 и маска построены с помощью LAGraph_Random_Matrix. Плотность маски 0,01, матрицы - от 0.3 до 0.08 (для больших m).

Peak memory consumption некоторых входов

input\implementation default masked masked mxm
10x10 2,0 MB 2,0 MB -
50x50 2,0 MB 2,0 MB -
100x100 2,0 MB 2,0 MB -
500x500 2,2 MB 2,2 MB -
1000x500 2,5 MB 2,5 MB -
1000x1000 2,3 MB 2,2 MB -
5000x5000 10,1 MB 8,9 MB 8,9 MB
7500x7500 15,9 MB 4,2 MB 4,2 MB
10000x10000 20,5 MB 5,0 MB 5,0 MB
15000x15000 58,2 MB 11,0 MB 11,0 MB
20000x20000 422,9 MB 193,2 MB 193,2 MB
21000x22000 488,1 MB 222,8 MB 222,8 MB
50000x10000 530,8 MB 241,2 MB 241,2 MB

2) Вычисление на некоторых матрицах из SuiteSparse Matrix Collection

Peak memory consumption входов

input\implementation default masked
lap_25 (97 nnz), divorce (225 nnz), mask (density=0.1) 3,1 MB 3,1 MB
lap_25 (97 nnz), divorce (225 nnz), mask (density=0.3) 5,3 MB 5,3 MB
bcsstm08 (1074 nnz), rdb200 (1120 nnz) 21,3 MB 4,8 MB
netscience (2742 nnz), small (3207 nnz) 263,3 MB 116,9 MB

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