VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
vf::parallel::MPICommunicator Class Reference

A class uses MPI library to communication. More...

#include <MPICommunicator.h>

Inheritance diagram for vf::parallel::MPICommunicator:
vf::parallel::Communicator

Public Member Functions

 MPICommunicator (MPICommunicator const &)=delete
 
MPICommunicatoroperator= (MPICommunicator const &)=delete
 
 ~MPICommunicator () override
 
double Wtime () override
 
int getBundleID () const override
 
int getNumberOfBundles () const override
 
int getProcessID () const override
 
int getProcessID (int bundle, int rank) const override
 
int getNumberOfProcesses () const override
 
voidgetNativeCommunicator () override
 
int getRoot () const override
 
int getBundleRoot () const override
 
int getProcessRoot () const override
 
int getNumberOfProcessesInBundle (int bundle) const override
 
bool isRoot () const override
 
void abort (int errorcode) override
 
void sendSerializedObject (std::stringstream &ss, int target) override
 
void receiveSerializedObject (std::stringstream &ss, int source) override
 
void barrier () override
 
std::vector< std::string > gather (const std::string &str) override
 
std::vector< intgather (std::vector< int > &values) override
 
std::vector< floatgather (std::vector< float > &values) override
 
std::vector< doublegather (std::vector< double > &values) override
 
std::vector< unsigned long longgather (std::vector< unsigned long long > &values) override
 
void allGather (std::vector< int > &svalues, std::vector< int > &rvalues) override
 
void allGather (std::vector< float > &svalues, std::vector< float > &rvalues) override
 
void allGather (std::vector< double > &svalues, std::vector< double > &rvalues) override
 
void allGather (std::vector< unsigned long long > &svalues, std::vector< unsigned long long > &rvalues) override
 
void allGather (std::vector< uint > &svalues, std::vector< uint > &rvalues) override
 
void allReduceSum (std::vector< float > &values) override
 
void allReduceSum (std::vector< double > &values) override
 
void allReduceSum (std::vector< uint > &values) override
 
void broadcast (int &value) override
 
void broadcast (float &value) override
 
void broadcast (double &value) override
 
void broadcast (long int &value) override
 
void broadcast (std::vector< int > &values) override
 
void broadcast (std::vector< float > &values) override
 
void broadcast (std::vector< double > &values) override
 
void broadcast (std::vector< long int > &values) override
 
template<class T >
std::vector< Tgather (std::vector< T > &values)
 
template<class T >
void allGather (std::vector< T > &svalues, std::vector< T > &rvalues)
 
template<class T >
void allReduceSum (std::vector< T > &values)
 
template<class T >
void broadcast (std::vector< T > &values)
 
template<class T >
void broadcast (T &value)
 
void receiveSend (uint *buffer_receive, int size_buffer_recv, int neighbor_rank_recv, const uint *buffer_send, int size_buffer_send, int neighbor_rank_send) const override
 
void send (real *sbuf, int count_s, int nb_rank) const override
 
double reduceSum (double quantityPerProcess) const override
 
int mapCudaDevicesOnHosts (const std::vector< unsigned int > &devices, int numberOfDevices) const override
 
void receiveSend (real *buffer_send, int size_buffer_send, real *buffer_receive, int size_buffer_recv, int neighbor_rank) const override
 
void receiveNonBlocking (real *rbuf, int count_r, int sourceRank) override
 
void sendNonBlocking (real *sbuf, int count_s, int destinationRank) override
 
void send (real *sbuf, int count_s, int destinationRank) override
 
void waitAll () override
 
void resetRequests () override
 
- Public Member Functions inherited from vf::parallel::Communicator
 Communicator (const Communicator &)=delete
 
Communicatoroperator= (const Communicator &rhs)=delete
 
virtual ~Communicator ()=default
 

Static Public Member Functions

static std::shared_ptr< CommunicatorgetInstance ()
 
- Static Public Member Functions inherited from vf::parallel::Communicator
static std::shared_ptr< CommunicatorgetInstance ()
 

Additional Inherited Members

- Protected Member Functions inherited from vf::parallel::Communicator
 Communicator ()=default
 
- Static Protected Attributes inherited from vf::parallel::Communicator
static std::mutex instantiation_mutex = std::mutex()
 
static std::shared_ptr< Communicatorinstance = std::shared_ptr<Communicator>()
 

Detailed Description

A class uses MPI library to communication.

Support MPI communication. Implements singleton pattern.

Author
K. Kutscher

Definition at line 61 of file MPICommunicator.h.

Constructor & Destructor Documentation

◆ MPICommunicator()

vf::parallel::MPICommunicator::MPICommunicator ( MPICommunicator const )
delete

◆ ~MPICommunicator()

vf::parallel::MPICommunicator::~MPICommunicator ( )
override

Definition at line 81 of file MPICommunicator.cpp.

Member Function Documentation

◆ abort()

void vf::parallel::MPICommunicator::abort ( int  errorcode)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 91 of file MPICommunicator.cpp.

◆ allGather() [1/6]

void vf::parallel::MPICommunicator::allGather ( std::vector< double > &  svalues,
std::vector< double > &  rvalues 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 190 of file MPICommunicator.cpp.

◆ allGather() [2/6]

void vf::parallel::MPICommunicator::allGather ( std::vector< float > &  svalues,
std::vector< float > &  rvalues 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 185 of file MPICommunicator.cpp.

◆ allGather() [3/6]

void vf::parallel::MPICommunicator::allGather ( std::vector< int > &  svalues,
std::vector< int > &  rvalues 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 180 of file MPICommunicator.cpp.

◆ allGather() [4/6]

template<class T >
void vf::parallel::MPICommunicator::allGather ( std::vector< T > &  svalues,
std::vector< T > &  rvalues 
)

Definition at line 194 of file MPICommunicator.h.

◆ allGather() [5/6]

void vf::parallel::MPICommunicator::allGather ( std::vector< uint > &  svalues,
std::vector< uint > &  rvalues 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 199 of file MPICommunicator.cpp.

◆ allGather() [6/6]

void vf::parallel::MPICommunicator::allGather ( std::vector< unsigned long long > &  svalues,
std::vector< unsigned long long > &  rvalues 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 195 of file MPICommunicator.cpp.

◆ allReduceSum() [1/4]

void vf::parallel::MPICommunicator::allReduceSum ( std::vector< double > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 202 of file MPICommunicator.cpp.

◆ allReduceSum() [2/4]

void vf::parallel::MPICommunicator::allReduceSum ( std::vector< float > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 201 of file MPICommunicator.cpp.

◆ allReduceSum() [3/4]

template<class T >
void vf::parallel::MPICommunicator::allReduceSum ( std::vector< T > &  values)

Definition at line 248 of file MPICommunicator.h.

◆ allReduceSum() [4/4]

void vf::parallel::MPICommunicator::allReduceSum ( std::vector< uint > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 203 of file MPICommunicator.cpp.

◆ barrier()

void vf::parallel::MPICommunicator::barrier ( )
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 178 of file MPICommunicator.cpp.

◆ broadcast() [1/10]

void vf::parallel::MPICommunicator::broadcast ( double value)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 217 of file MPICommunicator.cpp.

◆ broadcast() [2/10]

void vf::parallel::MPICommunicator::broadcast ( float value)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 215 of file MPICommunicator.cpp.

◆ broadcast() [3/10]

void vf::parallel::MPICommunicator::broadcast ( int value)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 213 of file MPICommunicator.cpp.

◆ broadcast() [4/10]

void vf::parallel::MPICommunicator::broadcast ( long int value)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 219 of file MPICommunicator.cpp.

◆ broadcast() [5/10]

void vf::parallel::MPICommunicator::broadcast ( std::vector< double > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 209 of file MPICommunicator.cpp.

◆ broadcast() [6/10]

void vf::parallel::MPICommunicator::broadcast ( std::vector< float > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 207 of file MPICommunicator.cpp.

◆ broadcast() [7/10]

void vf::parallel::MPICommunicator::broadcast ( std::vector< int > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 205 of file MPICommunicator.cpp.

◆ broadcast() [8/10]

void vf::parallel::MPICommunicator::broadcast ( std::vector< long int > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 211 of file MPICommunicator.cpp.

◆ broadcast() [9/10]

template<class T >
void vf::parallel::MPICommunicator::broadcast ( std::vector< T > &  values)

Definition at line 255 of file MPICommunicator.h.

◆ broadcast() [10/10]

template<class T >
void vf::parallel::MPICommunicator::broadcast ( T value)

Definition at line 284 of file MPICommunicator.h.

◆ gather() [1/6]

std::vector< std::string > vf::parallel::MPICommunicator::gather ( const std::string &  str)
overridevirtual

◆ gather() [2/6]

std::vector< double > vf::parallel::MPICommunicator::gather ( std::vector< double > &  values)
overridevirtual

◆ gather() [3/6]

std::vector< float > vf::parallel::MPICommunicator::gather ( std::vector< float > &  values)
overridevirtual

◆ gather() [4/6]

std::vector< int > vf::parallel::MPICommunicator::gather ( std::vector< int > &  values)
overridevirtual

◆ gather() [5/6]

template<class T >
std::vector< T > vf::parallel::MPICommunicator::gather ( std::vector< T > &  values)

Definition at line 165 of file MPICommunicator.h.

◆ gather() [6/6]

std::vector< unsigned long long > vf::parallel::MPICommunicator::gather ( std::vector< unsigned long long > &  values)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 130 of file MPICommunicator.cpp.

◆ getBundleID()

int vf::parallel::MPICommunicator::getBundleID ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 143 of file MPICommunicator.cpp.

◆ getBundleRoot()

int vf::parallel::MPICommunicator::getBundleRoot ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 149 of file MPICommunicator.cpp.

◆ getInstance()

std::shared_ptr< Communicator > vf::parallel::MPICommunicator::getInstance ( )
static

Definition at line 58 of file MPICommunicator.cpp.

◆ getNativeCommunicator()

void * vf::parallel::MPICommunicator::getNativeCommunicator ( )
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 141 of file MPICommunicator.cpp.

◆ getNumberOfBundles()

int vf::parallel::MPICommunicator::getNumberOfBundles ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 145 of file MPICommunicator.cpp.

◆ getNumberOfProcesses()

int vf::parallel::MPICommunicator::getNumberOfProcesses ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 139 of file MPICommunicator.cpp.

◆ getNumberOfProcessesInBundle()

int vf::parallel::MPICommunicator::getNumberOfProcessesInBundle ( int  bundle) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 153 of file MPICommunicator.cpp.

◆ getProcessID() [1/2]

int vf::parallel::MPICommunicator::getProcessID ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 135 of file MPICommunicator.cpp.

◆ getProcessID() [2/2]

int vf::parallel::MPICommunicator::getProcessID ( int  bundle,
int  rank 
) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 137 of file MPICommunicator.cpp.

◆ getProcessRoot()

int vf::parallel::MPICommunicator::getProcessRoot ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 151 of file MPICommunicator.cpp.

◆ getRoot()

int vf::parallel::MPICommunicator::getRoot ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 147 of file MPICommunicator.cpp.

◆ isRoot()

bool vf::parallel::MPICommunicator::isRoot ( ) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 155 of file MPICommunicator.cpp.

◆ mapCudaDevicesOnHosts()

int vf::parallel::MPICommunicator::mapCudaDevicesOnHosts ( const std::vector< unsigned int > &  devices,
int  numberOfDevices 
) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 258 of file MPICommunicator.cpp.

◆ operator=()

MPICommunicator & vf::parallel::MPICommunicator::operator= ( MPICommunicator const )
delete

◆ receiveNonBlocking()

void vf::parallel::MPICommunicator::receiveNonBlocking ( real rbuf,
int  count_r,
int  sourceRank 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 295 of file MPICommunicator.cpp.

◆ receiveSend() [1/2]

void vf::parallel::MPICommunicator::receiveSend ( real buffer_send,
int  size_buffer_send,
real buffer_receive,
int  size_buffer_recv,
int  neighbor_rank 
) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 236 of file MPICommunicator.cpp.

◆ receiveSend() [2/2]

void vf::parallel::MPICommunicator::receiveSend ( uint buffer_receive,
int  size_buffer_recv,
int  neighbor_rank_recv,
const uint buffer_send,
int  size_buffer_send,
int  neighbor_rank_send 
) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 221 of file MPICommunicator.cpp.

◆ receiveSerializedObject()

void vf::parallel::MPICommunicator::receiveSerializedObject ( std::stringstream &  ss,
int  source 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 165 of file MPICommunicator.cpp.

◆ reduceSum()

double vf::parallel::MPICommunicator::reduceSum ( double  quantityPerProcess) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 248 of file MPICommunicator.cpp.

◆ resetRequests()

void vf::parallel::MPICommunicator::resetRequests ( )
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 330 of file MPICommunicator.cpp.

◆ send() [1/2]

void vf::parallel::MPICommunicator::send ( real sbuf,
int  count_s,
int  destinationRank 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 320 of file MPICommunicator.cpp.

◆ send() [2/2]

void vf::parallel::MPICommunicator::send ( real sbuf,
int  count_s,
int  nb_rank 
) const
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 243 of file MPICommunicator.cpp.

◆ sendNonBlocking()

void vf::parallel::MPICommunicator::sendNonBlocking ( real sbuf,
int  count_s,
int  destinationRank 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 308 of file MPICommunicator.cpp.

◆ sendSerializedObject()

void vf::parallel::MPICommunicator::sendSerializedObject ( std::stringstream &  ss,
int  target 
)
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 157 of file MPICommunicator.cpp.

◆ waitAll()

void vf::parallel::MPICommunicator::waitAll ( )
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 325 of file MPICommunicator.cpp.

◆ Wtime()

double vf::parallel::MPICommunicator::Wtime ( )
overridevirtual

Implements vf::parallel::Communicator.

Definition at line 54 of file MPICommunicator.cpp.


The documentation for this class was generated from the following files: