MPI communicator class that implements the Communicator interface.
More...
#include <mpi.hpp>
Classes | |
| class | Future |
| Represents the future result of an MPI operation. More... | |
Public Member Functions | |
| MPI (MPI_Comm comm, config::Options options) | |
| Construct an MPI communicator. More... | |
| Rank | rank () const override |
| Retrieves the rank of the current node. More... | |
| Rank | nranks () const override |
| Retrieves the total number of ranks. More... | |
| std::unique_ptr< Communicator::Future > | send (std::unique_ptr< std::vector< uint8_t >> msg, Rank rank, Tag tag) override |
| Sends a host message to a specific rank. More... | |
| std::unique_ptr< Communicator::Future > | send (std::unique_ptr< Buffer > msg, Rank rank, Tag tag) override |
| Sends a message (device or host) to a specific rank. More... | |
| std::unique_ptr< Communicator::Future > | recv (Rank rank, Tag tag, std::unique_ptr< Buffer > recv_buffer) override |
Receives a message from a specific rank to a buffer. Use release_data to extract the data out of the buffer once the future is completed. More... | |
| std::unique_ptr< Communicator::Future > | recv_sync_host_data (Rank rank, Tag tag, std::unique_ptr< std::vector< uint8_t >> synced_buffer) override |
Receives a message from a specific rank to an allocated (synchronized) host buffer. Use release_sync_host_data to extract the data out of the buffer once the future is completed. More... | |
| std::pair< std::unique_ptr< std::vector< uint8_t > >, Rank > | recv_any (Tag tag) override |
| Receives a message from any rank (blocking). More... | |
| std::unique_ptr< std::vector< uint8_t > > | recv_from (Rank src, Tag tag) override |
| Receives a message from a specific rank (blocking). More... | |
| std::pair< std::vector< std::unique_ptr< Communicator::Future > >, std::vector< std::size_t > > | test_some (std::vector< std::unique_ptr< Communicator::Future >> &future_vector) override |
| Tests for completion of multiple futures. More... | |
| std::vector< std::size_t > | test_some (std::unordered_map< std::size_t, std::unique_ptr< Communicator::Future >> const &future_map) override |
| Tests for completion of multiple futures in a map. More... | |
| std::unique_ptr< Buffer > | wait (std::unique_ptr< Communicator::Future > future) override |
| Wait for a future to complete and return the data buffer. More... | |
| std::unique_ptr< Buffer > | release_data (std::unique_ptr< Communicator::Future > future) override |
| Retrieves data associated with a completed future. More... | |
| std::unique_ptr< std::vector< uint8_t > > | release_sync_host_data (std::unique_ptr< Communicator::Future > future) override |
| Retrieves synchronized host data associated with a completed future. When the future is completed, the the host data is valid, and ready, but not stream-ordered. More... | |
| Logger & | logger () override |
| Retrieves the logger associated with this communicator. More... | |
| std::string | str () const override |
| Provides a string representation of the communicator. More... | |
Public Member Functions inherited from rapidsmpf::Communicator | |
| virtual std::pair< std::vector< std::unique_ptr< Future > >, std::vector< std::size_t > > | test_some (std::vector< std::unique_ptr< Future >> &future_vector)=0 |
| Tests for completion of multiple futures. More... | |
| virtual std::vector< std::size_t > | test_some (std::unordered_map< std::size_t, std::unique_ptr< Communicator::Future >> const &future_map)=0 |
| Tests for completion of multiple futures in a map. More... | |
| virtual std::unique_ptr< Buffer > | wait (std::unique_ptr< Future > future)=0 |
| Wait for a future to complete and return the data buffer. More... | |
| virtual std::unique_ptr< Buffer > | release_data (std::unique_ptr< Communicator::Future > future)=0 |
| Retrieves data associated with a completed future. More... | |
| virtual std::unique_ptr< std::vector< uint8_t > > | release_sync_host_data (std::unique_ptr< Communicator::Future > future)=0 |
| Retrieves synchronized host data associated with a completed future. When the future is completed, the the host data is valid, and ready, but not stream-ordered. More... | |
MPI communicator class that implements the Communicator interface.
This class implements communication functions using MPI, allowing for data exchange between processes in a distributed system. It supports sending and receiving data, both on the CPU and GPU, and provides asynchronous operations with support for future results.
| rapidsmpf::MPI::MPI | ( | MPI_Comm | comm, |
| config::Options | options | ||
| ) |
|
inlineoverridevirtual |
Retrieves the logger associated with this communicator.
Implements rapidsmpf::Communicator.
|
inlineoverridevirtual |
Retrieves the total number of ranks.
Implements rapidsmpf::Communicator.
|
inlineoverridevirtual |
Retrieves the rank of the current node.
Implements rapidsmpf::Communicator.
|
overridevirtual |
Receives a message from a specific rank to a buffer. Use release_data to extract the data out of the buffer once the future is completed.
| rank | The source rank. |
| tag | Message tag for identification. |
| recv_buffer | The receive buffer. |
Future representing the asynchronous operation.Buffer allocation is already valid before calling, for example, when a CUDA allocation and/or copy are done asynchronously. Specifically, the caller should ensure Buffer::is_ready() returns true before calling this function, if not, a warning is printed and the application will terminate. Implements rapidsmpf::Communicator.
|
overridevirtual |
Receives a message from any rank (blocking).
| tag | Message tag for identification. |
nullptr in the first slot of the pair. Implements rapidsmpf::Communicator.
|
overridevirtual |
Receives a message from a specific rank (blocking).
| src | The source rank from which to receive the message. |
| tag | Message tag for identification. |
Implements rapidsmpf::Communicator.
|
overridevirtual |
Receives a message from a specific rank to an allocated (synchronized) host buffer. Use release_sync_host_data to extract the data out of the buffer once the future is completed.
| rank | The source rank. |
| tag | Message tag for identification. |
| synced_buffer | The receive buffer. |
Future representing the asynchronous operation. Implements rapidsmpf::Communicator.
|
override |
Retrieves data associated with a completed future.
| future | The completed future. |
| std::runtime_error | if the future has no data. |
|
override |
Retrieves synchronized host data associated with a completed future. When the future is completed, the the host data is valid, and ready, but not stream-ordered.
| future | The completed future. |
| std::runtime_error | if the future has no data. |
|
overridevirtual |
Sends a message (device or host) to a specific rank.
| msg | Unique pointer to the message data (Buffer). |
| rank | The destination rank. |
| tag | Message tag for identification. |
Future representing the asynchronous operation.Buffer allocation and data are already valid before calling, for example, when a CUDA allocation and/or copy are done asynchronously. Specifically, the caller should ensure Buffer::is_ready() returns true before calling this function, if not, a warning is printed and the application will terminate. Implements rapidsmpf::Communicator.
|
overridevirtual |
Sends a host message to a specific rank.
This is used to send data that resides in host memory and is guaranteed to be valid at the time of the call.
| msg | Unique pointer to the message data (host memory). |
| rank | The destination rank. |
| tag | Message tag for identification. |
Future representing the asynchronous operation. Implements rapidsmpf::Communicator.
|
overridevirtual |
Provides a string representation of the communicator.
Implements rapidsmpf::Communicator.
|
override |
Tests for completion of multiple futures in a map.
| future_map | Map of futures identified by keys. |
|
override |
Tests for completion of multiple futures.
| [in,out] | future_vector | Vector of Future objects. Completed futures are erased from the vector. |
|
override |
Wait for a future to complete and return the data buffer.
| future | The future to wait for completion of. |
nullptr if the future had no data).