22#ifndef dftfeMPICommunicatorP2P_h
23#define dftfeMPICommunicatorP2P_h
31#ifdef DFTFE_WITH_DEVICE
33# if defined(DFTFE_WITH_CUDA_NCCL)
35# elif defined(DFTFE_WITH_HIP_RCCL)
61 template <
typename ValueType, MemorySpace memorySpace>
71 const size_type communicationChannel = 0);
76 const size_type communicationChannel = 0);
81 const size_type communicationChannel = 0);
89 const size_type communicationChannel = 0);
102 const size_type communicationChannel = 0);
107 const size_type communicationChannel = 0);
113 std::shared_ptr<const MPIPatternP2P<memorySpace>>
151#ifdef DFTFE_WITH_DEVICE
152 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
153 d_ghostDataCopyHostPinnedPtr;
155 std::shared_ptr<MemoryStorage<ValueType, MemorySpace::HOST_PINNED>>
156 d_sendRecvBufferHostPinnedPtr;
161 d_ghostDataCopySinglePrecHostPinnedPtr;
166 d_sendRecvBufferSinglePrecHostPinnedPtr;
173#ifdef DFTFE_WITH_DEVICE
Definition MemoryStorage.h:33
void accumulateInsertLocallyOwnedBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
MemoryStorage< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > d_ghostDataCopySinglePrec
Definition MPICommunicatorP2P.h:149
std::shared_ptr< const MPIPatternP2P< memorySpace > > getMPIPatternP2P() const
size_type d_ghostSize
Definition MPICommunicatorP2P.h:129
void accumulateAddLocallyOwnedEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
MemoryStorage< ValueType, memorySpace > d_sendRecvBuffer
Definition MPICommunicatorP2P.h:131
void setCommunicationPrecision(communicationPrecision precision)
std::vector< MPI_Request > d_requestsAccumulateAddLocallyOwned
Definition MPICommunicatorP2P.h:170
MemoryStorage< double, memorySpace > d_tempDoubleImagArrayForAtomics
Definition MPICommunicatorP2P.h:135
void accumulateInsertLocallyOwned(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
MPI_Comm d_mpiCommunicator
Definition MPICommunicatorP2P.h:172
MemoryStorage< float, memorySpace > d_tempFloatRealArrayForAtomics
Definition MPICommunicatorP2P.h:137
std::shared_ptr< const MPIPatternP2P< memorySpace > > d_mpiPatternP2P
Definition MPICommunicatorP2P.h:123
std::vector< MPI_Request > d_requestsUpdateGhostValues
Definition MPICommunicatorP2P.h:169
void updateGhostValuesBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
MemoryStorage< typename dftfe::dataTypes::singlePrecType< ValueType >::type, memorySpace > d_sendRecvBufferSinglePrec
Definition MPICommunicatorP2P.h:144
MemoryStorage< double, memorySpace > d_tempDoubleRealArrayForAtomics
Definition MPICommunicatorP2P.h:133
size_type d_locallyOwnedSize
Definition MPICommunicatorP2P.h:127
communicationProtocol d_commProtocol
Definition MPICommunicatorP2P.h:176
std::vector< MPI_Request > d_requestsAccumulateInsertLocallyOwned
Definition MPICommunicatorP2P.h:171
void accumulateInsertLocallyOwnedEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
size_type d_blockSize
Definition MPICommunicatorP2P.h:125
MemoryStorage< float, memorySpace > d_tempFloatImagArrayForAtomics
Definition MPICommunicatorP2P.h:139
void updateGhostValuesEnd(MemoryStorage< ValueType, memorySpace > &dataArray)
MPICommunicatorP2P(std::shared_ptr< const MPIPatternP2P< memorySpace > > mpiPatternP2P, const size_type blockSize)
void accumulateAddLocallyOwned(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
communicationPrecision d_commPrecision
Definition MPICommunicatorP2P.h:177
void accumulateAddLocallyOwnedBegin(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
void updateGhostValues(MemoryStorage< ValueType, memorySpace > &dataArray, const size_type communicationChannel=0)
A class template to store the communication pattern (i.e., which entries/nodes to receive from which ...
Definition MPIPatternP2P.h:57
Definition MPICommunicatorP2P.h:46
communicationPrecision
Definition MPICommunicatorP2P.h:55
@ single
Definition MPICommunicatorP2P.h:56
@ full
Definition MPICommunicatorP2P.h:57
communicationProtocol
Definition MPICommunicatorP2P.h:48
@ nccl
Definition MPICommunicatorP2P.h:51
@ mpiDevice
Definition MPICommunicatorP2P.h:50
@ mpiHost
Definition MPICommunicatorP2P.h:49
cudaStream_t deviceStream_t
Definition DeviceTypeConfig.cu.h:27
@ HOST_PINNED
Definition MemorySpaceType.h:35
Definition pseudoPotentialToDftfeConverter.cc:34
unsigned int size_type
Definition TypeConfig.h:6
T type
Definition dftfeDataTypes.h:115