CSeg (Column-Segmented Sparse Matrix-Matrix Multiplication on Multicore CPUs) is a OpenMP based SpGEMM, Sparse Matrix-Matrix Multiplication, implementation.
💻 Source Code: [http://github.com/GT-TDAlab/CSeg]
CSeg is developed by the members of GT-TDAlab.
CSeg is distributed under BSD License. For details, see LICENSE.
The PIGO library is included as an external program. See PIGO LICENSE for details.
For questions or supports open an issue or contact contributors via [email protected].
Citation for the CSeg (BibTeX):
@inproceedings{An21-HiPC,
title = {Column-Segmented Sparse Matrix-Matrix Multiplication},
author = {Xiaojing An and \"Umit V. \c{C}ataly\"{u}rek},
year = {2021},
month = {Dec},
booktitle = {HiPC21: 28th IEEE International Conference on High Performance Computing, Data, & Analytics},
keywords = {SpGEMM}
}- icpc version 2021.2.0 (gcc version 9.2.0 compatibility)
- gcc version 9.2.0 (GCC)
Run make from current folder:
make
You can use main executable to run CSeg from command line.
We are using PIGO for parallel input, and currently support mtx inputs only.
Use main -h to see all options. An usage example, multiplying the matrices in ./exampleData
./main -A ./exampleData/gre_185_left.mtx -B ./exampleData/gre_185_right.mtx -t -w 1 -e 2
-> Loading inputs.
-> Matrix A at ./exampleData/gre_185_left.mtx statistics
Num of rows : 186
Num of cols : 201
Num of non-zeros : 1005
Max degree : 7
-> Matrix B at ./exampleData/gre_185_right.mtx statistics
Num of rows : 201
Num of cols : 211
Num of non-zeros : 1005
Max degree : 7
-> Warmup runs of SpGEMM
Statistics for SpGEMM :
Number of bits in Bh : 8
Number of bits in Bl : 0
Compression Ratio is : 0.483582, and compression is applied.
S has non-zeros : 1005, direct merging on dense array will be applied
Construct S and get upperbound (secs) : 0.014287
max_widthComp : 26
max_widthH : 47
max_width : 47
max_collisionsH : 40
max_degA : 7
flops : 5609
MallocPtr (secs) : 0.000001
Symbolic (secs) : 0.006328
MallocColIndices (secs) : 0.000008
Numeric (secs) : 0.006927
Total runtime (warmup) (secs) : 0.027652
-> Perf runs of SpGEMM
Construct S and get upperbound (secs) : 0.012966
MallocPtr (secs) : 0.000000
Symbolic (secs) : 0.010833
MallocColIndices (secs) : 0.000000
Numeric (secs) : 0.008451
Total runtime (secs) : 0.032293
Construct S and get upperbound (secs) : 0.010876
MallocPtr (secs) : 0.000000
Symbolic (secs) : 0.011075
MallocColIndices (secs) : 0.000001
Numeric (secs) : 0.006498
Total runtime (secs) : 0.028485
-> Matrix C statistics
Num of rows : 186
Num of cols : 211
Num of non-zeros : 3093
Max degree : 24