|
| int | rank () |
| | Rank of this process in the world communicator.
|
| |
| int | size () |
| | Number of processes in the world communicator.
|
| |
| void | barrier () |
| | Block until all ranks arrive.
|
| |
| void | abort (int code) |
| | Ends every rank with the given exit code (MPI_Abort in parallel runs).
|
| |
| template<typename T > |
| void | allreduce (std::span< T > data, Op op) |
| | In-place all-reduce over all ranks of the values in data.
|
| |
| template<typename T > |
| std::vector< T > | allgatherv (const std::vector< T > &local) |
| | Concatenation of every rank's local vector, in rank order.
|
| |
| template<typename T > |
| std::vector< std::vector< T > > | alltoallv (const std::vector< std::vector< T > > &send) |
| | Personalized all-to-all: send[r] goes to rank r; returns what each rank sent to this one, indexed by source rank.
|
| |
| template<typename T > |
| Received< T > | exchange (std::vector< std::vector< T > > &&send) |
| | Personalized all-to-all like alltoallv, for large setup-time messages: frees each send list once packed, and returns what it received in one buffer, in rank order.
|
| |
| template void | allreduce< double > (std::span< double >, Op) |
| |
| template void | allreduce< float > (std::span< float >, Op) |
| |
| template void | allreduce< int32_t > (std::span< int32_t >, Op) |
| |
| template void | allreduce< int64_t > (std::span< int64_t >, Op) |
| |
| template void | allreduce< uint32_t > (std::span< uint32_t >, Op) |
| |
| template void | allreduce< uint64_t > (std::span< uint64_t >, Op) |
| |
| template std::vector< std::vector< uint64_t > > | alltoallv (const std::vector< std::vector< uint64_t > > &) |
| |
| template std::vector< int32_t > | allgatherv (const std::vector< int32_t > &) |
| |
| template std::vector< uint64_t > | allgatherv (const std::vector< uint64_t > &) |
| |
| template std::vector< double > | allgatherv (const std::vector< double > &) |
| |
| template std::vector< float > | allgatherv (const std::vector< float > &) |
| |
| template std::vector< std::vector< double > > | alltoallv (const std::vector< std::vector< double > > &) |
| |
| template std::vector< std::vector< float > > | alltoallv (const std::vector< std::vector< float > > &) |
| |
| template Received< uint64_t > | exchange (std::vector< std::vector< uint64_t > > &&) |
| |
| template Received< double > | exchange (std::vector< std::vector< double > > &&) |
| |
| template Received< float > | exchange (std::vector< std::vector< float > > &&) |
| |
| bool | is_root () |
| | Whether this is rank 0, which does all logging.
|
| |
| template<typename T > |
| T | allreduce (T value, Op op) |
| |
| template<typename T , std::size_t N> |
| std::array< T, N > | allreduce (std::array< T, N > values, Op op) |
| |
| void | enqueue_wait (const Kokkos::DefaultExecutionSpace &waiter, const Kokkos::DefaultExecutionSpace &done) |
| | Make the work enqueued later on waiter wait for the work enqueued so far on done, without blocking the host where the backend allows it (CUDA); a fence of done otherwise.
|
| |
| constexpr bool | nccl_available () |
| | Whether this build can exchange device buffers with NCCL.
|
| |