工具使用

前提条件

命令格式

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

参数说明

表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。

例如./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相关的执行命令有:allreduce/reducescatter/reduce

-r

可选

执行命令为“broadcast”、“reducescatter”时,需要通过此参数指定根节点。

默认值为:0。

-d

可选

HCCL执行命令支持的数据类型。

  • 针对执行命令“allreduce/reducescatter/reduce”,支持的数据类型包括:fp32/int8/int16/int64/int32/fp16/bfp16。其中bfp16数据类型仅Atlas A2 训练系列产品支持。
  • 针对执行命令“broadcast/allgather/alltoallv/alltoall”,支持的数据类型包括:int8/int16/int32/fp16/fp32/int64/uint64/uint8/uint16/uint32/fp64/bfp16。其中bfp16数据类型仅Atlas A2 训练系列产品支持。

默认值为fp32。

性能测试参数

-n

可选

迭代次数,默认值为20。

-w

可选

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

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

结果校验参数

-c

可选

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

默认值:1。

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

执行示例