通信器的创建和管理函数
以下函数是NCCL公开的公共API,用于创建和管理集合通信操作。
ncclGetLastError
返回NCCL中最后发生的错误的可读字符串。注意:调用此函数不会清除错误。当前未使用comm参数,可以设置为NULL。
ncclGetVersion
ncclGetVersion函数返回当前链接的NCCL库的版本号。NCCL版本号以整数形式返回,包括NCCL_MAJOR
、
NCCL_MINOR
和 NCCL_PATCH
级别。返回的版本号与nccl.h中定义的NCCL_VERSION_CODE
相同。可以使用提供的宏比较NCCL版本号;
NCCL_VERSION(MAJOR,MINOR,PATCH)
ncclGetUniqueId
生成一个在ncclCommInitRank中使用的Id。创建通信器时应调用一次ncclGetUniqueId,并在调用ncclCommInitRank之前将Id分发给通信器中的所有rank。uniqueId应指向由用户分配的ncclUniqueId对象。
ncclCommInitRank
创建一个新的通信器(多线程/多进程版本)。rank必须介于0和nranks-1之间,并在通信器中唯一。每个rank都与一个CUDA设备相关联,在调用ncclCommInitRank之前必须设置它。ncclCommInitRank隐式地与其他rank同步,因此必须由不同的线程/进程调用,或者使用ncclGroupStart/ncclGroupEnd。
ncclCommInitAll
以阻塞方式创建一个通信器集(单进程版本)。这是一个方便函数,用于创建一个单进程的通信器集。在comms中返回ndev个新初始化的通信器。comms应预先分配大小至少为ndev*sizeof(ncclComm_t
)的空间。devlist定义与每个rank关联的CUDA设备。如果devlist为NULL,则使用前ndev个CUDA设备,按顺序使用。
ncclCommInitRankConfig
该函数与ncclCommInitRank的工作方式相同,但接受一个配置参数,用于配置通信器的额外属性。如果将配置设置为NULL,则通信器将具有默认行为,就像调用ncclCommInitRank一样。
有关配置选项的详细信息,请参阅init-rank-config
部分。