昇腾社区首页
中文
注册

参数说明

本节介绍HCCL Test性能测试工具执行时的相关参数说明。

命令格式

  • 安装MPICH的场景
    mpirun [-f <hostfile>] -n <number> ./bin/<executable_file> [-p <npus>] [-b <minbytes>] [-e <maxbytes>] [-f <incfactor>] [-o <operator>] [-r <root>] [-d <datatype>] [-z <0/1>] [-n <iters_count>] [-w <warmup_iters_count>] [-c <0/1>]
  • 安装Open MPI的场景
    mpirun [-hostfile <hostfile>] -n <number> -x <env> [--allow-run-as-root] [--mca <key value>] ./bin/<executable_file> [-p <npus>] [-b <minbytes>] [-e <maxbytes>] [-f <incfactor>] [-o <operator>] [-r <root>] [-d <datatype>] [-z <0/1>] [-n <iters_count>] [-w <warmup_iters_count>] [-c <0/1>]

MPICH命令参数

此处仅给出MPICH工具常见参数说明,更多参数介绍可参见MPICH官方文档

表1 MPICH命令参数说明

参数名

可选/必选

描述

-f <hostfile>

可选

Hostfile节点列表文件。

单机场景下无需配置此文件;多机场景下,需要配置此文件。

配置示例可参见3

-n <number>

必选

需要启动的NPU总数,即节点数量 * 每个节点上参与训练的NPU个数。

Open MPI命令参数

此处仅给出Open MPI工具常见参数说明,更多参数介绍可参见open-mpi官方文档

表2 Open MPI命令参数说明

参数名

可选/必选

描述

-hostfile <hostfile>

可选

指定Hostfile节点列表文件。

单机场景下无需配置此文件;多机场景下,需要配置此文件。

配置示例可参见3

-n <number>

必选

设置需要启动的NPU总数,即节点数量 * 每个节点上参与训练的NPU个数。

-x <env>

必选

指定需要传递给远程节点的环境变量名称,环境变量为执行HCCL Test命令前配置的除PATH外的所有环境变量,环境变量的设置可参见工具执行

--allow-run-as-root

可选

允许mpirun使用root用户执行。

--mca <key value>

可选

设置mca参数,Open MPI的设计以组件架构(MPI Component Architecture, MCA)为中心,可通过运行时在mpirun命令中设置mca参数来加载openmpi的各类组件模块,实现特定功能。

常用的命令有:

  • --mca btl_tcp_if_include <nic_name>

    使用指定的网卡进行节点间通信,例如:

    --mca btl_tcp_if_include eth0
  • --mca opal_set_max_sys_limits 1

    设置Open MPI运行时的系统限制(文件描述符数量等)沿用系统的ulimit配置,确保Open MPI进程执行时不会因为资源限制而出现问题。当集群中卡的数量较多时,建议增加此配置。

HCCL Test工具相关参数

表3 HCCL Test工具参数说明

参数名

可选/必选

描述

./bin/<executable_file>

必选

集合通信性能测试工具的执行命令。

其中<executable_file>为集合通信性能测试工具的可执行文件,即支持的测试命令。

  • 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ,支持的测试命令有:all_gather_test,all_gatherv_test,all_reduce_test,alltoall_test,alltoallv_test,alltoallvc_test,broadcast_test,reduce_scatter_test,reduce_scatterv_test,reduce_test,scatter_test。
  • 针对 Atlas A2 训练系列产品 ,支持的测试命令有:all_gather_test,all_gatherv_test,all_reduce_test,alltoall_test,alltoallv_test,alltoallvc_test,broadcast_test,reduce_scatter_test,reduce_scatterv_test,reduce_test,scatter_test。

    需要注意,针对reduce_scatterv_test命令,仅支持单机场景,针对Atlas 200T A2 Box16 异构子框,仅支持使用单模组的场景,即只使用前8卡或者后8卡。

  • 针对 Atlas 训练系列产品 ,支持的测试命令有:all_gather_test,all_reduce_test,alltoallv_test,alltoall_test,broadcast_test,reduce_scatter_test,reduce_test,scatter_test。
  • 针对Atlas 300I Duo 推理卡,支持的测试命令有:all_gather_test,all_gatherv_test,all_reduce_test,alltoall_test,alltoallv_test,reduce_scatter_test,reduce_scatterv_test。

集合通信性能测试命令支持的参数

-p <npus>

或--npus <npus>

可选

单个计算节点上参与训练的NPU个数。

默认为当前节点的NPU总数。若单个计算节点上参与训练的NPU个数小于当前节点的NPU总数,此参数为必填项。

说明:集合通信测试工具会按照用户配置的参与训练的NPU个数拉起相应的Device,此参数的配置约束可参见规格约束

-b <minbytes>

或--minbytes <minbytes>

可选

定义执行集合通信操作所使用的测试数据大小。
  • -b:测试数据大小的起始值,即最小值。默认值:64M,单位:K、M、G。
  • -e:测试数据大小的结束值,即最大值。默认值:64M,单位:K、M、G。
  • -i/-f:数据增量类型。
    • “-i”为增量步长方式,单位Bytes。例如配置为100,则代表每次的增量步长为100 Bytes(注意,-i后配置仅为数字,无需带单位Bytes)。
    • “-f”为乘法因子方式。

    默认开启“-i”增量步长方式,默认步长大小的计算方式为:(测试数据大小的结束值-测试数据大小的起始值)/10。

说明:
  • 当“-b”取值等于“-e”时,即每次迭代按照固定的数据量大小进行测试。
  • 当“-e”的取值大于“-b”时,需要设置数据增量类型,“-i”与“-f”二选一进行配置即可。
  • 当“-i”取值为0时,会按照测试数据大小起始值(即“-b”定义的数据量大小)持续测试。
  • HCCL Test工具执行时会对部分算子的-b、-e、-i参数所输入的数据量进行地址对齐或rank size倍数的微调,以达到更优性能。

例如:

  • 配置示例为:-b 100M -e 400M -i 0

    代表按照测试数据大小起始值100MB持续测试。

  • 配置示例为:-b 100M -e 400M -i 500

    代表测试数据以100MB为起始值,以每步增长500 Bytes的步长进行测试,直至结束。

  • 配置示例为:-b 100M -e 400M -f 2

    代表测试数据大小起始值为100MB,结束值为400MB,数据增量乘法因子为2,则每次迭代会分别取大小为100MB、200MB、400MB的数据进行测试。

-e <maxbytes>

或--maxbytes <maxbytes>

可选

-i <incsize>

或--stepbytes <incsize>

可选

-f <incfactor>

或--stepfactor <incfactor>

可选

-o <operator>

或 --op <operator>

可选

Reduce相关执行命令的操作类型,包含:sum、prod、max、min,默认值为sum。

Reduce相关的执行命令有:all_reduce_test、reduce_scatter_test、reduce_scatterv_test、reduce_test。

对于执行命令reduce_scatterv_test:
  • 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ,支持的操作类型为sum、max、min。
  • 针对 Atlas A2 训练系列产品 ,支持的操作类型为sum、max、min。
  • 针对Atlas 300I Duo 推理卡,仅支持操作类型sum。

-r <root>

或--root <root>

可选

执行命令为broadcast_test、reduce_test、scatter_test时,需要通过此参数指定根节点的Device ID。

取值范围:[0,实际Device数量-1]。

默认值为:0。

-d <datatype>

或--datatype <datatype>

可选

HCCL执行命令支持的数据类型,默认值为fp32。

  • 针对执行命令all_reduce_test、reduce_scatter_test、reduce_test:
    • Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ,支持数据类型:int8、int16、int32、int64、fp16、fp32、bfp16,其中“prod”操作不支持int16、bfp16数据类型。
    • Atlas A2 训练系列产品 ,支持数据类型:int8、int16、int32、int64、fp16、fp32、bfp16,其中“prod”操作不支持int16、bfp16数据类型。
    • Atlas 训练系列产品 ,支持数据类型:int8、int32、int64、fp16、fp32。
    • Atlas 300I Duo 推理卡,支持的数据类型:int8、int16、int32、fp16、fp32,其中“prod”、“max”、“min”操作不支持int16数据类型。
  • 针对执行命令broadcast_test、all_gather_test、alltoallv_test、alltoallvc_test、alltoall_test、scatter_test、all_gatherv_test,支持数据类型:int8、uint8、int16、uint16、int32、uint32、int64、uint64、fp16、fp32、fp64、bfp16。其中bfp16数据类型仅 Atlas A2 训练系列产品 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 支持。
  • 针对执行命令reduce_scatterv_test:
    • 针对 Atlas A3 训练系列产品 / Atlas A3 推理系列产品 ,支持数据类型:int8、int16、int32、fp16、fp32、bfp16。
    • 针对 Atlas A2 训练系列产品 ,支持数据类型:int8、int16、int32、fp16、fp32、bfp16。
    • 针对Atlas 300I Duo 推理卡,支持数据类型:int16、fp16、fp32。

-z <0/1>

或--zero_copy <0/1>

可选

是否开启零拷贝功能。

单算子模式下由于输入输出buffer动态变化,所以HCCL会使用中间buffer进行中转完成集合通信,但会引入额外的内存拷贝开销。零拷贝功能就是降低内存拷贝开销,直接对业务传入的内存进行操作,从而进行性能提升。

此参数支持如下取值:
  • 0(默认值):不开启零拷贝功能。
  • 1:开启零拷贝功能。

零拷贝功能生效有如下约束条件:

  • 仅支持 Atlas A3 训练系列产品 / Atlas A3 推理系列产品
  • 仅支持执行reduce_scatter_test、all_gather_test、all_reduce_test,broadcast_test命令。
  • 仅支持通信算法的编排展开位置在AI CPU的场景。

    关于通信算法编排展开位置的详细说明可参见环境变量HCCL_OP_EXPANSION_MODE

  • 仅支持通信算子未开启重执行的场景。

    通信算子是否开启重执行特性可通过环境变量HCCL_OP_RETRY_ENABLE设置。

性能测试参数

-n <iters_count>

或--iters <iters_count>

可选

迭代次数,默认值为20。

-w <warmup_iters_count>

或--warmup_iters <warmup_iters_count>

可选

预热迭代次数,此参数不参与性能统计,仅影响HCCL Test工具的执行耗时,默认值:5。

说明:由于前几轮迭代可能存在影响性能测试的操作(例如,首轮迭代的socket建链操作等),建议将前几轮迭代设置为预热迭代,不进入性能统计。

结果校验参数

-c <0/1>

或--check <0/1>

可选

是否开启集合通信操作结果正确性校验。
  • 0:不开启校验,
  • 1:开启校验。

默认值:1。

说明:大规模集群场景下,开启结果校验会使HCCL Test工具的执行耗时增加。