跳到主要内容

环境变量

MCCL 提供了一套广泛的环境变量,用于特定用途的调整。

环境变量也可以在 /etc/mccl.conf 中静态设置(由管理员设置系统范围的值)或在 ${MCCL_CONF_FILE} 中设置。例如,这些文件可能包含:

MCCL_DEBUG=WARN
MCCL_SOCKET_IFNAME=ens1f0

环境变量分为两类。有些变量需要使 MCCL 遵循系统特定的配置,并且可以保留在脚本和系统配置中。"调试" 部分中列出的其他参数在生产环境中不应使用。

系统配置

MCCL_SOCKET_IFNAME

MCCL_SOCKET_IFNAME 变量指定用于通信的 IP 接口。

接受的值

定义为要由 MCCL 使用的接口的前缀列表。

可以提供多个前缀,用 , 符号分隔。

使用 ^ 符号,MCCL 将排除以该列表中任何前缀开头的接口。

要匹配(或不匹配)确切的接口名称,请以前缀字符串以 = 字符开头。

示例:

  • eth:使用所有以 eth 开头的接口,例如 eth0eth1...
  • =eth0:仅使用接口 eth0
  • =eth0,eth1:仅使用接口 eth0eth1
  • ^docker:不使用任何以 docker 开头的接口
  • ^=docker0:不使用接口 docker0

注意:默认情况下,回环接口(lo)和 docker 接口(docker*)除非没有其他接口可用,否则不会被选中。

MCCL_SOCKET_FAMILY

MCCL_SOCKET_FAMILY 变量允许用户强制 MCCL 仅使用 IPv4 或 IPv6 接口。

接受的值

设置为 AF_INET 以强制使用 IPv4,或 AF_INET6 以强制使用 IPv6。

MCCL_SOCKET_RETRY_CNT

MCCL_SOCKET_RETRY_CNT 变量指定在 ETIMEDOUTECONNREFUSEDEHOSTUNREACH 错误后,MCCL 重试建立套接字连接的次数。

接受的值

默认值为 34,任何正数值都是有效的。

MCCL_SOCKET_RETRY_SLEEP_MSEC

MCCL_SOCKET_RETRY_SLEEP_MSEC 变量指定在第一次错误后,MCCL 在重试建立套接字连接前等待的毫秒数。

接受的值

默认值为 100 毫秒,任何正数值都是有效的。

MCCL_SOCKET_NTHREADS

MCCL_SOCKET_NTHREADS 变量指定每个网络连接使用的 CPU 辅助线程数。增加此值可能会提高套接字传输性能,但代价是更高的 CPU 使用率。

接受的值

1 到 16。默认值为 2。

MCCL_SOCKET_NTHREADSMCCL_NSOCKS_PERTHREAD 的乘积不能超过 64。

MCCL_NSOCKS_PERTHREAD

MCCL_NSOCKS_PERTHREAD 变量指定每个套接字传输辅助线程打开的套接字数。

接受的值

默认值为 8。

MCCL_SOCKET_RCVBUF

MCCL_SOCKET_RCVBUF 变量指定套接字接收缓冲区大小。

接受的值

默认值为 -1(使用系统默认值)。

MCCL_SOCKET_SNDBUF

MCCL_SOCKET_SNDBUF 变量指定套接字发送缓冲区大小。

接受的值

默认值为 -1(使用系统默认值)。

MCCL_SOCKET_INLINE

MCCL_SOCKET_INLINE 变量指定套接字内联传输大小。

接受的值

默认值为 128。

MCCL_SOCKET_MIN_TASKSIZE

MCCL_SOCKET_MIN_TASKSIZE 变量指定套接字最小任务大小。

接受的值

默认值为 65536。

MCCL_CROSS_NIC

MCCL_CROSS_NIC 变量控制 MCCL 是否允许环/树使用不同的 NIC。

接受的值

  • 0:始终使用相同的 NIC 进行相同的环/树,以避免交叉网络轨道
  • 1:允许为相同的环/树使用不同的 NIC
  • 2:(默认)尝试为相同的环/树使用相同的 NIC,但如果使用不同的 NIC 可以带来更好的性能,则仍允许使用不同的 NIC

MCCL_IB_HCA

MCCL_IB_HCA 变量指定用于通信的主机通道适配器(RDMA)接口。

接受的值

列表以逗号分隔;可以使用 : 符号指定端口号。可选前缀 ^ 表示列表是排除列表。第二个可选前缀 = 表示令牌是确切名称。

示例:

  • mlx5:使用所有以 mlx5 开头的卡的所有端口
  • =mlx5_0:1,mlx5_1:1:使用卡 mlx5_0mlx5_1 的端口 1
  • ^=mlx5_1,mlx5_4:不使用卡 mlx5_1mlx5_4

MCCL_IB_TIMEOUT

MCCL_IB_TIMEOUT 变量控制 InfiniBand Verbs 超时。

超时计算为 4.096 µs * 2 ^ timeout

接受的值

MCCL 使用的默认值为 20。值可以是 1-31。

MCCL_IB_RETRY_CNT

MCCL_IB_RETRY_CNT 变量控制 InfiniBand 重试计数。

接受的值

默认值为 7。

MCCL_IB_GID_INDEX

MCCL_IB_GID_INDEX 变量定义在 RoCE 模式中使用的全局 ID 索引。

接受的值

默认值为 -1。

MCCL_IB_ADDR_FAMILY

MCCL_IB_ADDR_FAMILY 变量定义与 MCCL 动态选择的 infiniband GID 相关的 IP 地址族。

接受的值

默认值为 "AF_INET"。

MCCL_IB_ADDR_RANGE

MCCL_IB_ADDR_RANGE 变量定义 MCCL 在 MCCL_IB_GID_INDEX 未设置时动态选择的有效 GID 范围。

接受的值

可以使用无类域间路由(CIDR)格式为 IPv4 和 IPv6 族定义 GID 范围。

MCCL_IB_ROCE_VERSION_NUM

MCCL_IB_ROCE_VERSION_NUM 变量定义与 MCCL 动态选择的 infiniband GID 相关的 RoCE 版本。

接受的值

默认值为 2。

MCCL_IB_SL

定义 InfiniBand 服务级别。

接受的值

默认值为 -1。

MCCL_IB_TC

定义 InfiniBand 流量类别字段。

接受的值

默认值为 -1。

MCCL_IB_FIFO_TC

定义 InfiniBand 控制消息的流量类别。

接受的值

默认值由 MCCL_IB_TC 设置的流量类别,如果未设置,则默认为 -1。

MCCL_IB_PKEY

定义 InfiniBand Partition Key。

接受的值

默认值为 0。

MCCL_IB_USE_INLINE

启用 InfiniBand 内联发送。

接受的值

默认值为 0。

MCCL_IB_RETURN_ASYNC_EVENTS

IB 事件作为警告报告给用户。如果启用,MCCL 还将在致命的 IB 异步事件上停止 IB 通信。

接受的值

默认值为 1,设置为 0 以禁用。

MCCL_IB_AR_THRESHOLD

阈值,超过此阈值时我们将以单独的消息发送 InfiniBand 数据,这可以利用自适应路由。

接受的值

字节大小,默认值为 8192。

MCCL_IB_QPS_PER_CONNECTION

两个 rank 之间每个连接使用的 IB 队列对数。

接受的值

1 到 128 之间的数字,默认为 1。

MCCL_IB_SPLIT_DATA_ON_QPS

此参数控制当我们创建多个队列对时如何使用它们。

接受的值

0 或 1。默认为 0。

MCCL_IB_ADAPTIVE_ROUTING

启用 IB Verbs 传输的自适应路由能力数据传输。

接受的值

默认在 IB 网络上启用(1),在 RoCE 网络上禁用(0)。

MCCL_IB_ECE_ENABLE

在 IB/RoCE Verbs 网络上启用增强型连接建立(ECE)。

接受的值

默认为启用(1)。

MCCL_IB_PCI_RELAXED_ORDERING

启用 IB Verbs 传输的 Relaxed Ordering。

接受的值

设置为 2 以在可用时自动使用。设置为 1 以强制使用。设置为 0 以禁用。默认为 2。

MCCL_IB_MERGE_NICS

启用 MCCL 将双端口 IB NIC 合并为单个逻辑网络设备。

接受的值

默认为 1(启用),设置为 0 以禁用。

MCCL_IB_MERGE_VFS

启用 MCCL 合并虚拟功能(VF)。

接受的值

默认为 1(启用)。

MCCL_IB_DATA_DIRECT

启用 IB 数据直接传输。

接受的值

默认值为 1(启用)。

MCCL_IB_MQP_RETRY_CNT

IB MQP 重试计数。

接受的值

默认值为 34。

MCCL_IB_MQP_RETRY_SLEEP_MSEC

IB MQP 重试间隔(毫秒)。

接受的值

默认值为 100。

MCCL_OOB_NET_ENABLE

变量 MCCL_OOB_NET_ENABLE 启用 MCCL 网络用于带外通信。

接受的值

将变量设置为 0 以禁用,设置为 1 以启用。

MCCL_OOB_NET_IFNAME

如果启用了 MCCL 网络用于带外通信,MCCL_OOB_NET_IFNAME 变量指定要使用的网络接口。

接受的值

定义要由 MCCL 用于带外通信的接口。

MCCL_NET

强制 MCCL 使用特定网络。

接受的值

MCCL_NET 的值必须与使用的 MCCL 网络的名称完全匹配(不区分大小写)。内部网络名称为 "IB"(通用 IB 动词)和 "Socket"(TCP/IP 套接字)。

MCCL_NET_PLUGIN

将其设置为后缀字符串或库名称,以在多个 MCCL 网络插件中进行选择。

接受的值

插件后缀、插件文件名或 "none"。

MCCL_TUNER_PLUGIN

将其设置为后缀字符串或库名称,以在多个 MCCL 调优插件中进行选择。

接受的值

插件后缀、插件文件名或 "none"。

MCCL_PROFILER_PLUGIN

将其设置为后缀字符串或库名称,以在多个 MCCL 分析器插件中进行选择。

接受的值

插件后缀、插件文件名或 "none"。

MCCL_ENV_PLUGIN

指定环境变量插件。

接受的值

插件路径或名称。

MCCL_IGNORE_CPU_AFFINITY

MCCL_IGNORE_CPU_AFFINITY 变量可用于使 MCCL 忽略作业提供的 CPU 亲和性,而只使用 GPU 亲和性。

接受的值

默认为 0,设置为 1 以使 MCCL 忽略作业提供的 CPU 亲和性。

MCCL_CONF_FILE

MCCL_CONF_FILE 变量允许用户指定一个包含静态配置的文件。

接受的值

配置文件路径。

MCCL_HOSTID

指定主机 ID。

接受的值

整数,默认根据系统信息自动计算。

MCCL_COMM_ID

指定通信器 ID。

接受的值

网络地址,格式为 ip:port

MCCL_SET_THREAD_NAME

为 MCCL CPU 线程赋予更有意义的名称,以便于调试和分析。

接受的值

0 或 1。默认为 0(禁用)。

MCCL_SET_CPU_STACK_SIZE

设置 CPU 线程堆栈大小。

接受的值

默认值为 1(启用)。

MCCL_SET_STACK_SIZE

将 MUSA 内核堆栈大小设置为所有 MCCL 内核中的最大堆栈大小。

接受的值

0 或 1。默认值为 0(禁用)。

MCCL_WORK_FIFO_BYTES

工作 FIFO 缓冲区大小(字节)。

接受的值

默认值为 1048576(1MB)。

MCCL_WORK_ARGS_BYTES

工作参数缓冲区大小(字节)。

接受的值

默认值为 INT64_MAX。

MCCL_PROXY_CPUSET

指定代理线程的 CPU 亲和性。

接受的值

CPU 列表字符串。

MCCL_REPORT_CONNECT_PROGRESS

报告连接建立进度。

接受的值

默认值为 0(禁用)。

MCCL_CONNECT_ROUND_MAX_PEERS

每轮连接的最大对等节点数。

接受的值

默认值为 128。

MCCL_PROGRESS_APPENDOP_FREQ

进度追加操作频率。

接受的值

默认值为 8。

调试

MCCL_DEBUG

MCCL_DEBUG 变量控制从 MCCL 显示的调试信息。

接受的值

  • VERSION - 在程序开始时打印 MCCL 版本
  • WARN - 每当任何 MCCL 调用出错时,打印明确的 error 消息
  • INFO - 打印调试信息
  • TRACE - 打印可重放的跟踪信息,每次调用都会打印

MCCL_DEBUG_FILE

MCCL_DEBUG_FILE 变量将 MCCL 调试日志输出定向到文件。

接受的值

默认输出文件是 stdout

MCCL_DEBUG_SUBSYS

MCCL_DEBUG_SUBSYS 变量允许用户根据子系统过滤 MCCL_DEBUG=INFO 输出。

接受的值

默认值为 INIT,BOOTSTRAP,ENV。

支持的子系统名称有 INIT、COLL、P2P、SHM、NET、GRAPH、TUNING、ENV、ALLOC、CALL、PROXY、BOOTSTRAP、REG、PROFILE、RAS 和 ALL。

MCCL_DEBUG_TIMESTAMP_FORMAT

MCCL_DEBUG_TIMESTAMP_FORMAT 变量允许用户更改打印调试日志消息时使用的格式。

接受的值

默认为 [%F %T],即 [YYYY-MM-DD HH:MM:SS]

MCCL_DEBUG_TIMESTAMP_LEVELS

MCCL_DEBUG_TIMESTAMP_LEVELS 变量允许用户设置哪些日志行根据日志级别获得时间戳。

接受的值

默认情况下,为 WARN 启用时间戳,但为其余级别禁用。

MCCL_WARN_ENABLE_DEBUG_INFO

在警告中启用调试信息。

接受的值

默认启用。

内存和注册

MCCL_BUFFSIZE

MCCL_BUFFSIZE 变量控制 MCCL 在 GPU 对之间通信数据时使用的缓冲区大小。

接受的值

默认为 4194304(4 MiB)。值是整数,以字节为单位。建议使用 2 的幂。

MCCL_LL_BUFFSIZE

MCCL_LL_BUFFSIZE 变量控制低延迟(LL)协议的缓冲区大小。

接受的值

默认值为 -2(自动选择)。

MCCL_MUMEM_ENABLE

在 MCCL 中使用 MUSA muMem* 函数分配内存。

接受的值

0 或 1。,如果系统支持,则默认自动启用。

MCCL_MUMEM_HOST_ENABLE

在 MCCL 中使用 MUSA muMem* 函数分配主机内存。

接受的值

0 或 1。,默认为 1。

MCCL_MUMEM_ENABLE

启用 MUMEM 内存分配。

接受的值

默认值为 -1(自动检测)。

MCCL_MUMEM_HOST_ENABLE

启用 MUMEM 主机内存分配。

接受的值

默认值为 -1(自动检测)。

MCCL_DMABUF_ENABLE

启用使用 Linux dma-buf 子系统进行 GPU Direct RDMA 缓冲区注册。

接受的值

0 或 1。默认值为 1(启用)。

MCCL_GDRCOPY_ENABLE

启用 GDRCopy 用于 GPU 内存拷贝。

接受的值

默认值为 0(禁用)。

MCCL_GDRCOPY_FIFO_ENABLE

启用 GDRCopy FIFO 模式。

接受的值

默认值为 1(启用)。

MCCL_GDRCOPY_FLUSH_ENABLE

启用 GDRCopy 刷新操作。

接受的值

默认值为 0(禁用)。

MCCL_GDRCOPY_SYNC_ENABLE

启用 GDRCopy 同步操作。

接受的值

默认值为 1(启用)。

MCCL_LOCAL_REGISTER

当用户显式调用 mcclCommRegister 时启用用户本地缓冲区注册。

接受的值

0 或 1。默认值为 1(启用)。

MCCL_LEGACY_MUSA_REGISTER

通过 musaMalloc 分配的 musa 缓冲区是遗留缓冲区。MCCL 默认禁用遗留缓冲区注册。

接受的值

0 或 1。默认值为 0(禁用)。

MCCL_GRAPH_REGISTER

在 MCCL 调用被 MUSA 图捕获时启用用户缓冲区注册。

接受的值

0 或 1。默认值为 1(启用)。

MCCL_SINGLE_PROC_MEM_REG_ENABLE

启用单进程内存注册优化。

接受的值

默认值为 0(禁用)。

MCCL_ALIGNMENT_CHECK

启用内存对齐检查。

接受的值

默认值为 1(启用)。

MCCL_CACHE_ALIGNMENT

缓存对齐大小。

接受的值

默认值为 CACHE_LINE_SIZE。

算法和协议

MCCL_ALGO

MCCL_ALGO 变量定义 MCCL 将使用的算法。

接受的值

算法的逗号分隔列表(不区分大小写):Ring、Tree、CollnetChain、CollnetDirect、NVLS、NVLSTree、PAT。

MCCL_PROTO

MCCL_PROTO 变量定义 MCCL 被允许使用的协议。

接受的值

协议的逗号分隔列表:LL、Simple。

MCCL_NTHREADS

MCCL_NTHREADS 变量设置每个 MUSA 块的 MUSA 线程数。

接受的值

允许的值是 64、128、256 和 512。默认值为 -2(自动选择)。

MCCL_MAX_NCHANNELS

MCCL_MAX_NCHANNELS 变量限制 MCCL 可以使用的通道数量。

接受的值

任何大于或等于 1 的值。默认值为 -2(自动选择)。

MCCL_MIN_NCHANNELS

MCCL_MIN_NCHANNELS 变量控制 MCCL 使用的最小通道数量。

接受的值

默认值为 -2(自动选择)。

MCCL_MAX_NRINGS / MCCL_MIN_NRINGS

(已弃用,请使用 MCCL_MAX_NCHANNELS / MCCL_MIN_NCHANNELS)

MCCL_MAX_CTAS

设置 MCCL 应该使用的 CTA 的最大数量。

接受的值

设置为高达 32 的正整数值。默认值为 -2(自动选择)。

MCCL_MIN_CTAS

设置 MCCL 应该使用的 CTA 的最小数量。

接受的值

设置为高达 32 的正整数值。默认值为 -2(自动选择)。

MCCL_CGA_CLUSTER_SIZE

设置 MUSA 合作组数组(CGA)集群大小。

接受的值

0 到 8。默认值为 -2(自动选择)。

MCCL_CTA_POLICY

CTA 调度策略。

接受的值

  • 0:默认策略
  • 1:效率优先
  • 2:零拷贝策略

默认值为 -2(未定义)。

MCCL_NCHANNELS_PER_NET_PEER

每个网络对等节点的通道数。

接受的值

默认值为 -2(自动选择)。

MCCL_MTLS_ENABLE

启用 MTL 传输层支持。

接受的值

默认值为 2(自动检测)。

MCCL_MTLS_NCHANNELS

MTL 传输层通道数。

接受的值

默认值为 -2(自动选择)。

MCCL_MTLS_CHUNKSIZE

MTL 传输层块大小。

接受的值

默认值为 131072。

MCCL_MTLSTREE_MAX_CHUNKSIZE

MTLSTree 算法最大块大小。

接受的值

默认值为 -2(自动选择)。

MCCL_THREAD_THRESHOLDS

线程阈值配置。

接受的值

配置字符串。

MCCL_PAT_ENABLE

启用 PAT 算法。

接受的值

默认值为 2(自动检测)。

MCCL_COLLNET_ENABLE

启用 CollNet 插件的使用。

接受的值

默认为 0,设置为 1 以启用。

MCCL_COLLNET_NODE_THRESHOLD

节点数量的阈值,低于此阈值时不会启用 CollNet。

接受的值

默认为 2。

P2P 和共享内存

MCCL_P2P_DISABLE

MCCL_P2P_DISABLE 变量禁用点对点(P2P)传输。

接受的值

设置为 1 以禁用直接 GPU 到 GPU(P2P)通信。

MCCL_P2P_LEVEL

MCCL_P2P_LEVEL 变量允许用户精确控制何时使用 GPU 之间的点对点(P2P)传输。

接受的值

  • LOC:从不使用 P2P(始终禁用)
  • NVL:当 GPU 通过 NVLink 连接时使用 P2P
  • PIX:当 GPU 在同一 PCI 开关上时使用 P2P
  • PXB:当 GPU 通过 PCI 开关连接时使用 P2P
  • PHB:当 GPU 在同一 NUMA 节点上时使用 P2P
  • SYS:在 NUMA 节点之间使用 P2P

MCCL_P2P_DIRECT_DISABLE

MCCL_P2P_DIRECT_DISABLE 变量禁止 MCCL 通过 P2P 在同一进程的 GPU 之间直接访问用户缓冲区。

接受的值

设置为 1 以禁用跨 GPU 的直接用户缓冲区访问。

MCCL_P2P_READ_ENABLE

启用 P2P 读取操作。

接受的值

默认值为 1(启用)。

MCCL_P2P_USE_MUSA_MEMCPY

使用 MUSA memcpy 进行 P2P 传输。

接受的值

默认值为 0(禁用)。

MCCL_P2P_LL_THRESHOLD

P2P 操作使用 LL 协议的阈值。

接受的值

默认值为 2048。

MCCL_P2P_NET_CHUNKSIZE

MCCL_P2P_NET_CHUNKSIZE 控制 mcclSend/mcclRecv 操作通过网络发送的消息大小。

接受的值

默认为 131072(128 K)。

MCCL_P2P_PCI_CHUNKSIZE

P2P PCI 传输块大小。

接受的值

默认值为 131072。

MCCL_P2P_MTL_CHUNKSIZE

P2P MTL 传输块大小。

接受的值

默认值为 524288。

MCCL_SHM_DISABLE

MCCL_SHM_DISABLE 变量禁用共享内存(SHM)传输。

接受的值

设置为 1 以禁用通过共享内存通信。

MCCL_SHM_USE_MUSA_MEMCPY

使用 MUSA memcpy 进行共享内存传输。

接受的值

默认值为 0(禁用)。

MCCL_SHM_MEMCPY_MODE

共享内存拷贝模式。

接受的值

默认值为 1。

MCCL_SHM_LOCALITY

共享内存局部性设置。

接受的值

默认值为 2。

MCCL_ALLOC_P2P_NET_LL_BUFFERS

为所有 P2P 网络连接分配专用 LL 缓冲区。

接受的值

0 或 1。默认值为 0(禁用)。

MCCL_MIN_P2P_NCHANNELS

P2P 传输最小通道数。

接受的值

默认值为 1。

MCCL_MAX_P2P_NCHANNELS

P2P 传输最大通道数。

接受的值

默认值为 MAXCHANNELS。

GPU Direct RDMA

MCCL_NET_GDR_LEVEL

MCCL_NET_GDR_LEVEL 变量允许用户精确控制何时使用 NIC 和 GPU 之间的 GPU Direct RDMA。

接受的值

  • LOC:从不使用 GPU Direct RDMA
  • PIX:当 GPU 和 NIC 在同一 PCI 开关上时使用
  • PXB:当 GPU 和 NIC 通过 PCI 开关连接时使用
  • PHB:当 GPU 和 NIC 在同一 NUMA 节点上时使用
  • SYS:即使在 NUMA 节点之间的 SMP 互连上也使用

MCCL_NET_GDR_READ

MCCL_NET_GDR_READ 变量启用在发送数据时使用 GPU Direct RDMA。

接受的值

0 或 1。对于基于 NVLink 的平台默认启用。

MCCL_NET_GDR_C2C

MCCL_NET_GDR_C2C 变量启用通过连接到 CPU 的 NIC 发送数据时的 GPU Direct RDMA。

接受的值

0 或 1。默认值为 1。

MCCL_GDR_FLUSH_DISABLE

禁用 GDR 刷新操作。

接受的值

默认值为 0。

通信器配置

MCCL_COMM_BLOCKING

MCCL_COMM_BLOCKING 变量控制是否允许 MCCL 调用被阻塞。

接受的值

0 或 1。1 表示阻塞通信器,0 表示非阻塞通信器。默认未定义。

MCCL_LAUNCH_MODE

MCCL_LAUNCH_MODE 变量控制 MCCL 如何启动 MUSA 内核。

接受的值

默认值为 PARALLEL。设置为 GROUP 将使用合作组。

MCCL_LAUNCH_ORDER_IMPLICIT

隐式地对同一设备上的不同通信器的 MCCL 操作使用主机程序顺序进行排序。

接受的值

默认为 0(禁用);设置为 1 以启用。

MCCL_LAUNCH_RACE_FATAL

尝试捕获竞相启动到同一设备的主机线程,如果是这样,则返回致命错误。

接受的值

默认为 1(启用);设置为 0 以禁用。

MCCL_RUNTIME_CONNECT

在运行时动态连接对等方。

接受的值

默认为 1,设置为 0 以在初始化阶段连接对等方。

MCCL_GROUP_MUSA_STREAM

为组操作使用 MUSA stream。

接受的值

默认启用。

MCCL_COMM_SPLIT_SHARE_RESOURCES

通信器拆分资源共享设置。

接受的值

默认值为 -2(未定义)。

MCCL_COMM_SHRINK_SHARE_RESOURCES

通信器收缩资源共享设置。

接受的值

默认值为 -2(未定义)。

MCCL_CREATE_THREAD_CONTEXT

为每个线程创建独立上下文。

接受的值

默认值为 0(禁用)。

拓扑和图

MCCL_TOPO_FILE

在检测拓扑之前加载的 XML 文件的路径。

接受的值

描述部分或全部拓扑的可访问文件的路径。

MCCL_TOPO_DUMP_FILE

在检测后转储 XML 拓扑的文件路径。

接受的值

将被创建或覆盖的文件的路径。

MCCL_TOPO_ENHANCE

拓扑增强功能。

接受的值

默认值为 0。

MCCL_TOPO_DUMP_FILE_RANK

拓扑转储文件的 rank。

接受的值

默认值为 0。

MCCL_GRAPH_FILE

图定义文件路径。

接受的值

文件路径。

MCCL_GRAPH_DUMP_FILE

图转储文件路径。

接受的值

文件路径。

MCCL_GRAPH_DUMP_FILE_RANK

图转储文件的 rank。

接受的值

默认值为 0。

MCCL_GRAPH_HELPER_DISABLE

禁用图辅助功能。

接受的值

默认值为 0。

MCCL_GRAPH_MIXING_SUPPORT

启用/禁用对来自并行 MUSA 图或 MUSA 图和非捕获 MCCL 调用的多个未完成 MCCL 调用的支持。

接受的值

0 或 1。默认值为 0。

MCCL_WIN_ENABLE

启用窗口注册功能。

接受的值

默认值为 1(启用)。

MCCL_WIN_STRIDE

窗口步幅大小。

接受的值

默认值为 -1。

MCCL_IGNORE_DISABLED_P2P

忽略禁用的 P2P 访问。

接受的值

默认值为 0。

NVB/PXN

MCCL_NVB_DISABLE

禁用通过中间 GPU 通过 NVLink 的节点内通信。

接受的值

默认为 0,设置为 1 以禁用。

MCCL_NVB_PRECONNECT

启用 NVB 预连接。

接受的值

默认值为 1(启用)。

MCCL_PXN_DISABLE

禁用使用非本地 NIC 进行节点间通信,使用 NVLink 和中间 GPU。

接受的值

默认为 1,设置为 0 以启用。

MCCL_PXN_C2C

启用 PXN C2C 支持。

接受的值

默认值为 1(启用)。

MCCL_P2P_PXN_LEVEL

控制在哪些情况下 PXN 被用于发送/接收操作。

接受的值

  • 0:禁用 PXN
  • 1:当目标的首选 NIC 无法通过 PCI 开关访问时启用
  • 2:始终使用 PXN(默认)

MCCL_NET_SHARED_BUFFERS

允许在节点间点对点通信中使用共享缓冲区。

接受的值

默认为 1(启用)。

MCCL_NET_SHARED_COMMS

在 PXN 的上下文中重用相同的连接。

接受的值

默认为 1(启用)。

MCCL_NET_FORCE_FLUSH

强制网络刷新。

接受的值

默认值为 0。

MCCL_NET_DISABLE_INTRA

禁用节点内网络传输。

接受的值

默认值为 1。

MCCL_NET_OVERHEAD

网络开销系数。

接受的值

默认值为 -2(自动选择)。

MCCL_NET_OPTIONAL_RECV_COMPLETION

启用可选接收完成。

接受的值

默认值为 1。

MNMTL(多节点 MTL)

MCCL_MNMTL_ENABLE

启用 MNMTL(多节点 MTL)支持。

接受的值

默认值为 2(自动检测)。

MCCL_MNMTL_SCATTER_NETS_ENABLE

启用 MNMTL 分散网络。

接受的值

默认值为 1(启用)。

MCCL_MNMTL_RAIL_PER_HOST

每主机的 MNMTL 轨道数。

接受的值

默认值为 0。

MCCL_MNMTL_UUID

MNMTL UUID。

接受的值

默认值为 -1。

MCCL_MNMTL_CLIQUE_ID

MNMTL 集群 ID。

接受的值

默认值为 -1。

GIN(GPU 内部网络)

MCCL_GIN_ENABLE

启用 GIN(GPU 内部网络)。

接受的值

默认值为 1(启用)。

MCCL_GIN_TYPE

GIN 类型选择。

接受的值

默认值为 -1(自动选择)。

MCCL_GIN_NCONTEXTS

GIN 上下文数量。

接受的值

默认值为 IMCCL_GIN_MAX_CONTEXTS。

MCCL_GIN_PROXY_QUEUE_SIZE

GIN 代理队列大小。

接受的值

默认值为 -1。

MCCL_GIN_SIGNAL_POOL_SIZE

GIN 信号池大小。

接受的值

默认值为 65536。

MCCL_GIN_COUNTER_POOL_SIZE

GIN 计数器池大小。

接受的值

默认值为 65536。

MCCL_GIN_GDAKI_NIC_HANDLER

GIN GDAKI NIC 处理器选择。

接受的值

默认值为 0。

MCCL_GIN_GDAKI_QP_DEPTH

GIN GDAKI QP 深度。

接受的值

默认值为 128。

MCCL_GIN_ERROR_QUERY_SEC

GIN 错误查询间隔(秒)。

接受的值

默认值为 10。

RAS(可靠性、可用性和服务性)

MCCL_RAS_ENABLE

启用 MCCL 的可靠性、可用性和服务性(RAS)子系统。

接受的值

默认为 1(启用);设置为 0 以禁用。

MCCL_RAS_ADDR

指定 RAS 子系统将监听客户端连接的套接字的 IP 地址和端口号。

接受的值

默认为 localhost:28028

MCCL_RAS_TIMEOUT_FACTOR

指定要应用于 RAS 子系统所有超时的乘数因子。

接受的值

默认为 1。

其他调优参数

MCCL_MEM_SYNC_DOMAIN

为 MCCL 内核设置默认的内存同步域。

接受的值

默认值为 musaLaunchMemSyncDomainRemote(1)。

MCCL_L1_SHARED_MEMORY_CARVEOUT

L1 共享内存分配。

接受的值

默认值为 0。

MCCL_CHUNK_SIZE

通信块大小。

接受的值

默认值为 0。

启用 MTLink 利用率中心调度。

接受的值

默认值为 -2。

MCCL_UNPACK_DOUBLE_NCHANNELS

解包双通道数。

接受的值

默认值为 1。

MCCL_NETDEVS_POLICY

网络设备策略。

接受的值

配置字符串。

MCCL_NET_FORCE_MERGE

强制网络设备合并。

接受的值

配置字符串。

MCCL_NET_MERGE_LEVEL

网络设备合并级别。

接受的值

配置字符串。

MCCL_SYM_KERNEL

对称内核配置。

接受的值

配置字符串。

MCCL_NET_PLUGIN_REF_COUNT

网络插件引用计数。

接受的值

默认值为 0。

MCCL_PROXY_APPEND_BATCH_SIZE

代理追加批处理大小。

接受的值

默认值为 16。

MCCL_PROXY_DUMP_SIGNAL

代理信号转储级别。

接受的值

默认值为 -1。

MCCL_CHECK_POINTERS

MCCL_CHECK_POINTERS 变量启用每个集体调用上的 MUSA 内存指针检查。

接受的值

默认为 0,设置为 1 以启用检查。

MCCL_MTTX_DISABLE

禁用 MTTX 分析。

接受的值

默认值为 0(启用)。

MCCL_STAGGER_RATE

UID 交错速率。

接受的值

默认值为 7000。

MCCL_STAGGER_THRESHOLD

UID 交错阈值。

接受的值

默认值为 256。

MCCL_IB_WARN_RAIL_LOCAL

警告本地 IB 轨道问题。

接受的值

默认值为 0。

MCCL_ACE_LARGE_SIZE_THRESHOLD

ACE 大消息阈值。

接受的值

默认值为 1073741824。

MCCL_P2P_SCHEDULE_GROUP_SIZE

P2P 调度组大小。

接受的值

默认值为 IMCCL_MAX_DEV_WORK_P2P_PER_BATCH。