cupy.cuda.nccl.NcclCommunicator#
- class cupy.cuda.nccl.NcclCommunicator(int ndev, tuple commId, int rank)#
初始化一个由单个进程控制的设备的 NCCL 通信器。
- 参数:
ndev (int) – 要使用的 GPU 总数。
commId (tuple) – 由
get_unique_id()
返回的唯一 ID。rank (int) – 当前进程管理的 GPU 的 rank。
- 返回:
一个
NcclCommunicator
实例。- 返回类型:
注意
此方法用于在多进程环境中创建 NCCL 通信器,通常由 MPI 或
multiprocessing
管理。对于单个进程控制多个设备的情况,请改用initAll()
。另请参阅
方法
- abort(self)#
- allGather(self, intptr_t sendbuf, intptr_t recvbuf, size_t count, int datatype, intptr_t stream)#
- allReduce(self, intptr_t sendbuf, intptr_t recvbuf, size_t count, int datatype, int op, intptr_t stream)#
- bcast(self, intptr_t buff, size_t count, int datatype, int root, intptr_t stream)#
- broadcast(self, intptr_t sendbuff, intptr_t recvbuff, size_t count, int datatype, int root, intptr_t stream)#
- check_async_error(self)#
- destroy(self)#
- device_id(self)#
- static initAll(devices)#
初始化单个进程中多个设备的 NCCL 通信器。
- 参数:
devices (int 或 list of int) – 要使用的 GPU 数量或 GPU 列表。对于前一种情况,将使用前
devices
个 GPU。- 返回:
一个
NcclCommunicator
实例列表。- 返回类型:
注意
此方法用于在单个进程中创建一组 NCCL 通信器,每个通信器控制一个设备,示例如下
from cupy.cuda import nccl # Use 3 GPUs: #0, #2, and #3 comms = nccl.NcclCommunicator.initAll([0, 2, 3]) assert len(comms) == 3
在多进程设置中,请改用默认的初始化器。
另请参阅
- rank_id(self)#
- recv(self, intptr_t recvbuf, size_t count, int datatype, int peer, intptr_t stream)#
- reduce(self, intptr_t sendbuf, intptr_t recvbuf, size_t count, int datatype, int op, int root, intptr_t stream)#
- reduceScatter(self, intptr_t sendbuf, intptr_t recvbuf, size_t recvcount, int datatype, int op, int root, intptr_t stream)#
- send(self, intptr_t sendbuf, size_t count, int datatype, int peer, intptr_t stream)#
- size(self)#
- __eq__(value, /)#
返回 self==value。
- __ne__(value, /)#
返回 self!=value。
- __lt__(value, /)#
返回 self<value。
- __le__(value, /)#
返回 self<=value。
- __gt__(value, /)#
返回 self>value。
- __ge__(value, /)#
返回 self>=value。
属性
- comm#