3.1.3.2. CPUs in node

template<class T>
class chase::mpi::ChaseMpiDLABlaslapack : public chase::mpi::ChaseMpiDLAInterface<T>

A derived class of ChaseMpiDLAInterface which implements the inter-node computation for a pure-CPU MPI-based implementation of ChASE.

Public Functions

ChaseMpiDLABlaslapack(ChaseMpiProperties<T> *matrix_properties, ChaseMpiMatrices<T> &matrices)

A constructor of ChaseMpiDLABlaslapack.

Parameters
  • matrix_properties: it is an object of ChaseMpiProperties, which defines the MPI environment and data distribution scheme in ChASE-MPI.

  • matrices: it is an instance of ChaseMpiMatrices, which allocates the required buffers in ChASE-MPI.

void preApplication(T *V, std::size_t locked, std::size_t block) override

This function set initially the operation for apply() in filter.

void apply(T alpha, T beta, std::size_t offset, std::size_t block, std::size_t locked) override

  • This function performs the local computation of GEMM for ChaseMpiDLA::apply()

  • It is implemented based on BLAS’s xgemm.

bool postApplication(T *V, std::size_t block, std::size_t locked) override

void shiftMatrix(T c, bool isunshift = false) override

This function performs the shift of diagonal of a global matrix

  • This global is already distributed, so the shifting operation takes place on the local block of global matrix on each MPI proc.

  • This function is naturally in parallel among all MPI procs.

void applyVec(T *B, T *C) override

  • All required operations for this function has been done in for ChaseMpiDLA::applyVec().

  • This function contains nothing in this class.

void axpy(std::size_t N, T *alpha, T *x, std::size_t incx, T *y, std::size_t incy) override

It is an interface to BLAS ?axpy.

void scal(std::size_t N, T *a, T *x, std::size_t incx) override

It is an interface to BLAS ?scal.

Base<T> nrm2(std::size_t n, T *x, std::size_t incx) override

It is an interface to BLAS ?nrm2.

T dot(std::size_t n, T *x, std::size_t incx, T *y, std::size_t incy) override

It is an interface to BLAS ?dot.