| 147 | } |
| 148 | |
| 149 | void dns_csr_mul(int m, int n, int k, const SyncArray<kernel_type> &dense_mat, const SyncArray<kernel_type> &csr_val, |
| 150 | const SyncArray<int> &csr_row_ptr, const SyncArray<int> &csr_col_ind, int nnz, |
| 151 | SyncArray<kernel_type> &result) { |
| 152 | Eigen::Map<const Eigen::Matrix<kernel_type, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor>> denseMat(dense_mat.host_data(), k, n); |
| 153 | Eigen::Map<const Eigen::SparseMatrix<kernel_type, Eigen::RowMajor>> sparseMat(m, k, nnz, csr_row_ptr.host_data(), |
| 154 | csr_col_ind.host_data(), |
| 155 | csr_val.host_data()); |
| 156 | Eigen::Matrix<kernel_type, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> retMat = sparseMat * denseMat; |
| 157 | Eigen::Map<Eigen::Matrix<kernel_type, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor> >(result.host_data(), |
| 158 | retMat.rows(), |
| 159 | retMat.cols()) = retMat; |
| 160 | } |
| 161 | |
| 162 | void csr_csr_mul(int m, int n, int k, const SyncArray<kernel_type> &ws_val, const SyncArray<int> &ws_col_ind, |
| 163 | const SyncArray<int> &ws_row_ptr, const SyncArray<kernel_type> &csr_val, |
no test coverage detected