HCCL性能测试工具

CANN软件包当前已提供HCCL性能测试工具,CANN与依赖软件安装与使用可参见HCCL性能测试工具使用指南,此处仅介绍PyTorch侧的工具使用方法。

AscendPyTorch对此工具进行了整合,简化了安装编译流程,提高工具使用效率。分布式训练场景下,开发者可以通过此工具测试HCCL集合通信的功能正确性以及性能。用户可通过运行torch_npu/utils/collect_hccl_info.py脚本,编译并运行基于通信算子的功能与性能测试。

  1. 准备运行环境,可参见HCCL性能测试工具使用指南完成依赖软件安装与环境变量配置。
  2. 执行命令,开始功能与性能测试,回显及其参数解释可参见HCCL性能测试工具使用指南中“结果说明”章节。

    python  torch_npu/utils/collect_hccl_info.py

    可选参数

    参数说明

    --file

    Hostfile节点列表文件。

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

    多机场景文件示例如下:

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

    -n

    需要启动的NPU总数。

    -t

    执行测试用例类型。可选: all_gather_test,all_reduce_test,alltoallv_test,alltoall_test,broadcast_test,reduce_scatter_test,reduce_test。

    -p

    单个计算节点上参与训练的NPU个数。默认为当前节点的NPU总数。

    -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”定义的数据量大小)持续测试。

    -e

    -i

    -f

    -o

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

    -r

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

    -d

    HCCL执行命令支持的数据类型。支持的数据类型包括:int8/int16/int/fp16/fp32/int64/uint64/uint8/uint16/uint32/fp64/bfp16。默认值为fp32。

    -n

    迭代次数,默认值为20。

    -w

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

    说明:

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

    -c

    是否开启集合通信操作结果正确性校验,默认值:1。

    • 0:不开启校验,
    • 1:开启校验。

    -multinode

    • True:开启多节点测试 。
    • False:单节点测试。