| 458 | |
| 459 | template<class Ty> |
| 460 | void FastTransfer2SparseQMat(vector<pair<int, Ty>>* sparse_data, int size, SparseQMatrix<Ty>& M) { |
| 461 | |
| 462 | int nnz_num = 0; |
| 463 | M.SetRowNum(size); |
| 464 | M.nnzcol_ptr[0] = 0; |
| 465 | for (int i = 0; i < size; i++) { |
| 466 | nnz_num += sparse_data[i].size(); |
| 467 | M.nnzcol_ptr[i + 1] = nnz_num; |
| 468 | } |
| 469 | auto nnz = nnz_num; |
| 470 | M.SetNNZ(nnz); |
| 471 | #pragma omp parallel for |
| 472 | for (int i = 0; i < size; i++) { |
| 473 | for (int j = 0; j < sparse_data[i].size(); j++) { |
| 474 | M.data[M.nnzcol_ptr[i] + j] = sparse_data[i][j].second; |
| 475 | M.nnzcol_ind[M.nnzcol_ptr[i] + j] = sparse_data[i][j].first; |
| 476 | } |
| 477 | } |
| 478 | } |
| 479 | |
| 480 | template<class Ty> |
| 481 | void FastTransfer2SparseQMat(vector<vector<pair<Ty, size_t>>>& sparse_data, SparseQMatrix<Ty>& M) { |
no test coverage detected