类型¶
NCCL 库使用以下类型。
ncclResult_t¶
-
ncclResult_t
¶ 所有 NCCL 函数的返回值。可能的值为
-
ncclSuccess
¶ (
0
) 函数成功。
-
ncclUnhandledCudaError
¶ (
1
) 调用 CUDA 函数失败。
-
ncclSystemError
¶ (
2
) 系统调用失败。
-
ncclInternalError
¶ (
3
) 内部检查失败。这可能是由于 NCCL 中的错误或内存损坏造成的。
-
ncclInvalidArgument
¶ (
4
) 参数具有无效值。
-
ncclInvalidUsage
¶ (
5
) 对 NCCL 的调用不正确。这通常反映了编程错误。
-
ncclRemoteError
¶ (
6
) 调用失败,可能是由于网络错误或远程进程过早退出。
-
ncclInProgress
¶ (
7
) 通信器上的 NCCL 操作正在排队,并在后台进行。
每当函数返回错误(既不是 ncclSuccess 也不是 ncclInProgress)时,当环境变量 NCCL_DEBUG 设置为 “WARN” 时,NCCL 应该打印更详细的消息。
-
ncclDataType_t¶
-
ncclDataType_t
¶ NCCL 定义了以下整数和浮点数据类型。
-
ncclInt8
¶ 有符号 8 位整数
-
ncclChar
¶ 有符号 8 位整数
-
ncclUint8
¶ 无符号 8 位整数
-
ncclInt32
¶ 有符号 32 位整数
-
ncclInt
¶ 有符号 32 位整数
-
ncclUint32
¶ 无符号 32 位整数
-
ncclInt64
¶ 有符号 64 位整数
-
ncclUint64
¶ 无符号 64 位整数
-
ncclFloat16
¶ 16 位浮点数(半精度)
-
ncclHalf
¶ 16 位浮点数(半精度)
-
ncclFloat32
¶ 32 位浮点数(单精度)
-
ncclFloat
¶ 32 位浮点数(单精度)
-
ncclFloat64
¶ 64 位浮点数(双精度)
-
ncclDouble
¶ 64 位浮点数(双精度)
-
ncclBfloat16
¶ 16 位浮点数(bfloat16 格式的截断精度,CUDA 11 或更高版本)
-
ncclFloat8e4m3
¶ 8 位浮点数,4 位指数位,3 位尾数位 (CUDA >= 11.8 和 SM >= 90)
-
ncclFloat8e5m2
¶ 8 位浮点数,5 位指数位,2 位尾数位 (CUDA >= 11.8 和 SM >= 90)
-
ncclRedOp_t¶
ncclScalarResidence_t¶
ncclConfig_t¶
-
ncclConfig_t
¶ 用户可以设置的基于结构的配置,用于初始化通信器;新创建的配置必须由 NCCL_CONFIG_INITIALIZER 初始化。
-
NCCL_CONFIG_INITIALIZER
¶ 配置宏初始化器,必须将其分配给新创建的配置。
-
blocking
¶ 此属性可以设置为整数 0 或 1,分别表示非阻塞或阻塞通信器行为。阻塞是默认行为。
-
cgaClusterSize
¶ 设置 NCCL 启动的内核的协同组阵列 (CGA) 大小。此属性可以设置为 0 到 8 之间的整数,默认值为 4 (对于 sm90 架构) 和 0 (对于较旧的架构)。
-
minCTAs
¶ 设置 NCCL 应为每个内核使用的最小 CTA 数量。设置为正整数值,最大为 32。默认值为 1。
-
maxCTAs
¶ 设置 NCCL 应为每个内核使用的最大 CTA 数量。设置为正整数值,最大为 32。默认值为 32。
-
netName
¶ 指定 NCCL 应用于网络通信的网络模块名称。netName 的值必须与网络模块的名称完全匹配(不区分大小写)。NCCL 内部网络模块名称为 “IB”(通用 IB verbs)和 “Socket”(TCP/IP 套接字)。外部网络插件定义了自己的名称。默认值未定义,NCCL 将自动选择网络模块。
指定在通信器拆分期间是否与子通信器共享资源。将 splitShare 的值设置为 0 或 1。默认值为 0。当父通信器在 ncclCommInitRankConfig 期间使用 splitShare=1 创建时,子通信器可以在通信器拆分期间共享父通信器的内部资源。拆分的通信器属于同一族。当资源共享时,中止任何通信器都可能导致同一族中的其他通信器变得不可用。无论是否共享资源,用户都应始终中止/销毁所有不再需要的通信器,以释放资源。
-