MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
mpiexchange.h File Reference

Go to the source code of this file.

Namespaces

namespace  maia
 Namespace for auxiliary functions/classes.
 
namespace  maia::mpi
 

Functions

template<typename U >
void maia::mpi::exchangeBuffer (const MInt noExDomains, const MInt *const exDomainId, const MInt *const recvSize, const MInt *const sendSize, const MPI_Comm comm, U *const receiveBuffer, const U *const sendBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
MInt maia::mpi::exchangeBufferAllToAll (const MInt sendSize, const MPI_Comm comm, U *const receiveBuffer, const U *const sendBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, const std::vector< std::vector< MInt > > &noValuesToRecv, const std::vector< std::vector< MInt > > &noValuesToSend, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, std::vector< MInt > &noValuesToRecv, std::vector< MInt > &noValuesToSend, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, const MInt *const noValuesToSend, const MInt *const noValuesToRecv, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeBuffer (const std::vector< MInt > &exDomains, std::vector< MInt > &noValues, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeValues (const std::vector< MInt > &exDomains, MInt noValues, const MPI_Comm comm, const U *const sendBuffer, U *const receiveBuffer, const MInt noDat=1)
 Generic exchange of data (std::vector version) More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const, const MInt *const noWindowCells, const MInt **const windowCells, const MPI_Comm comm, const U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const MInt *const noHaloCells, MInt **const haloCells, MInt *const noWindowCells, MInt **const windowCells, const MPI_Comm comm, const U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const haloCells, const MInt *const noWindowCells, const MInt **const windowCells, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const MInt *const noHaloCells, MInt **const haloCells, MInt *const noWindowCells, MInt **const windowCells, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const MInt *const noHaloCells, const MInt **const haloCells, const MInt *const noWindowCells, const MInt **const, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange of data NOTE: version called in exchangeData from the solvers! More...
 
template<std::size_t N>
void maia::mpi::exchangeBitset (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, std::bitset< N > *const data, const MInt noCells, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeData (const std::vector< MInt > &nghbrDomains, std::vector< std::vector< MInt > > &haloCellVec, std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, U *const haloBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const MInt noNghbrDomains, const MInt *const nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::reverseExchangeData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, const U *const data, U *const windowBuffer, const MInt noDat=1)
 Generic reverse exchange of data. More...
 
template<typename U >
void maia::mpi::exchangeScattered (const std::vector< MInt > &nghbrDomains, std::vector< MInt > &sendDomainIndices, std::vector< U > &sendData, const MPI_Comm comm, std::vector< MInt > &recvOffsets, std::vector< U > &recvBuffer, const MInt noDat=1)
 Generic exchange of data. More...
 
MUint maia::mpi::getBufferSize (const std::vector< std::vector< MInt > > &exchangeCells)
 Generic exchange of data. More...
 
template<class dataType >
void maia::mpi::exchangeData (const dataType *const sendBuffer, const MInt domainId, const MInt noDomains, const MPI_Comm mpiComm, const MInt dataBlockSize, const MInt *const dataSizeSend, const MInt *const dataSizeRecv, dataType *const recvBuffer)
 Communicate variable amounts of data from each domain to all other domains. Data may also reside on the same domain. More...
 
template<class dataType >
void maia::mpi::exchangeData (const dataType *const sendBuffer, const MInt domainId, const MInt noNghbrDomains, const MInt *const nghbrDomainIds, const MPI_Comm mpiComm, const MInt dataBlockSize, const MInt *const dataSizeSend, const MInt *const dataSizeRecv, dataType *const recvBuffer)
 Communicate variable amounts of data from each domain to all neighboring domains. More...
 
template<typename DataType >
void maia::mpi::assembleDataBuffer (const MInt noCells, const MInt dataBlockSize, const DataType *const data, const MInt *const sortedId, DataType *const buffer)
 Assemble data buffer according to given sorting order. More...
 
template<typename DataType >
void maia::mpi::communicateData (const DataType *const data, const MInt noCells, const MInt *const sortedCellId, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MInt *const noCellsToSendByDomain, const MInt *const noCellsToReceiveByDomain, const MInt dataBlockSize, DataType *const buffer)
 Assemble given data in send buffer and communicate. More...
 
template<std::size_t N>
void maia::mpi::communicateBitsetData (const std::bitset< N > *const data, const MInt noCells, const MInt *const sortedCellId, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MInt *const noCellsToSendByDomain, const MInt *const noCellsToReceiveByDomain, const MInt dataBlockSize, std::bitset< N > *const buffer)
 
template<typename DataType >
void maia::mpi::communicateGlobalyOrderedData (DataType const *const sendData, const MInt noLocIds, const MInt noGlobalIds, const MInt nRows, const MInt nCols, const MInt noDomains, const MInt domainId, const MPI_Comm mpiComm, const MIntScratchSpace &localToGlobal, const MIntScratchSpace &dataOffsets, ScratchSpace< DataType > &recvData)
 Communicate (optionally) solver-structured data sorted by a global Id. More...
 
template<class T >
std::vector< T > maia::mpi::mpiExchangePointToPoint (const T *const sendBuffer, const MInt *const snghbrs, const MInt nosnghbrs, const MInt *const sendcounts, const MInt *const rnghbrs, const MInt nornghbrs, const MPI_Comm &mpi_comm, const MInt domainId, const MInt dataBlockSize, MInt *const recvcounts_=nullptr, MInt *const rdispls_=nullptr)
 
template<typename U >
void maia::mpi::reverseExchangeAddData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U **const data, const MInt noDat=1)
 Generic exchange from halo to window cells, however in this case the value in the halo-cell is added to the values in the windowcell! More...
 
template<typename U >
void maia::mpi::reverseExchangeAddData (const std::vector< MInt > &nghbrDomains, const std::vector< std::vector< MInt > > &haloCellVec, const std::vector< std::vector< MInt > > &windowCellVec, const MPI_Comm comm, U *const data, const MInt noDat=1)
 Generic exchange from halo to window cells, however in this case the value in the halo-cell is added to the values in the windowcell, simple pointer version. More...