NCCL4Py v0.4.1 Release
Highlights
- Added host APIs for NCCL teams, rank translation, and device resource configuration.
- Expanded the experimental CuTe DSL device API with additional GIN operations, resource addressing, and direct support for host-created resources.
- Added live NCCL parameter access and improved version reporting.
New Features
Teams and Device Resources
-
Added APIs for inspecting communicator teams, translating ranks, and configuring resources for device-side communication.
APIs:
NCCLTeamCommunicator.team_world,Communicator.team_lsa,Communicator.team_railCommunicator.team_rank_to_world(),Communicator.team_rank_to_lsa()NCCLDevCommRequirements.teams,NCCLDevCommRequirements.resourcesNCCLDevCommRequirements.gin_traffic_classTeamRequirementLsaBarrierRequirement,GinBarrierRequirement,LLA2ARequirementMultimemHandle,LsaBarrierHandle,GinBarrierHandle,LLA2AHandleDevCommResource.multimem_handle(),DevCommResource.resource_handlesRegisteredWindowHandle.get_multimem_device_pointer()
CuTe DSL Device API
-
Added device-side rank translation, resource addressing, and additional GIN operations.
APIs:
DevComm.team_rank_to_world(),DevComm.team_rank_to_lsa()DevComm.resource_buffer_local_pointer()DevComm.resource_buffer_lsa_pointer()DevComm.resource_buffer_peer_pointer()DevComm.resource_buffer_multimem_pointer()DevComm.resource_buffer_lsa_multimem_pointer()Window.multimem_pointer(),Window.lsa_multimem_pointer()Gin.put_value(),Gin.get(),Gin.signal(),Gin.flush()Gin.read_signal(),Gin.reset_signal(),Gin.signal_shadow_pointer()Gin.read_counter(),Gin.wait_counter(),Gin.reset_counter()GIN_ALL_CONTEXTSThreadScope,GinResourceSharingModeDevComm.gin(..., resource_sharing_mode=...)opt_flagssupport forGin.put(),Gin.put_value(),Gin.get(), andGin.signal()
-
Host-created device communicators, registered windows, multimem handles, and LSA/GIN barrier handles can now be passed directly as arguments to
@cute.jitfunctions.
Runtime Inspection
-
Added live NCCL parameter access and consolidated version reporting under
nccl.core.APIs:
nccl.core.paramsnccl.core.dump_params()nccl.core.get_version()nccl.core.show_versions()
Examples and Documentation
- Added CuTe DSL examples covering teams, LSA all-reduce, multimem, GIN operations, barriers, and resource buffers.
Breaking Changes
nccl.epis no longer included in nccl4py. The NCCL EP Python bindings are now distributed separately from the NVIDIA/nccl-extensions repository.- Version helpers are no longer exported from the
ncclnamespace. Import them fromnccl.core. - Version reporting was consolidated:
nccl.core.get_version()now returnsVersionInfo.nccl.core.Version,get_lib_version(), andget_lib_path()were removed.VersionInfo.ncclwas renamed toVersionInfo.libnccl.VersionInfo.nccl_epwas removed.VersionInfo.nccl_bindingswas added.
Fixes and Enhancements
- Fixed the default release semantics of
Gin.put(). - Improved NCCL parameter error handling and string decoding.
Compatibility Notes
- The top-level
ncclPython package is now a PEP 420 namespace package. - The CuTe DSL device API remains experimental.
- The selected
libnccl_device.bcmust exactly match the NCCL version used by the bindings; nccl4py does not perform this check automatically. - When one thread manages multiple local ranks, call
Communicator.finalize()withinnccl.core.group().
Known Issues
-
The following CuTe DSL APIs require NCCL 2.31:
Gin.get()gin_session(),world_gin(),rail_gin(),hybrid_session(),world_hybrid()
-
CuTe DSL JIT compilation with CUDA 12 fails for kernels using the following APIs. CUDA 13 is not affected.
Affected APIs:
Gin.put(),Gin.put_value(),Gin.get(),Gin.signal(),Gin.flush()GinBarrierSession.sync(),BarrierSession.sync()