昇腾社区首页
EN
注册

HcclCommConfig

功能说明

初始化具有特定配置的通信域时,此数据类型用于定义通信域配置信息,包含缓存区大小、确定性计算开关和通信域名称。

定义原型

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
const uint32_t HCCL_COMM_CONFIG_INFO_BYTES = 24;
const uint32_t COMM_NAME_MAX_LENGTH = 128;
const uint32_t UDI_MAX_LENGTH = 128; 
typedef struct HcclCommConfigDef {
    char reserved[HCCL_COMM_CONFIG_INFO_BYTES];    /* 保留字段,不可修改 */
    uint32_t hcclBufferSize;
    uint32_t hcclDeterministic;
    char hcclCommName[COMM_NAME_MAX_LENGTH];
    char hcclUdi[UDI_MAX_LENGTH];
    uint32_t hcclOpExpansionMode;
    uint32_t hcclRdmaTrafficClass;
    uint32_t hcclRdmaServiceLevel;
} HcclCommConfig;
表1 配置项说明

配置项

描述

配置优先级

hcclBufferSize

共享数据的缓存区大小,取值需大于等于1,单位为MByte。

配置项hcclBufferSize(通信域粒度配置)> 环境变量HCCL_BUFFSIZE(全局配置)> 默认值200。

hcclDeterministic

确定性计算开关。

  • 0(默认值):关闭
  • 1:开启归约类通信算子的确定性计算,并关闭保序功能。
  • 2:开启严格确定性计算,即保序功能(在确定性的基础上保证归约顺序一致),配置为该参数时需满足以下条件:
    • 仅支持通信算子为AllReduce和ReduceScatter。
    • 仅支持 Atlas A2 训练系列产品 的单机和多机对称分布场景,不支持多机单卡和非对称分布的场景。
    • 开启保序时,不支持饱和模式,仅支持INF/NaN模式。
    • 相较于确定性计算,开启保序功能后会产生一定的性能下降,建议在推理场景下使用该功能。

在不开启确定性计算的场景下,多次执行的结果可能不同。这个差异的来源,一般是因为在算子实现中存在异步的多线程执行,会导致浮点数累加的顺序变化。当开启确定性计算后,算子在相同的硬件和输入下,多次执行将产生相同的输出。

默认情况下,无需开启确定性计算或保序功能,但当发现模型执行多次结果不同或者精度调优时,可以开启确定性计算或保序功能辅助进行调试调优,但开启后,算子执行时间会变慢,导致性能下降。

配置项hcclDeterministic(通信域粒度配置)> 环境变量HCCL_DETERMINISTIC(全局配置)> 默认值0(关闭确定性计算)。

hcclCommName

通信域名称,最大长度为128。

指定的通信域名称需确保与其他通信域中的名称不重复;不指定时由HCCL自动生成。

-

hcclUdi

用户自定义信息,最大长度为128,默认为空。

-

hcclOpExpansionMode

配置通信算法的编排展开位置。

  • 0(默认值):代表使用默认算法编排展开位置,不同产品型号下的默认值详见环境变量HCCL_OP_EXPANSION_MODE
  • 1:代表通信算法的编排展开位置为Host侧CPU。
  • 2:代表通信算法的编排展开位置在Device侧的AI CPU计算单元,当前版本暂不支持配置。
  • 3:代表通信算法的编排展开位置在Device侧的AI Vector Core计算单元。当前版本仅支持 Atlas A2 训练系列产品 中的以下产品型号:Atlas 800T A2 训练服务器Atlas 900 A2 PoD 集群基础单元Atlas 200T A2 Box16异构子框

需注意:

  • 若hcclDeterministic配置为“1”(开启确定性计算),仅在单机单算子场景下,且数据量≤8MB时,支持AllReduce和ReduceScatter算子同时开启确定性计算和AIV,hcclOpExpansionMode可配置为“3”(AIV模式),其他场景和算子则hcclOpExpansionMode不支持配置为“3”(AIV模式),以确定性计算为准。
  • 多通信域并行场景下,不支持多个通信域同时配置为“3”(AIV模式)。
  • 若hcclDeterministic配置为“2”(保序功能),hcclOpExpansionMode不支持配置为“3”(AIV模式),以保序功能为准。

配置项hcclOpExpansionMode(通信域粒度配置)> 环境变量HCCL_OP_EXPANSION_MODE(全局配置)> 默认值0。

hcclRdmaTrafficClass

配置RDMA网卡的traffic class,取值范围为[0,255],需要配置为4的整数倍。

在RoCE V2协议中,该值对应IP报文头中ToS(Type of Service)域段。共8个bit,其中,bit[0,1]固定为0,bit[2,7]为DSCP,因此,该值除以4即为DSCP的值。

须知:

0xFFFFFFFF被用作优先级判断标识,当配置为0xFFFFFFFF时,此通信域配置无效,会按照优先级取环境变量配置或默认值132。

配置项hcclRdmaTrafficClass(通信域粒度配置) > 环境变量HCCL_RDMA_TC(全局配置)> 默认值132。

hcclRdmaServiceLevel

配置RDMA网卡的service level,取值需要和网卡配置的PFC优先级保持一致,若配置不一致可能导致性能劣化。

需要配置为无符号整数,取值范围[0,7]。

须知:

0xFFFFFFFF被用作优先级判断标识,当配置为0xFFFFFFFF时,此通信域配置无效,会按照优先级取环境变量配置或默认值4。

配置项hcclRdmaServiceLevel(通信域粒度配置)> 环境变量HCCL_RDMA_SL(全局配置)> 默认值4。