Skip to content

About Efficiency Sparse Dense Multiplication #550

Open
@khoinpd0411

Description

@khoinpd0411

Hi, thank you so much for a great project. May I ask a small question related to sparse and dense matrix operation? The case is that I want to conduct a multiplication between sparse and dense matrix. In detail, the sparsity of the 2 project is given as below:

X shape: (200000, 50000) 
C shape: (50000, 100)
#nnz X: 99500704
#nnz C: 3160328
Sparsity of X:  0.0099500704
Sparsity of C:  0.6320656

Where X is a sparse matrix and C is a dense one. In theory, C should be stored in dense format in order to make the operation to be efficient instead of sparse one. However, using bitmap/dense matrix provided by GraphBLAS is not as efficient as compared to MKL code for sparse * dense operation

##################### python-graphblas (Default Setting - 32 Threads - CSR Format * BitmapC Format) #####################
Convert Scipy Sparse Format -> python-graphblas Format (s) 0.6137485504150391
Sparse * Sparse computing time (s) 2.929335117340088
Sparse * Sparse computing time (s) 2.9536073207855225
Sparse * Sparse computing time (s) 2.9327011108398438
Sparse * Sparse computing time (s) 2.946722984313965
Sparse * Sparse computing time (s) 2.942711114883423
Sparse * Sparse computing time (s) 2.959540843963623
Sparse * Sparse computing time (s) 2.9557604789733887
Sparse * Sparse computing time (s) 2.946617364883423
Sparse * Sparse computing time (s) 2.9554543495178223
Sparse * Sparse computing time (s) 2.9580225944519043
Sparse * Sparse computing time (s) 2.9371848106384277
Sparse * Sparse computing time (s) 2.9504570960998535
Sparse * Sparse computing time (s) 2.956547498703003
Sparse * Sparse computing time (s) 2.9532806873321533
Sparse * Sparse computing time (s) 2.947199821472168
Sparse * Sparse computing time (s) 2.952831745147705
Sparse * Sparse computing time (s) 2.950216293334961
Sparse * Sparse computing time (s) 2.950721025466919
Sparse * Sparse computing time (s) 2.958610773086548
Sparse * Sparse computing time (s) 2.952730894088745
Mean Runtime:  2.9495126962661744
Std Runtime:  0.008198427827772714

##################### python-graphblas (Default Setting - 32 Threads - CSR Format * FullC Format) #####################
Convert Scipy Sparse Format -> python-graphblas Format (s) 0.5988132953643799
Sparse * Sparse computing time (s) 1.73736572265625
Sparse * Sparse computing time (s) 1.744694709777832
Sparse * Sparse computing time (s) 1.7468664646148682
Sparse * Sparse computing time (s) 1.7360756397247314
Sparse * Sparse computing time (s) 1.7450006008148193
Sparse * Sparse computing time (s) 1.7598528861999512
Sparse * Sparse computing time (s) 1.7438948154449463
Sparse * Sparse computing time (s) 1.7407243251800537
Sparse * Sparse computing time (s) 1.7503554821014404
Sparse * Sparse computing time (s) 1.740696907043457
Sparse * Sparse computing time (s) 1.757706642150879
Sparse * Sparse computing time (s) 1.7401001453399658
Sparse * Sparse computing time (s) 1.7460541725158691
Sparse * Sparse computing time (s) 1.7468533515930176
Sparse * Sparse computing time (s) 1.751969337463379
Sparse * Sparse computing time (s) 1.7436254024505615
Sparse * Sparse computing time (s) 1.7455754280090332
Sparse * Sparse computing time (s) 1.7475886344909668
Sparse * Sparse computing time (s) 1.7609961032867432
Sparse * Sparse computing time (s) 1.7456836700439453
Mean Runtime:  1.7465840220451354
Std Runtime:  0.006642586857441714
##################### MKL (Default Settings - 16 Threads - Sparse CSR Format * Dense Numpy Format) #####################
Sparse * Sparse computing time (s) 0.6445832252502441
Sparse * Sparse computing time (s) 0.6223111152648926
Sparse * Sparse computing time (s) 0.6190366744995117
Sparse * Sparse computing time (s) 0.6191632747650146
Sparse * Sparse computing time (s) 0.617084264755249
Sparse * Sparse computing time (s) 0.6194536685943604
Sparse * Sparse computing time (s) 0.6174299716949463
Sparse * Sparse computing time (s) 0.6181790828704834
Sparse * Sparse computing time (s) 0.6196620464324951
Sparse * Sparse computing time (s) 0.6216928958892822
Sparse * Sparse computing time (s) 0.6174044609069824
Sparse * Sparse computing time (s) 0.6212775707244873
Sparse * Sparse computing time (s) 0.6180646419525146
Sparse * Sparse computing time (s) 0.6177294254302979
Sparse * Sparse computing time (s) 0.6187028884887695
Sparse * Sparse computing time (s) 0.6197123527526855
Sparse * Sparse computing time (s) 0.6219933032989502
Sparse * Sparse computing time (s) 0.6392252445220947
Sparse * Sparse computing time (s) 0.6407394409179688
Sparse * Sparse computing time (s) 0.6248526573181152

Mean Runtime:  0.6229149103164673
Std Runtime:  0.008091237575214866

Could you please kindly suggest any format from GraphBLAS to solve this problem? Thank you so much in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions