4. 环境变量
4.1. 推荐环境变量
常规情况下,使用MCCL不需要设置环境变量。如曦云C500/C550等x86机型。
针对下述场景,需要单独设置环境变量来满足特定需求。
4.1.1. 多机环境
集群多机网络如果是常规配置,通常不需要配置网络相关的环境变量。为了屏蔽网络设置差异,可以设置如下环境变量简化配置,保障多机正常运行。
export MCCL_IB_HCA=mlx5_0,mlx5_1(可用的计算网卡网口,不包括存储网卡网口)
export MCCL_NET_GDR_LEVEL=SYS
export MCCL_CROSS_NIC=1
4.1.2. 极致性能
可设置如下环境变量提升通信性能,尤其是运行MCCL性能测试时。部分环境变量会对其他性能产生一些影响,在大模型中使用需要权衡。
UMD环境变量,降低通信的CPU时延,但会增加CPU负载:
export FORCE_ACTIVE_WAIT=2
提升MCCL使用Cache的性能,但可能会对BLAS Kernel产生性能影响:
export MCCL_FAST_WRITE_BACK=1
提升MCCL使用Cache的性能,但可能会对BLAS Kernel产生性能影响:
export MCCL_EARLY_WRITE_BACK=15
开启PCIe链路。OAM机型上默认关闭PCIe链路,测试bench perf可以开启以提升性能:
export MCCL_PCIE_BUFFER_MODE=1
开启MCCL性能测试中的All to All性能优化:
export MCCL_OPTIMIZATION_A2A=1
UMD环境变量,可降低GPU计算时延,取消GPU任务完成后不必要的刷新L2缓存行为,对小尺寸内核(small size kernel)的时延优化约1 us:
export MACA_LAUNCH_MODE=1
4.1.3. Arm服务器
Cascade拓扑(天固服务器):
export MACA_VISIBLE_DEVICES=0,1,6,7,2,3,4,5
Balance topo单机内使用网卡做8卡通信:
export MCCL_SHM_DISABLE=1
通过NUMA节点绑定核心的方式来提高性能,需要以下变量:
export MCCL_IGNORE_CPU_AFFINITY=1
4.1.4. 异构集群
沐曦和其他厂商GPU构建异构集群:
export MCCL_EXT_CCL_ENABLE=1
指定异构插件:
export MCCL_HC_PLUGIN=${your_plugin_dynamic_library_path}
4.1.5. 虚拟化场景
关闭PCIe。开启虚拟机需要开启ACS,会导致PCIe P2P性能变差:
export MCCL_PCIE_BUFFER_MODE=0
强制UMD使用polling模式,降低小数据量的通信时延。CPU性能强的情况下,可以设置为3:
export FORCE_ACTIVE_WAIT=2
来指定特定拓扑信息:
export MCCL_TOPO_FILE=path/topo.xml
4.1.6. C500X机型
软件方式开关C500X Dragonfly机型的机外互联,可使用环境变量 MCCL_DISABLE_OPTIC_LINK,详情参见 4.2.1.1 MCCL_DISABLE_OPTIC_LINK 。
4.1.7. 阡视服务器
针对阡视8卡性能最优服务器,需要设置:
MACA_VISIBLE_DEVICES=0,1,8,9,2,3,10,11,4,5,12,13,6,7,14,15。
4.1.8. 大模型通信日志
获取大模型的通信行为日志,需要设置:
export MCCL_DEBUG=TRACE
export MCCL_DEBUG_SUBSYS=^ALLOC
4.2. 环境变量说明
4.2.1. 功能相关
4.2.1.1. MCCL_DISABLE_OPTIC_LINK
描述:C500X环境使用软件方式关闭机外MetaXLink互联的环境变量。在机外互联training成功后使用,通信效果和不training一致。
可选值:
0:开启机外互联
1:关闭机外互联
默认值:0
4.2.1.2. MCCL_FAST_WRITE_BACK
描述:使用MCCL内存屏障(Memory Barrier)时是否启用快速回写 Cache Line 的功能。
可选值:
-2:不启用
其他值:启用
默认值:-2
4.2.1.3. MCCL_EARLY_WRITE_BACK
描述:L2C回写阈值设置,超过阈值时才进行回写。
可选值:
-2:不启用回写
其他值:数据超过此值时进行回写
默认值:-2
4.2.1.4. MCCL_GROUP_WRITE_BACK
描述:是否启用Channel分组功能,同组的Channel只做一次Memory Barrier。
可选值:
0:启用
1:不启用
默认值:1
4.2.1.5. MCCL_DISABLE_MULTI_NODE_FABRIC
描述:是否使用Dragonfly两机间的光链路。
可选值:
0:使用
1:不使用
默认值:0
4.2.1.6. MCCL_BUFFSIZE
描述:控制MCCL在GPU对之间传输数据时使用的缓冲区大小(对应simple协议)。如果在使用MCCL时遇到内存限制问题,或者认为不同的缓冲区大小可以提高性能,请使用此变量。
可选值:使用整数值,建议使用2的幂
默认值:8388608(8 MB)
4.2.1.7. MCCL_DISABLE_CACHEABLE_BUFFER
描述:是否支持使用RWK Buffer。
可选值:
0:不使用RWK Buffer
1:使用RWK Buffer
默认值:0
4.2.1.8. MCCL_THRESHOLD_TO_USE_CACHEABLE_BUFFER
描述:simple模式下使用RWK Buffer的阈值,大于此值时使用RWK Buffer
可选值:
-1:使用默认阈值,normal node模式下为134217728(128M),dragonfly node模式下为536870912(512M)
其他值:使用整数值,建议使用2的幂
默认值:-1
4.2.1.9. MCCL_THRESHOLD_TO_USE_CACHEABLE_BUFFER_P2P
描述:simple p2p模式下使用RWK Buffer的阈值,大于此值时使用RWK Buffer。
可选值:
-1:使用默认阈值134217728(128M)
其他值:使用整数值,建议使用2的幂
默认值:-1
4.2.1.10. MCCL_PCIE_BUFFER_MODE
描述:设置MCCL中PCIe Buffer的工作模式,用于选择卡间通信是否使用PCIe链路进行通信。
可选值:
-1:自动选择,由服务器的GPU拓扑决定
0:首选MetaXLink
1:选择MetaXLink和PCIe
2:只选择PCIe
默认值:-1
4.2.1.11. MCCL_TUNING_MODEL
描述:根据全局拓扑的种类设置了不同的算法选择适配模式,不同值会使用不同的算法固定延迟、带宽系数以及对应不同算法不同数据大小的带宽微调。
可选值:
5:单节点时推荐设置为5
6:多节点时推荐设置为6
默认值:5
4.2.1.12. MCCL_PROTO
描述:定义MCCL将使用哪种协议。不建议用户设置此变量,除非在怀疑MCCL中存在错误的情况下禁用特定协议。特别是在不支持LL128的平台上启用LL128可能会导致数据损坏。
可选值:以逗号分隔的协议列表(不区分大小写),包括:LL、LL128、Simple。要指定要排除(而不是包含)的协议,请以 ^ 开头列表。
默认值:在支持LL128、LL、Simple的平台上,默认值为 LL,LL128,Simple。
4.2.1.13. MCCL_ALGO
描述:定义MCCL将使用哪些算法。
可选值:以逗号分隔的算法列表(不区分大小写),包括:树、环、Collnet、CollnetDirect和CollnetChain。要指定要排除(而不是包含)的算法,请以 ^ 开始列表。
默认值:Tree,Ring,CollnetDirect,CollnetChain
4.2.1.14. MCCL_DMABUF_ENABLE
描述:使用Linux dma-buf子系统启用GPU Direct RDMA缓冲区注册。Linux dma-buf子系统允许支持GPU Direct RDMA的NIC直接读取和写入MXMACA缓冲区,而无需CPU参与。
可选值:
0:禁用
1:启用
默认值:1
如果Linux内核或MXMACA/NIC驱动程序不支持该功能,则会自动禁用该功能。
4.2.1.15. MCCL_EXT_CCL_ENABLE
描述:启用混训功能。
可选值:
0:禁用
1:启用
默认值:0
4.2.1.16. MCCL_HC_PLUGIN
描述:指定异构环境使用的特定版本插件动态库。通过配置该变量,可以将沐曦 GPU与指定其它厂商的GPU进行异构通信。
可选值:插件动态库路径
默认值:/opt/maca/libmxccl.so
4.2.1.17. MCCL_RINGS
描述:用户自定义环路,只在固定序号的GPU上进行ring运算。
可选值:
字符串格式为 0 1|1 0|0 1 2 3|3 2 1 0|N0 0 2 3 1|N2 7 6 5 4 3 2 1 0 N1
其中网卡可选择指定字符前缀N表示。PCIe P2P可以指定字符前缀P表示。
默认值:无
4.2.2. 性能相关
4.2.2.1. MCCL_ENABLE_FC
描述:是否启用FC算法。
可选值:
0:关闭
1:启用
默认值:1
4.2.2.2. MCCL_ENABLE_FC8_OAM
描述:在8卡OAM拓扑下启用FC算法。
可选值:
0:关闭
1:启用
默认值:1
4.2.2.3. MCCL_FC_BYTE_LIMIT
描述:使用FC算法的数据量上限。
可选值:无符号长整形数值
默认值:4294967296
4.2.2.4. MCCL_FC_MAX_BLOCKS
描述:限制FC算法使用的block数量。
可选值:正整数值,其中0表示由算法自动选择
默认值:32
4.2.2.5. MCCL_FC_DISABLE_REMOTE_READ
描述:关闭FC远读算法。
可选值:
1:关闭
0:打开
默认值:1
4.2.2.6. MCCL_FC_BYTE_LIMIT_DRAGONFLY
描述:限制Dragonfly拓扑下使用FC分层算法的数据量上限。
可选值:无符号长整型数值
默认值:2097152
4.2.2.7. MCCL_FC_MTLK_BLOCKS
描述:限制FC8分层算法的MetaXLink部分block数量。
可选值:无符号长整型数值
默认值:0,由算法自动选择
4.2.2.8. MCCL_LIMIT_RING_LL_THREADTHRESHOLDS
描述:在Ring算法LL协议场景下是否限制。
可选值:
0:关闭
1:启用
默认值:1
4.2.2.9. MCCL_CROSS_NIC
描述:控制MCCL是否允许ring/trees使用不同的网卡,导致节点间通信在不同节点上使用不同的网卡。
为了在使用多个网卡时最大限度地提高节点间的通信性能,MCCL在节点间通信时尽量使用相同的网卡,允许每个节点上的每个网卡连接到不同的网络交换机(网络轨道)的网络设计,避免任何流量干扰的风险。
因此, MCCL_CROSS_NIC 设置取决于网络拓扑,特别是取决于网络结构是否经过轨道优化。
这对只有一个网卡的系统没有影响。
可选值:
0:始终在同一个环/树中使用相同的NIC(网络接口卡),以避免跨越网络轨道。这适用于每个NIC都连接到独立交换机(轨道)、且轨道间连接较慢的网络。 请注意,如果通信器中每个节点上的GPU并不完全相同,MCCL可能仍需要跨NIC进行通信。
1:允许在同一个环/树中使用不同的NIC。这适用于所有节点的NIC都连接到同一个交换机的网络,因此尝试仅使用相同的NIC并不能避免流量冲突。
2:尽量在同一个环/树中使用相同的NIC,但在能够获得更好性能的情况下,也允许使用不同的NIC。
默认值:2
4.2.2.10. MCCL_MIN_NCHANNELS
描述:限制MCCL使用的最小Channel数量。增加Channel数量会增加MCCL使用的block数量,这会提升性能但会使用更多的GPU计算资源。 在一些MCCL经常只创建一个Channel的平台使用聚合集合通信时,增加Channel数量通常会带来性能提升。
备注
旧的变量 MCCL_MIN_NRINGS 仍然可以作为别名使用。如果设置了 MCCL_MIN_NCHANNELS,将覆盖 MCCL_MIN_NRINGS。
可选值:整数值。当Channel数为-2时,最终结果会配置为默认值。当 Channel数小于0且不等于-2时,会配置为0。
当Channel数大于 MAXCHANNELS (同构拓扑 MAXCHANNELS=64,异构 MAXCHANNELS=32)时,会配置为 MAXCHANNELS。
默认值:2
4.2.2.11. MCCL_MAX_NCHANNELS
描述:限定了MCCL可以使用的Channel数量。减少Channel数量会减少通信库使用的block数量,相应的会影响GPU的计算资源。
备注
旧的 MCCL_MAX_NRINGS 仍然可以作为别名使用。如果设置了 MCCL_MAX_NCHANNELS,将覆盖 MCCL_MAX_NRINGS。
可选值:大于等于1的整数值。当Channel数为-2时,最终结果会配置为默认值。当Channel数小于0且不等于-2时,会配置为0。
当Channel数大于 MAXCHANNELS (同构拓扑 MAXCHANNELS=64,异构 MAXCHANNELS=32)时,会配置为 MAXCHANNELS。
当 MCCL_MIN_NCHANNELS 设置的值比 MCCL_MAX_NCHANNELS 设置的大,最终结果会取两者最大值。
默认值:32
4.2.2.12. MCCL_RING_TP8_MODE
描述:设定当前为Dragonfly TP8拓扑模式,并指定预设的通信环路。
可选值:
0:不适用预设通信环路
1:使用8 opt环路
2:使用8 opt环路和3 PCIe环路
3:使用16 opt和6 RC和8 RoCE环路
4:使用16 opt环路和6 RC环路
默认值:0
4.2.2.13. MCCL_NET_DISABLE_INTRA
描述:Intra-node通信时,当使用网卡通信速度高于P2P或SHM时,允许优先使用网卡。
可选值:
0:允许优先使用网卡
1:不允许优先使用网卡
默认值:1
4.2.2.14. MCCL_PXN_DISABLE
描述:禁止节点内通信使用PXN,即通过MetaXLink、中间GPU和非local网卡进行通信。
可选值:
0:非禁止
1:禁止
默认值:0
4.2.2.15. MCCL_MIN_P2P_NCHANNELS
描述:MCCL可用在P2P通信的最小Channel数量。
可选值:整数值
默认值:1
4.2.2.16. MCCL_MAX_P2P_NCHANNELS
描述:MCCL可用在P2P通信的最大Channel数量。
可选值:整数值
默认值:64
4.2.2.17. MCCL_P2P_NCHANNELS
描述:设置了MCCL在P2P通信时使用的Channel数量。
可选值:整数值
默认值:12
4.2.2.18. MCCL_TUNING_FILE
描述:用户指定调优配置文件路径。
可选值:可访问的用户自定义文件路径
默认值:/opt/maca/etc/tuning.cfg
4.2.2.19. MCCL_TOPO_FILE
描述:在检测拓扑之前要加载的XML文件路径。默认情况下,MCCL将加载 /var/run/metax/topo.xml (如果存在)。
可选值:描述部分或全部拓扑的可访问文件的路径
默认值:/var/run/metax/topo.xml
4.2.2.20. MCCL_TOPO_DUMP_FILE
描述:检测后要将XML格式拓扑存储的文件路径。
可选值:要创建或者覆盖的文件路径
默认值:同 MCCL_TOPO_FILE
4.2.2.21. MCCL_P2P_DISABLE
描述:禁用基于PCIe或MetaXLink的点对点(P2P)传输。
可选值:
1:禁用
0:不禁用
默认值:0
4.2.2.22. MCCL_P2P_LEVEL
描述:允许用户精细地控制何时在GPU之间使用点对点传输。该变量定义了MCCL将使用P2P传输的GPU之间的最大距离。 应该使用表示路径类型的短字符串来指定使用P2P传输的地形截止点。如果没有指定,MCCL将尝试根据运行的体系结构和环境选择最佳值。
可选值:
字符串类型值:
LOC:永远不要使用P2P(总是禁用)
MetaXLink:GPU通过MetaXLink连接时使用P2P
PIX:GPU位于同一PCI交换机时,使用P2P
PXB:当GPU通过PCI交换机(可能有多跳)连接时,使用P2P
PHB:GPU位于同一个NUMA节点时使用P2P,流量将通过CPU
SYS:在NUMA节点之间使用P2P,可能会跨越SMP互连(例如QPI/UPI)
整数类型值(Legacy)
可以选择将
MCCL_P2P_LEVEL声明为与路径类型对应的整数。对于那些在允许字符串之前使用数值的人来说,保留这些数值是为了向后兼容。不建议使用整数值,因为路径类型后续可能更改,数值与类型字符串标识符的映射关系可能会相应变化。为了避免调试配置时遇到的麻烦,请使用字符串标识符。
LOC: 0
PIX: 1
PXB: 2
PHB: 3
SYS: 4,大于4的值将被解释为SYS。MetaXLink不支持使用旧的整数值
默认值:无
4.2.2.23. MCCL_DF16_RINGS
描述:Dragonfly 16卡拓扑使用的基础环路路径。
可选值:通过GPU的device ID构建的环路路径
默认值:
0 4 7 3 6 2 1 5 15 11 8 12 9 13 14 10|3 7 4 0 5 1 2 6 12 8 11 15 10 14 13 9|4 3 0 7 2 5 6 1 11 12 15 8 13 10 9 14|7 0 3 4 1 6 5 2 8 15 12 11 14 9 10 13|10 14 13 9 8 11 15 5 1 2 6 3 7 4 0|9 13 14 10 15 11 8 12 6 2 1 5 0 7 3|14 9 10 13 8 15 12 11 1 6 5 2 7 0 3 4|13 10 9 14 11 12 15 8 2 5 6 1 4 3 0 7
4.2.2.24. MCCL_IGNORE_CPU_AFFINITY
描述:用于让MCCL忽略作业提供的CPU亲和性,而仅使用GPU亲和性。
可选值:
0:不忽略CPU亲和性
1:忽略作业提供的CPU亲和性
默认值:0
4.2.2.25. MCCL_RUNTIME_CONNECT
描述:控制是否分配所有算法对应的Buffer空间。从性能角度看,数据传输过程中不使用的算法可以不分配Buffer空间,以减少内存空间占用。
可选值:
0:分配所有算法Buffer空间
1:只分配所使用算法的Buffer空间
默认值:1
4.2.2.26. MCCL_HFC_EP4_KERNEL_LIMIT
描述:控制AlltoAll 4卡算法在Dragonfly Switch拓扑下的算法选择。该值为4卡(每个机器一张卡)使用HFC的kernel限制值。小于等于该值时使用ep4的kernel。大于该值时使用send/recv算法。
可选值:0-0x7fffffffffffffff
默认值:524288
4.2.2.27. MCCL_HFC_EP8_KERNEL_LIMIT
描述:控制AlltoAll 8卡算法在Dragonfly Switch拓扑下的算法选择。该值为8卡(每个机器一张卡)使用HFC的kernel限制值。小于等于该值时使用ep8的kernel。大于该值时使用send/recv算法。
可选值:0-0x7fffffffffffffff
默认值:524288
4.2.3. 网络相关
4.2.3.1. MCCL_SHM_DISABLE
描述:设置为1后将禁用共享内存(SHM)传输,MCCL将使用网络(即InfiniBand或IP套接字)在CPU套接字之间进行通信。
可选值:
0:启用共享内存(SHM)传输
1:关闭共享内存(SHM)传输
默认值:0
4.2.3.2. MCCL_IB_GID_INDEX
描述:定义在RoCE模式中Global ID索引。
可选值:-1,0,正整数
默认值:-1
4.2.3.3. MCCL_IB_DISABLE
描述:可防止MCCL使用IB/RoCE传输。相反,MCCL将恢复使用IP套接字。
可选值:
0:启用IB/RoCE传输
1:启用IP套接字传输
默认值:0
4.2.3.4. MCCL_SOCKET_FAMILY
描述:允许用户强制MCCL只使用IPv4或IPv6接口。
可选值:设为 AF_INET 则强制使用IPv4。设为 AF_INET6 则强制使用IPv6。
默认值:无
4.2.3.5. MCCL_SOCKET_IFNAME
描述:指定使用哪些IP接口进行通信。
可选值:
定义为前缀列表,用于筛选MCCL将使用的接口。可以提供多个前缀,以 , 符号分隔。使用 ^ 符号,MCCL将排除以该列表中任何前缀开头的接口。
要匹配(或不匹配)精确的接口名称,请在前缀字符串的开头使用 = 字符。示例: MCCL_SOCKET_IFNAME=eth0,eth1。
默认值:无
4.2.3.6. MCCL_IB_HCA
描述:指定使用哪些RDMA接口进行通信。
可选值:
定义用于筛选MCCL将使用的IB Verbs接口。列表以 , 分隔;端口号可使用 : 符号指定。可选前缀 ^ 表示该列表是排除列表。
第二个可选前缀 = 表示标记为精确名称,否则MCCL默认会将每个标记视为接口前缀。示例: MCCL_IB_HCA=mlx5_0,mlx5_1。
默认值:无
4.2.3.7. MCCL_NET_GDR_LEVEL
描述:允许用户精细控制何时在NIC和GPU之间使用GPU Direct RDMA。该变量使用表示路径类型的字符串来指定NIC和GPU之间允许使用GPU Direct RDMA的最大距离级别。 如果未指定,MCCL将尝试根据其运行的体系结构和环境以最佳方式选择一个值。
可选值:
字符串类型值:
LOC:从不使用 GPU Direct RDMA(始终禁用)
MetaXLink:GPU通过MetaXLink连接NIC时使用GPU Direct RDMA
PIX:当 GPU 和 NIC 位于同一 PCI 交换机上时,使用 GPU Direct RDMA
PXB:当 GPU 和 NIC 通过 PCI 交换机(可能是多跳)连接时,使用 GPU Direct RDMA
PHB:当 GPU 和 NIC 位于同一 NUMA 节点上时,使用 GPU Direct RDMA,流量将通过 CPU
SYS:即使在 NUMA 节点之间的 SMP 互连中也可以使用 GPU Direct RDMA(始终启用)
整数类型值(Legacy)
可以选择将
MCCL_NET_GDR_LEVEL声明为对应于路径类型的整数。保留这些数值是为了追溯兼容性,适用于在允许字符串之前使用数值的用户。不建议使用整数值,因为路径类型后续可能更改,数值与类型字符串标识符的映射关系可能会相应变化。为避免调试配置时遇到麻烦,请使用字符串标识符。
LOC: 0
PIX: 1
PXB: 2
PHB: 3
SYS: 4,大于4的值将被解释为SYS
默认值:无
4.2.4. 调试相关
4.2.4.1. MCCL_DEBUG
描述:控制MCCL日志打印级别,日志级别高的等级包含低等级日志信息。
可选值:
NONE:日志级别为0,不打印任何日志
VERSION:日志级别为1,打印MCCL库版本号信息
WARN:日志级别为2,打印MCCL错误信息
INFO:日志级别为3,打印调试信息
ABORT:日志级别为4,打印错误终止信息
TRACE:日志级别为5,打印函数的调用日志信息
默认值:0,不打印任何日志信息
4.2.4.2. MCCL_DEBUG_SUBSYS
描述:用于过滤日志输出的模块,通过逗号分割,可以输出多个模块的日志内容。
主要包括:INIT,COLL,P2P,SHM,NET,GRAPH,TUNING,ENV,ALLOC,CALL,DATA
可选值:
INIT:初始化模块
COLL:集合操作模块
P2P:Peer To Peer传输模块
SHM:共享内存传输模块
NET:网络传输模块
GRAPH:拓扑检测和拓扑图搜索
TUNING:(TREE/RING/COLL)算法和(Simple/LL/LL128)协议调优
ENV:环境变量
ALLOC:内存申请
CALL:函数调用相关信息
DATA:传输数据信息打印
ALL:所有模块
默认值:0,不打印任何日志信息
4.2.4.3. MCCL_DEBUG_FILE
描述:指定调试日志生成的日志文件,格式: filename.%h.%p,%h 为主机名,%p 为进程号。不支持 ~ 字符,需要使用相对路径或绝对路径。
可选值:用户自定义输入
默认值:为空,生成的日志文件路径为 $HOME/mxlog/mccl.pid.timestamp.log
4.2.5. UMD相关
4.2.5.1. FORCE_ACTIVE_WAIT
描述:指定UMD中Host侧等待事件或流之间同步的CPU行为。
可选值:
0:默认标准模式,阻塞等待计算任务完成
1:该进程抢占CPU进行等待相对温和
2:该进程抢占CPU进行等待比较激进
3:该进程抢占CPU进行等待最激进
-1:该进程等待时尽量让出CPU,可以有效降低在使用大量流场景下的CPU负载
默认值:0
4.2.5.2. MACA_LAUNCH_BLOCKING
描述:Host和Device是并发执行的,在同一时间上各自完成不同的任务,许多操作在Host和Device之间异步完成。该变量强制消除异步行为,强制同步执行,有助于分析和定位问题。
可选值:
0:异步并发执行kernel(计算任务)
1:强制同步执行kernel
2:强制同步执行kernel,kernel之间增加sleep方便区分不同的kernel
默认值:0
4.2.5.3. MACA_VISIBLE_DEVICES
描述:服务器中有多个GPU,可以选择特定GPU对应用程序的可见性及运行顺序。可以指定GPU UUID,GPU设备节点ID 或者 GPU的socket ID(socket ID当前仅限Dragonfly服务器),例如:
指定GPU UUID:
export MACA_VISIBLE_DEVICES=GPU-ad23670d-a40e-6b86-6fc3-c44a2cc92c7e
指定 GPU设备节点ID:
export MACA_VISIBLE_DEVICES=0,2
指定GPU的socket id,前缀为S或s:
export MACA_VISIBLE_DEVICES=S0,S2,S5
或者
export MACA_VISIBLE_DEVICES=s0,s2,s5
可选值:
UUID/节点ID/socket ID
通过
mx-smi -L命令获取所有GPU的UUID通过
mx-smi命令获取GPU节点ID通过
grep -rn mgpu_id /sys/class/mxcd/mxcd/layout/nodes命令查看GPU socket ID
默认值:空
4.2.5.4. MACA_DEVICE_ORDER
描述:服务器中有多个GPU,在程序调用过程中可以按照期望的规则生成GPU index,C500支持自定义的多卡排序规则。
可选值:
FASTEST_FIRST:根据设备计算能力从快到慢排序
PCI_BUS_ID:根据PCI总线ID升序排列设备
默认值:FASTEST_FIRST
4.2.5.5. MXLOG_LEVEL
描述:设置MXMACA UMD的输出日志等级。
可选值:
verbose:日志级别为0,打印verbose日志
debug:日志级别为1,打印debug日志
info:日志级别为2,打印info日志
warn:日志级别为3,打印warning日志
err:日志级别为4,打印error日志
critical:日志级别为5,打印critical日志
off:日志级别为6,关闭日志打印
默认值:release版本是err,debug版本是debug
4.2.5.6. MACA_LAUNCH_MODE
描述:设置下发GPU任务时的刷缓存行为,目前在验证阶段。
可选值:
0:每个GPU任务完成后都会刷一次L1和L2缓存
1:每个GPU任务完成后只刷L1缓存,不刷VL1S
2:每个GPU任务完成后只刷SL1缓存,不刷VL1和L2
默认值:0,后续大规模测试通过后会默认配置为1
4.2.5.7. MACA_MPS_MODE
描述:控制多进程场景下对GPU硬件Queue的调度。
可选值:
0:每个进程独占其申请到的GPU硬件Queue,其它进程可以通过其它可用的 GPU 硬件 Queue 同时向 GPU 提交工作
1:允许多个进程共享同一个GPU硬件Queue,进程通过一个或多个共享的GPU硬件Queue向GPU提交工作
默认值:0
4.2.5.8. MACA_DIRECT_DISPATCH
描述:配置stream下发任务时驱动侧的行为。
可选值:
0:每个Stream会额外创建一个线程,管理该Stream上的任务并提交到硬件执行
1:Stream上的任务由application线程直接管理并提交到硬件去执行,多Stream场景下CPU负载较低
默认值:默认值为0,后续经大规模验证后会将默认值配置为1
4.2.6. 工具相关
主要针对MCCL test和Transferbench等工具的环境变量。
4.2.6.1. MX_TRACER_ENABLED_MCPTI
描述:MCCL test中用于控制是否进行MCCL Kernel时长度量。
可选值:
ON:进行MCCL Kernel时长度量
OFF:不进行MCCL Kernel时长度量
默认值:OFF
4.2.6.2. MCCL_OPTIMIZATION_A2A
描述:MCCL test中用于控制是否开启All to All优化,该优化通过调用 mcclAllToAll 实现。
可选值:
0:不开启优化
1:开启优化
默认值:0
4.2.6.3. P2P_MODE
描述:Transferbench中用于控制P2P是单向或者双向测试。
可选值:
0:只进行单向P2P测试
1:分别进行单向和双向测试
默认值:0