cuda.bindings._v2.driver.multicast_create#

cuda.bindings._v2.driver.multicast_create(prop) → uint64_t#

Create a generic allocation handle representing a multicast object described by the given properties.

This creates a multicast object as described by prop. The number of participating devices is specified by CUmulticastObjectProp.numDevices. Devices can be added to the multicast object via cuMulticastAddDevice. All participating devices must be added to the multicast object before memory can be bound to it. Memory is bound to the multicast object via cuMulticastBindMem, cuMulticastBindMem_v2, cuMulticastBindAddr, or cuMulticastBindAddr_v2. and can be unbound via cuMulticastUnbind. The total amount of memory that can be bound per device is specified by CUmulticastObjectProp.size. This size must be a multiple of the value returned by cuMulticastGetGranularity with the flag CU_MULTICAST_GRANULARITY_MINIMUM. For best performance however, the size should be aligned to the value returned by cuMulticastGetGranularity with the flag CU_MULTICAST_GRANULARITY_RECOMMENDED. After all participating devices have been added, multicast objects can also be mapped to a device’s virtual address space using the virtual memory management APIs (see cuMemMap and cuMemSetAccess). Multicast objects can also be shared with other processes by requesting a shareable handle via cuMemExportToShareableHandle. Note that the desired types of shareable handles must be specified in the bitmask CUmulticastObjectProp.handleTypes. Multicast objects can be released using the virtual memory management API cuMemRelease.

Parameters:

prop (intptr_t) – Properties of the multicast object to create.

Returns:

Value of handle returned.

Return type:

uint64_t

See also

cuMulticastCreate