#include "modules/PanNDE/include/Communicator.hpp"
Public Member Functions | |
virtual void | Init (int &argc, char **&argv)=0 |
virtual void | Init (int &argc, char **&argv, std::shared_ptr< PanNDE::Mesh > mesh)=0 |
virtual int | getProcessId ()=0 |
virtual int | getGlobalId ()=0 |
virtual int | getNumberOfProcesses ()=0 |
virtual int | getNumberOfAllProcesses ()=0 |
virtual void | Finalize ()=0 |
virtual void | determineExchangePattern (std::shared_ptr< PanNDE::Mesh > mesh)=0 |
virtual void | setupDataLinks (std::string keyname, std::shared_ptr< PanNDE::Field > field)=0 |
virtual void | setupDataLinks (std::shared_ptr< PanNDE::FieldBundle > fields)=0 |
virtual void | startHaloExchange (std::string keyname)=0 |
virtual void | waitUntilDone (std::string keyname)=0 |
virtual void | sendArray (std::shared_ptr< PanNDE::Array< double >> array, int receiver)=0 |
virtual void | sendArray (double *array, int N, int receiver)=0 |
virtual std::shared_ptr< PanNDE::Array< double > > | recvArray (std::shared_ptr< PanNDE::ArrayFactory< double >> maker, int sender)=0 |
virtual void | broadcastArray (std::shared_ptr< PanNDE::Array< double >> &array, int sender=0)=0 |
virtual void | sendArray (std::shared_ptr< PanNDE::Array< int32_t >> array, int receiver)=0 |
virtual void | sendArray (int32_t *array, int N, int receiver)=0 |
virtual std::shared_ptr< PanNDE::Array< int32_t > > | recvArray (std::shared_ptr< PanNDE::ArrayFactory< int32_t >> maker, int sender)=0 |
virtual void | broadcastArray (std::shared_ptr< PanNDE::Array< int32_t >> &array, int sender=0)=0 |
virtual void | sendArray (std::shared_ptr< PanNDE::Array< int64_t >> array, int receiver)=0 |
virtual void | sendArray (int64_t *array, int N, int receiver)=0 |
virtual std::shared_ptr< PanNDE::Array< int64_t > > | recvArray (std::shared_ptr< PanNDE::ArrayFactory< int64_t >> maker, int sender)=0 |
virtual void | broadcastArray (std::shared_ptr< PanNDE::Array< int64_t >> &array, int sender=0)=0 |
virtual void | sendValue (double value, int receiver)=0 |
virtual void | recvValue (double *value, int sender)=0 |
virtual void | broadcastValue (double *value, int sender=0)=0 |
virtual std::shared_ptr< PanNDE::Array< double > > | allGatherValue (double value, std::shared_ptr< PanNDE::ArrayFactory< double >> maker)=0 |
virtual void | sendValue (int32_t value, int receiver)=0 |
virtual void | recvValue (int32_t *value, int sender)=0 |
virtual void | broadcastValue (int32_t *value, int sender=0)=0 |
virtual std::shared_ptr< PanNDE::Array< int32_t > > | allGatherValue (int32_t value, std::shared_ptr< PanNDE::ArrayFactory< int32_t >> maker)=0 |
virtual void | sendValue (int64_t value, int receiver)=0 |
virtual void | recvValue (int64_t *value, int sender)=0 |
virtual void | broadcastValue (int64_t *value, int sender=0)=0 |
virtual std::shared_ptr< PanNDE::Array< int64_t > > | allGatherValue (int64_t value, std::shared_ptr< PanNDE::ArrayFactory< int64_t >> maker)=0 |
virtual void | waitall ()=0 |
virtual void | barrier ()=0 |
Defines the data communcations methods for inter-process data exchange.
|
pure virtual |
all broadcast value for placement in array by process index
value | the value to send |
maker | the array factory to build the synthesized array |
|
pure virtual |
all broadcast value for placement in array by process index
value | the value to send |
maker | the array factory to build the synthesized array |
|
pure virtual |
all broadcast value for placement in array by process index
value | the value to send |
maker | the array factory to build the synthesized array |
|
pure virtual |
wait for all processes to arrive
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
broadcast array by process
array | the array to be either populated or sent |
sender | process which broadcasts the array |
|
pure virtual |
broadcast array by process
array | the array to be either populated or sent |
sender | process which broadcasts the array |
|
pure virtual |
broadcast array by process
array | the array to be either populated or sent |
sender | process which broadcasts the array |
|
pure virtual |
broadcast value to all processes
value | the address to which to write (if receiving) or send (if broadcasting) |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
broadcast value to all processes
value | the address to which to write (if receiving) or send (if broadcasting) |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
broadcast value to all processes
value | the address to which to write (if receiving) or send (if broadcasting) |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
use the local mesh to determine the halo exchange pattern. Not recommended approach, but retained for backwards compatibility
mesh | the local mesh from which the communication pattern can be determined |
|
pure virtual |
release commmunicator assets
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
get the id number of the process in the global communicator
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
get the number of processes on the global communicator
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
get the number of processes on the local communicator
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
get the id number of the process in the local communicator
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Initialize a communicator object. As many initializers (e.g. MPI, VTK, etc.) require the arguments to ‘int main()’, they are passed through here.
argc | number of arguments in argv |
argv | the command line arguments provided to int main() |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Initialize a communicator object. As many initializers (e.g. MPI, VTK, etc.) require the arguments to ‘int main()’, they are passed through here. The data exchange pattern can be determined for final configuration if the mesh is passed in
argc | number of arguments in argv |
argv | the command line arguments provided to int main() |
mesh | the local mesh for simulation |
|
pure virtual |
Receive array from process
maker | the array factory method required to build the array |
sender | process which sent the array |
|
pure virtual |
Receive array from process
maker | the array factory method required to build the array |
sender | process which sent the array |
|
pure virtual |
Receive array from process
maker | the array factory method required to build the array |
sender | process which sent the array |
|
pure virtual |
receive value from process
value | the address to which to write |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
receive value from process
value | the address to which to write |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
receive value from process
value | the address to which to write |
sender | process which sent the value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Send array to process
array | the array to send |
N | the length of the array |
receiver | process to receive the array |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Send array to process
array | the array to send |
N | the length of the array |
receiver | process to receive the array |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Send array to process
array | the array to send |
N | the length of the array |
receiver | process to receive the array |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Send array to process
array | the array to send |
receiver | process to receive the array |
|
pure virtual |
Send array to process
array | the array to send |
receiver | process to receive the array |
|
pure virtual |
Send array to process
array | the array to send |
receiver | process to receive the array |
|
pure virtual |
send value to process
value | the value to send |
receiver | process to send value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
send value to process
value | the value to send |
receiver | process to send value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
send value to process
value | the value to send |
receiver | process to send value |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Use the field bundle to determine the exchange pattern and register all fields contained for data exchange.
fields | the field bundle to set up for halo exchange |
|
pure virtual |
after having determined the exchange pattern, use that pattern to configure the halo exchange for the specific field. Not recommended approach, but retained for backwards compatibility
keyname | field name |
field | the field data to be registered for halo exchange |
|
pure virtual |
Start asynchronous halo exchange on field by name
keyname | field name |
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
wait for all transmissions/receptions to complete
Implemented in NetMPI::MPICommunicator.
|
pure virtual |
Wait for completion of halo exchange on field by name
keyname | field name |
Implemented in NetMPI::MPICommunicator.