22#ifndef elpaScalapackOperations_h
23#define elpaScalapackOperations_h
28#include <unordered_map>
34 namespace linearAlgebra
36 namespace elpaScalaOpInternal
50 const std::shared_ptr<const ProcessGrid> &processGrid,
55 const bool useELPADeviceKernel =
false);
65 std::shared_ptr<const ProcessGrid> &processGrid,
68 const bool useOnlyThumbRule =
false);
79 std::shared_ptr<const ProcessGrid> &processGrid);
88 const std::shared_ptr<const ProcessGrid> &processGrid,
89 const ScaLAPACKMatrix<T> & mat,
90 std::unordered_map<size_type, size_type> &globalToLocalRowIdMap,
91 std::unordered_map<size_type, size_type> &globalToLocalColumnIdMap);
103 ScaLAPACKMatrix<T> &mat,
115 template <
typename T>
124 const std::shared_ptr<const ProcessGrid> &processGrid,
127 ScaLAPACKMatrix<T> & overlapMatPar);
138 template <
typename ValueType,
typename utils::MemorySpace memorySpace>
146 const std::shared_ptr<const ProcessGrid> &processGrid,
148 LinAlgOpContext<memorySpace> & linAlgOpContext,
149 const ScaLAPACKMatrix<ValueType> & rotationMatPar,
150 const size_type subspaceRotDofsBlockSize,
152 const bool rotationMatTranspose =
false,
153 const bool isRotationMatLowerTria =
false);
void scaleScaLAPACKMat(const std::shared_ptr< const ProcessGrid > &processGrid, ScaLAPACKMatrix< T > &mat, const T scalar)
scale a ScaLAPACKMat with a scalar
Definition: ElpaScalapackOperations.t.cpp:56
void createProcessGridSquareMatrix(const utils::mpi::MPIComm &mpi_communicator, const size_type size, std::shared_ptr< const ProcessGrid > &processGrid, const size_type scalapackParalProcs, const bool useELPA, const bool useOnlyThumbRule)
Wrapper function to create a two dimensional processor grid for a square matrix in ScaLAPACKMatrix st...
Definition: ElpaScalapackOperations.cpp:243
void createGlobalToLocalIdMapsScaLAPACKMat(const std::shared_ptr< const ProcessGrid > &processGrid, const ScaLAPACKMatrix< T > &mat, std::unordered_map< size_type, size_type > &globalToLocalRowIdMap, std::unordered_map< size_type, size_type > &globalToLocalColumnIdMap)
Creates global row/column id to local row/column ids for ScaLAPACKMatrix.
Definition: ElpaScalapackOperations.t.cpp:36
void fillParallelOverlapMatrix(const T *X, const size_type XLocalSize, const size_type numberVectors, const std::shared_ptr< const ProcessGrid > &processGrid, const utils::mpi::MPIComm &mpiComm, const size_type wfcBlockSize, ScaLAPACKMatrix< T > &overlapMatPar)
Computes Sc=X^{T}*Xc and stores in a parallel ScaLAPACK matrix. X^{T} is the subspaceVectorsArray sto...
Definition: ElpaScalapackOperations.t.cpp:70
void subspaceRotation(ValueType *X, const size_type M, const size_type N, const std::shared_ptr< const ProcessGrid > &processGrid, const utils::mpi::MPIComm &mpiCommDomain, LinAlgOpContext< memorySpace > &linAlgOpContext, const ScaLAPACKMatrix< ValueType > &rotationMatPar, const size_type subspaceRotDofsBlockSize, const size_type wfcBlockSize, const bool rotationMatTranspose=false, const bool isRotationMatLowerTria=false)
Computes X^{T}=Q*X^{T} inplace. X^{T} is the subspaceVectorsArray stored in the column major format (...
Definition: ElpaScalapackOperations.t.cpp:187
void setupELPAHandleParameters(const utils::mpi::MPIComm &mpi_communicator, utils::mpi::MPIComm &processGridCommunicatorActive, const std::shared_ptr< const ProcessGrid > &processGrid, const size_type na, const size_type nev, const size_type blockSize, elpa_t &elpaHandle, const bool useELPADeviceKernel)
Contains internal functions used in linearAlgebra.
Definition: ElpaScalapackOperations.cpp:35
void createProcessGridRectangularMatrix(const utils::mpi::MPIComm &mpi_communicator, const size_type sizeRows, const size_type sizeColumns, std::shared_ptr< const ProcessGrid > &processGrid)
Wrapper function to create a two dimensional processor grid for a rectangular matrix in ScaLAPACKMatr...
Definition: ElpaScalapackOperations.cpp:284
int MPIComm
Definition: MPITypes.h:84
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8