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 实例。

返回类型:

NcclCommunicator

注意

此方法用于在多进程环境中创建 NCCL 通信器,通常由 MPI 或 multiprocessing 管理。对于单个进程控制多个设备的情况,请改用 initAll()

另请参阅

ncclCommInitRank

方法

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 (intlist of int) – 要使用的 GPU 数量或 GPU 列表。对于前一种情况,将使用前 devices 个 GPU。

返回:

一个 NcclCommunicator 实例列表。

返回类型:

list

注意

此方法用于在单个进程中创建一组 NCCL 通信器,每个通信器控制一个设备,示例如下

from cupy.cuda import nccl
# Use 3 GPUs: #0, #2, and #3
comms = nccl.NcclCommunicator.initAll([0, 2, 3])
assert len(comms) == 3

在多进程设置中,请改用默认的初始化器。

另请参阅

ncclCommInitAll

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#