![]() |
OpenPFC
0.1.4
Phase Field Crystal simulation framework
|
MPI exchange operations for SparseVector. More...
#include <mpi.h>#include <vector>#include <openpfc/core/backend_tags.hpp>#include <openpfc/core/sparse_vector.hpp>

Go to the source code of this file.
Functions | |
| template<typename T > | |
| MPI_Datatype | pfc::exchange::detail::get_mpi_type () |
| Get MPI datatype for type T. | |
| template<> | |
| MPI_Datatype | pfc::exchange::detail::get_mpi_type< double > () |
| template<> | |
| MPI_Datatype | pfc::exchange::detail::get_mpi_type< float > () |
| template<> | |
| MPI_Datatype | pfc::exchange::detail::get_mpi_type< int > () |
| template<> | |
| MPI_Datatype | pfc::exchange::detail::get_mpi_type< size_t > () |
| template<typename BackendTag , typename T > | |
| void | pfc::exchange::send (const core::SparseVector< BackendTag, T > &sparse_vector, int sender_rank, int receiver_rank, MPI_Comm comm, int tag=0) |
| Send SparseVector (both indices and data) - setup phase. | |
| template<typename BackendTag , typename T > | |
| void | pfc::exchange::receive (core::SparseVector< BackendTag, T > &sparse_vector, int sender_rank, int receiver_rank, MPI_Comm comm, int tag=0) |
| Receive SparseVector (both indices and data) - setup phase. | |
| template<typename BackendTag , typename T > | |
| void | pfc::exchange::send_data (const core::SparseVector< BackendTag, T > &sparse_vector, int sender_rank, int receiver_rank, MPI_Comm comm, int tag=0) |
| Send only data values (indices already known) - runtime phase. | |
| template<typename BackendTag , typename T > | |
| void | pfc::exchange::receive_data (core::SparseVector< BackendTag, T > &sparse_vector, int sender_rank, int receiver_rank, MPI_Comm comm, int tag=0) |
| Receive only data values (indices already known) - runtime phase. | |
MPI exchange operations for SparseVector.
Provides two-phase exchange for SparseVector:
send(sparse_vec, sender_rank, receiver_rank, comm): Sends both indices and datareceive(sparse_vec, sender_rank, receiver_rank, comm): Receives both indices and datasend_data(sparse_vec, sender_rank, receiver_rank, comm): Sends only data valuesreceive_data(sparse_vec, sender_rank, receiver_rank, comm): Receives only data valuesKey optimization: Indices are exchanged once, then only values are transferred.
| void pfc::exchange::receive | ( | core::SparseVector< BackendTag, T > & | sparse_vector, |
| int | sender_rank, | ||
| int | receiver_rank, | ||
| MPI_Comm | comm, | ||
| int | tag = 0 |
||
| ) |
Receive SparseVector (both indices and data) - setup phase.
Receives both indices and data from sender. Used during initialization.
| sparse_vector | SparseVector to receive into (will be resized) |
| sender_rank | MPI rank of sender |
| receiver_rank | MPI rank of receiver |
| comm | MPI communicator |
| tag | MPI message tag (default: 0) |


| void pfc::exchange::receive_data | ( | core::SparseVector< BackendTag, T > & | sparse_vector, |
| int | sender_rank, | ||
| int | receiver_rank, | ||
| MPI_Comm | comm, | ||
| int | tag = 0 |
||
| ) |
Receive only data values (indices already known) - runtime phase.
Receives only the data values, assuming indices are already set. Much cheaper than full receive.
| sparse_vector | SparseVector to receive data into |
| sender_rank | MPI rank of sender |
| receiver_rank | MPI rank of receiver |
| comm | MPI communicator |
| tag | MPI message tag (default: 0) |


| void pfc::exchange::send | ( | const core::SparseVector< BackendTag, T > & | sparse_vector, |
| int | sender_rank, | ||
| int | receiver_rank, | ||
| MPI_Comm | comm, | ||
| int | tag = 0 |
||
| ) |
Send SparseVector (both indices and data) - setup phase.
Sends both indices and data to receiver. Used during initialization to establish communication pattern.
| sparse_vector | SparseVector to send |
| sender_rank | MPI rank of sender |
| receiver_rank | MPI rank of receiver |
| comm | MPI communicator |
| tag | MPI message tag (default: 0) |


| void pfc::exchange::send_data | ( | const core::SparseVector< BackendTag, T > & | sparse_vector, |
| int | sender_rank, | ||
| int | receiver_rank, | ||
| MPI_Comm | comm, | ||
| int | tag = 0 |
||
| ) |
Send only data values (indices already known) - runtime phase.
Sends only the data values, assuming receiver already knows the indices. Much cheaper than full send.
| sparse_vector | SparseVector to send data from |
| sender_rank | MPI rank of sender |
| receiver_rank | MPI rank of receiver |
| comm | MPI communicator |
| tag | MPI message tag (default: 0) |

