Classes | Public Member Functions | List of all members
rapidsmpf::Single Class Referencefinal

Single process communicator class that implements the Communicator interface. More...

#include <single.hpp>

Inheritance diagram for rapidsmpf::Single:
rapidsmpf::Communicator

Classes

class  Future
 Represents the future result of an operation. More...
 

Public Member Functions

 Single (config::Options options)
 Construct a single process communicator. More...
 
constexpr Rank rank () const override
 Retrieves the rank of the current node. More...
 
constexpr Rank nranks () const override
 Retrieves the total number of ranks. More...
 
std::unique_ptr< Communicator::Futuresend (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::Futuresend (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::Futurerecv (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::Futurerecv_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< Bufferwait (std::unique_ptr< Communicator::Future > future) override
 Wait for a future to complete and return the data buffer. More...
 
std::unique_ptr< Bufferrelease_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...
 
Loggerlogger () 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< Bufferwait (std::unique_ptr< Future > future)=0
 Wait for a future to complete and return the data buffer. More...
 
virtual std::unique_ptr< Bufferrelease_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...
 

Detailed Description

Single process communicator class that implements the Communicator interface.

This class stubs out the Communicator interface with functions that throw. When sending to/receiving from self the internal logic should move buffers through the shuffler, rather than invoking send/recv.

Definition at line 27 of file single.hpp.

Constructor & Destructor Documentation

◆ Single()

rapidsmpf::Single::Single ( config::Options  options)

Construct a single process communicator.

Parameters
optionsConfiguration options.

Member Function Documentation

◆ logger()

Logger& rapidsmpf::Single::logger ( )
inlineoverridevirtual

Retrieves the logger associated with this communicator.

Returns
Reference to the logger.

Implements rapidsmpf::Communicator.

Definition at line 181 of file single.hpp.

◆ nranks()

constexpr Rank rapidsmpf::Single::nranks ( ) const
inlineconstexproverridevirtual

Retrieves the total number of ranks.

Returns
The total number of ranks.

Implements rapidsmpf::Communicator.

Definition at line 61 of file single.hpp.

◆ rank()

constexpr Rank rapidsmpf::Single::rank ( ) const
inlineconstexproverridevirtual

Retrieves the rank of the current node.

Returns
The rank of the node.

Implements rapidsmpf::Communicator.

Definition at line 54 of file single.hpp.

◆ recv()

std::unique_ptr<Communicator::Future> rapidsmpf::Single::recv ( Rank  rank,
Tag  tag,
std::unique_ptr< Buffer recv_buffer 
)
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.

Parameters
rankThe source rank.
tagMessage tag for identification.
recv_bufferThe receive buffer.
Returns
A unique pointer to a Future representing the asynchronous operation.
Warning
The caller is responsible to ensure the underlying 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.
Exceptions
std::runtime_errorif called (single-process communicators should never send messages).

Implements rapidsmpf::Communicator.

◆ recv_any()

std::pair<std::unique_ptr<std::vector<uint8_t> >, Rank> rapidsmpf::Single::recv_any ( Tag  tag)
overridevirtual

Receives a message from any rank (blocking).

Parameters
tagMessage tag for identification.
Returns
A pair containing the message data (host memory) and the rank of the sender.
Note
If no message is available this is indicated by returning a nullptr in the first slot of the pair.
Always returns a nullptr for the received message, indicating that no message is available.

Implements rapidsmpf::Communicator.

◆ recv_from()

std::unique_ptr<std::vector<uint8_t> > rapidsmpf::Single::recv_from ( Rank  src,
Tag  tag 
)
overridevirtual

Receives a message from a specific rank (blocking).

Parameters
srcThe source rank from which to receive the message.
tagMessage tag for identification.
Returns
A unique pointer to a vector containing the received message data (host memory).
Note
If no message is available, this function returns a nullptr.
Always returns a nullptr for the received message, indicating that no message is available.

Implements rapidsmpf::Communicator.

◆ recv_sync_host_data()

std::unique_ptr<Communicator::Future> rapidsmpf::Single::recv_sync_host_data ( Rank  rank,
Tag  tag,
std::unique_ptr< std::vector< uint8_t >>  synced_buffer 
)
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.

Parameters
rankThe source rank.
tagMessage tag for identification.
synced_bufferThe receive buffer.
Returns
A unique pointer to a Future representing the asynchronous operation.
Exceptions
std::runtime_errorif called (single-process communicators should never send messages).

Implements rapidsmpf::Communicator.

◆ release_data()

std::unique_ptr<Buffer> rapidsmpf::Single::release_data ( std::unique_ptr< Communicator::Future future)
override

Retrieves data associated with a completed future.

Parameters
futureThe completed future.
Returns
A unique pointer to the data buffer.
Exceptions
std::runtime_errorif the future has no data.
std::runtime_errorif called (single-process communicators should never send messages).

◆ release_sync_host_data()

std::unique_ptr<std::vector<uint8_t> > rapidsmpf::Single::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.

Parameters
futureThe completed future.
Returns
A unique pointer to the synchronized host data.
Exceptions
std::runtime_errorif the future has no data.
std::runtime_errorif called (single-process communicators should never send messages).

◆ send() [1/2]

std::unique_ptr<Communicator::Future> rapidsmpf::Single::send ( std::unique_ptr< Buffer msg,
Rank  rank,
Tag  tag 
)
overridevirtual

Sends a message (device or host) to a specific rank.

Parameters
msgUnique pointer to the message data (Buffer).
rankThe destination rank.
tagMessage tag for identification.
Returns
A unique pointer to a Future representing the asynchronous operation.
Warning
The caller is responsible to ensure the underlying 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.
Exceptions
std::runtime_errorif called (single-process communicators should never send messages).

Implements rapidsmpf::Communicator.

◆ send() [2/2]

std::unique_ptr<Communicator::Future> rapidsmpf::Single::send ( std::unique_ptr< std::vector< uint8_t >>  msg,
Rank  rank,
Tag  tag 
)
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.

Parameters
msgUnique pointer to the message data (host memory).
rankThe destination rank.
tagMessage tag for identification.
Returns
A unique pointer to a Future representing the asynchronous operation.

Implements rapidsmpf::Communicator.

◆ str()

std::string rapidsmpf::Single::str ( ) const
overridevirtual

Provides a string representation of the communicator.

Returns
A string describing the communicator.

Implements rapidsmpf::Communicator.

◆ test_some() [1/2]

std::vector<std::size_t> rapidsmpf::Single::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.

Parameters
future_mapMap of futures identified by keys.
Returns
Keys of completed futures.
Exceptions
std::runtime_errorif called (single-process communicators should never send messages).

◆ test_some() [2/2]

std::pair< std::vector<std::unique_ptr<Communicator::Future> >, std::vector<std::size_t> > rapidsmpf::Single::test_some ( std::vector< std::unique_ptr< Communicator::Future >> &  future_vector)
override

Tests for completion of multiple futures.

Parameters
[in,out]future_vectorVector of Future objects. Completed futures are erased from the vector.
Returns
Pair of completed futures and indices of input vector that were completed.
Exceptions
std::runtime_errorif called (single-process communicators should never send messages).

◆ wait()

std::unique_ptr<Buffer> rapidsmpf::Single::wait ( std::unique_ptr< Communicator::Future future)
override

Wait for a future to complete and return the data buffer.

Parameters
futureThe future to wait for completion of.
Returns
A unique pointer to the GPU data buffer (or nullptr if the future had no data).
Exceptions
std::runtime_errorif called (single-process communicators should never send messages)

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