- 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 memory access (both USM and non-USM pointers can be used)
- Host, or non-USM, memory access (only non-USM pointers can be used)
- Assumes only non-USM pointers are used for a collective operation.
- Both USM and non-USM can be used. Pointer type is controlled by the use ofsycl::queueobject as a first parameter for collective operations. The use ofsycl::queueobject is obligatory for USM pointers.