void MICAcceleratorMatrixCOO<ValueType>::AllocateCOO(const int nnz, const int nrow, const int ncol) { assert(nnz >= 0); assert(ncol >= 0); assert(nrow >= 0); if (this->get_nnz() > 0) this->Clear(); if (nnz > 0) { allocate_mic(this->local_backend_.MIC_dev, nnz, &this->mat_.row); allocate_mic(this->local_backend_.MIC_dev, nnz, &this->mat_.col); allocate_mic(this->local_backend_.MIC_dev, nnz, &this->mat_.val); set_to_zero_mic(this->local_backend_.MIC_dev, nnz, this->mat_.row); set_to_zero_mic(this->local_backend_.MIC_dev, nnz, this->mat_.col); set_to_zero_mic(this->local_backend_.MIC_dev, nnz, this->mat_.val); this->nrow_ = nrow; this->ncol_ = ncol; this->nnz_ = nnz; } }
void MICAcceleratorMatrixDIA<ValueType>::AllocateDIA(const int nnz, const int nrow, const int ncol, const int ndiag) { assert(nnz >= 0); assert(ncol >= 0); assert(nrow >= 0); if (this->get_nnz() > 0) this->Clear(); if (nnz > 0) { assert(ndiag > 0); allocate_mic(nnz, &this->mat_.val); allocate_mic(ndiag, &this->mat_.offset); set_to_zero_mic(nnz, mat_.val); set_to_zero_mic(ndiag, mat_.offset); this->nrow_ = nrow; this->ncol_ = ncol; this->nnz_ = nnz; this->mat_.num_diag = ndiag; } }
void MICAcceleratorMatrixHYB<ValueType>::AllocateHYB(const int ell_nnz, const int coo_nnz, const int ell_max_row, const int nrow, const int ncol) { assert( ell_nnz >= 0); assert( coo_nnz >= 0); assert( ell_max_row >= 0); assert( ncol >= 0); assert( nrow >= 0); if (this->get_nnz() > 0) this->Clear(); if (ell_nnz + coo_nnz > 0) { // ELL assert(ell_nnz == ell_max_row*nrow); allocate_mic(this->local_backend_.MIC_dev, ell_nnz, &this->mat_.ELL.val); allocate_mic(this->local_backend_.MIC_dev, ell_nnz, &this->mat_.ELL.col); set_to_zero_mic(this->local_backend_.MIC_dev, ell_nnz, this->mat_.ELL.val); set_to_zero_mic(this->local_backend_.MIC_dev, ell_nnz, this->mat_.ELL.col); this->mat_.ELL.max_row = ell_max_row; this->ell_nnz_ = ell_nnz; // COO allocate_mic(this->local_backend_.MIC_dev, coo_nnz, &this->mat_.COO.row); allocate_mic(this->local_backend_.MIC_dev, coo_nnz, &this->mat_.COO.col); allocate_mic(this->local_backend_.MIC_dev, coo_nnz, &this->mat_.COO.val); set_to_zero_mic(this->local_backend_.MIC_dev, coo_nnz, this->mat_.COO.row); set_to_zero_mic(this->local_backend_.MIC_dev, coo_nnz, this->mat_.COO.col); set_to_zero_mic(this->local_backend_.MIC_dev, coo_nnz, this->mat_.COO.val); this->coo_nnz_ = coo_nnz; this->nrow_ = nrow; this->ncol_ = ncol; this->nnz_ = ell_nnz + coo_nnz; } }