工具使用

前提条件

命令格式

mpirun -f hostfile -n number ./bin/<executable_file> [-p npus] [-b minbytes] [-e maxbytes] [-f stepfactor] [-o operator] [-r root] [-d datatype] [-n iters] [-w warmup_iters] [-c <0/1>]

例如:

mpirun -f hostfile -n 16 ./bin/all_reduce_test -p 8 -b 8K -e 64M -f 2 -d fp32 -o sum

若执行mpirun命令时,出现“gethostbyname failed”的错误,请参见gethostbyname failed处理。

参数说明

表1 HCCL性能测试工具参数说明

参数名

可选/必选

描述

mpirun命令参数

-f

可选

Hostfile节点列表文件。

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

文件示例如下:
  • 方式一:“节点IP:每节点进程数”,该配置方式仅支持IPv4协议进行通信的场景。
    # 训练节点ip:每节点的进程数
    10.78.130.22:8
    10.78.130.21:8
  • 方式二:“节点名:每节点进程数”,该配置方式支持使用IPv4协议或者IPv6协议进行通信的场景。
    # 训练节点名:每节点的进程数
    node3:8
    node4:8

-n

必选

需要启动的NPU总数。

./bin/<executable_file>

必选

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

其中<executable_file>为集合通信性能测试工具的可执行文件。当前可指定文件有:all_gather_test,all_reduce_test,alltoallv_test,alltoall_test,broadcast_test,reduce_scatter_test,reduce_test,scatter_test。

例如./bin/all_gather_test。

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

-p

必选

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

默认为当前节点的NPU总数。

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

-b

可选

定义执行集合通信操作所使用的测试数据大小。
  • -b:测试数据大小的起始值,即最小值。默认值:64M,单位:K、M、G。
  • -e:测试数据大小的结束值,即最大值。默认值:64M,单位:K、M、G。
  • -i/-f:数据增量类型,其中“-i”为增量步长方式,"-f"为乘法因子方式。

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

说明:
  • 当“-b”取值等于“-e”时,即每次迭代按照固定的数据量大小进行测试。
  • 当“-e”的取值大于“-b”时,需要设置数据增量类型,“-i”与“-f”二选一进行配置即可。
  • 当“-i”取值为0时,会按照测试数据大小起始值(即“-b”定义的数据量大小)持续测试。

例如:

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

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

-e

可选

-i

可选

-f

可选

HCCL操作参数

-o

可选

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

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

-r

可选

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

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

默认值为:0。

-d

可选

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

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

性能测试参数

-n

可选

迭代次数,默认值为20。

-w

可选

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

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

结果校验参数

-c

可选

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

默认值:1。

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

执行示例