跳到主要内容

通信器创建和管理函数

以下是由MCCL公开的API函数,用于创建和管理集体通信操作。

mcclGetLastError

const char* mcclGetLastError(mcclComm_t comm)

返回对应于 MCCL 中最后一次发生的错误的可读字符串。调用此函数不会清除错误。注意:mcclGetLastError 返回的字符串可能与当前调用无关,它也可能来自先前启动的异步操作的结果。

mcclGetErrorString

const char* mcclGetErrorString(mcclResult_t result)

返回对应于传递的错误代码的可读字符串。

mcclGetVersion

mcclResult_t mcclGetVersion(int* version)

mcclGetVersion 函数返回当前链接的MCCL库的版本号。存放于 version 指向的整数中。该整数按约定编码了 MCCL_MAJORMCCL_MINORMCCL_PATCH 三个字段。返回的版本号将与mccl.h中定义的MCCL_VERSION_CODE相同。MCCL版本号可以使用提供的宏进行比较;MCCL_VERSION(MAJOR,MINOR,PATCH)

mcclGetUniqueId

mcclResult_t mcclGetUniqueId(mcclUniqueId* uniqueId)

生成一个用于 mcclCommInitRank 的唯一 ID。创建通信器时,应先调用一次 mcclGetUniqueId 并将产生的 ID 分发给通信器中的所有 rank,然后再调用 mcclCommInitRank。uniqueId 应指向用户分配的 mcclUniqueId 对象。

mcclCommInitRank

mcclResult_t mcclCommInitRank(mcclComm_t* comm, int nranks, mcclUniqueId commId, int rank)

创建一个新的通信器(多线程/进程版本)。rank 必须在 0 和 nranks - 1 之间,并且在通信器域内是唯一的。每个 rank 都与一个MUSA设备关联,必须在调用mcclCommInitRank之前设置。mcclCommInitRank隐式地与其他 rank 同步,因此必须由不同的线程/进程调用,或在mcclGroupStart/mcclGroupEnd内使用。

mcclCommInitAll

mcclResult_t mcclCommInitAll(mcclComm_t* comms, int ndev, const int* devlist)

以阻塞方式创建一组通信器(单进程版本)。这是一个用于创建单进程通信器集合的便捷函数。函数在 comms 中返回一个包含 ndev 个新初始化通信器的数组。comms应预分配大小至少为 ndev * sizeof(mcclComm_t)。devlist 定义了与每个 rank 关联的MUSA设备。如果 devlist 为 NULL ,则按顺序使用前 ndev 个 MUSA 设备。

mcclCommDestroy

mcclResult_t mcclCommDestroy(mcclComm_t comm)

释放分配给通信器对象 comm 的资源。在销毁通信器之前等待任何未完成的操作。

mcclCommAbort

mcclResult_t mcclCommAbort(mcclComm_t comm)

mcclCommAbort 释放分配给通信器对象 comm 的资源,并在销毁通信器之前中止任何未完成的操作。所有活动的 rank 都需要调用此函数以成功中止MCCL通信器。更多用例请参考容错

mcclCommGetAsyncError

mcclResult_t mcclCommGetAsyncError(mcclComm_t comm, mcclResult_t* asyncError)

查询通信器异步操作的进度和潜在错误。如果通信器上发生错误,用户应该使用mcclCommAbort()销毁通信器。如果通信器上发生错误,不能假定在该通信器上已排队操作的完成性或正确性。

mcclCommCount

mcclResult_t mcclCommCount(const mcclComm_t comm, int* count)

返回MCCL通信器 comm 中的 rank 数量。

mcclCommCuDevice

mcclResult_t mcclCommCuDevice(const mcclComm_t comm, int* device)

返回与MCCL通信器 comm 关联的 MUSA 设备。

mcclCommUserRank

mcclResult_t mcclCommUserRank(const mcclComm_t comm, int* rank)

返回调用者在MCCL通信器 comm 中的 rank。