Communicators#
Programming interface#
All types and functions in this section are declared in the
oneapi::dal::spmd::preview namespace and are available via inclusion of the
header file from specified backend.
Communicator#
A base implementation of the communicator concept. The communicator type and all of its subtypes are reference-counted:
The instance stores a pointer to the communicator implementation that holds all property values and data.
The reference count indicates how many communicator objects refer to the same implementation.
The communicator increments the reference count for it to be equal to the number of communicator objects sharing the same implementation.
The communicator decrements the reference count when the communicator goes out of the scope. If the reference count is zero, the communicator frees its implementation.
USM and non-USM memory usage#
There are two types of memory access:
USM memory access (both USM and non-USM pointers can be used)
Host, or non-USM, memory access (only non-USM pointers can be used)
Use one of the following tags to select a memory access type:
- device_memory_access::none
Assumes only non-USM pointers are used for a collective operation.
- device_memory_access::usm
Both USM and non-USM can be used. Pointer type is controlled by the use of
sycl::queueobject as a first parameter for collective operations. The use ofsycl::queueobject is obligatory for USM pointers.
Request#
Request is an object to control asynchronous communication.
Reducion operations#
The following reduction operations are supported:
Max
Min
Sum
MPI Communicator#
The MPI communicator will use the default MPI communicator (MPI_COMM_WORLD) in creating an MPI communicator object unless otherwise specified.
The use of sub-communicators in oneDAL requires passing an integer (int64) representation of the raw MPI Comm object pointer to the MPI communicator constructor.
The MPI library used for this process must be compatible with the MPI library used to compile oneDAL.
CCL Communicator#
This communicator uses the Intel oneCCL library. It can only be used in conjunction with a dpc build of oneDAL.