HCCL性能测试工具
CANN软件包当前已提供HCCL性能测试工具,CANN与依赖软件安装与使用可参见《HCCL性能测试工具使用指南》,此处仅介绍PyTorch侧的工具使用方法。
AscendPyTorch对此工具进行了整合,简化了安装编译流程,提高工具使用效率。分布式训练场景下,开发者可以通过此工具测试HCCL集合通信的功能正确性以及性能。用户可通过运行torch_npu/utils/collect_hccl_info.py脚本,编译并运行基于通信算子的功能与性能测试。
- 准备运行环境,可参见《HCCL性能测试工具使用指南》完成依赖软件安装与环境变量配置。
- 执行命令,开始功能与性能测试,回显及其参数解释可参见《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"为乘法因子方式。
说明:- 当“-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:单节点测试。