3.1.3.2. CPUs in node¶
-
template<class
T
>
classchase::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
’sxgemm
.
-
bool
postApplication
(T *V, std::size_t block, std::size_t locked) override¶ All required operations for this function has been done in for ChaseMpiDLA::postApplication().
This function contains nothing in this class.
-
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.
-