SDDMM
Sampled dense dense matrix multiplication
\[out = (D_1 \cdot D_2)\odot S\]
In the above equation, \(\odot\) is a hadamard product. The sparse matrix is performed as a mask for computing dense matrix multiplication.
\[out[i][j]=(\Sigma_{k} D_1[i][k]\cdot D_2[j][k])\cdot S[i][j]\]
We provide SDDMM in both coo and csr format. Note that D2 is a transposed matrix.
COO
void sddmm_cuda_coo(
int k, //cols for D1
int nnz, //non zeros number for graph
int *rowind, //row indices of graph
int *colind, //col indices of graph
float *D1, //left hand Dense matrix
float *D2, //right hand Dense matrix
float *out);
CSR
void sddmm_cuda_csr(
int m, //m for S's rows
int k, //k for D1's rows
int nnz, //non zeros number for graph
int *rowptr, //row pointer in CSR format
int *colind, //col indices of graph
float *D1, //left hand Dense matrix
float *D2, //right hand Dense matrix
float *out);