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;

  }

}
Пример #2
0
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;

  }

}
Пример #3
0
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;

  }

}