工具概述
msProf工具用于采集和分析运行在昇腾AI处理器上算子的关键性能指标,用户可根据输出的性能数据,快速定位算子的软、硬件性能瓶颈,提升算子性能的分析效率。
当前支持基于不同运行模式(上板或仿真)和不同文件形式(可执行文件或算子二进制.o文件)进行性能数据的采集和自动解析。
- msProf工具的使用依赖CANN包中的msopprof可执行文件,该文件中的接口使用和msprof op一致,该文件为CANN包自带,无需单独安装。
- 当前不支持设置ASCEND_RT_VISIBLE_DEVICES环境变量后,使用msProf工具。
通过键盘输入“CTRL+C”后,算子执行将会被停止,工具会根据当前已有信息生成性能数据文件。若不需要生成该文件,可再次键盘输入“CTRL+C”指令。
命令汇总
- msprof op模式
登录运行环境,使用msprof op 可选参数 app [arguments]格式调用,可选参数的具体情况请参考表2。具体命令示例如下:
msprof op --output=/home/projects/output /home/projects/MyApp/out/main blockdim 1 // --output为可选参数,/home/projects/MyApp/out/main为使用的app,blockdim 1为用户app的可选参数
表2 msprof op可选参数表 可选参数
描述
是否必选
--application
说明:当前与./app [arguments]兼容,后期将修改为./app [arguments]。
建议使用msprof op ./app [arguments]进行拉取,其中app为指定的可执行文件,如果app未指定路径,默认为使用当前路径,[arguments]为app的参数。
是,指定的可执行文件和--config二选一
--config
配置为输入算子编译得到的二进制文件*.o,可配置为绝对路径或者相对路径。具体可参考msProf json配置文件说明。
说明:进行算子上板或者仿真调优之前,需要获取NPU侧可执行文件或算子二进制.o文件。
- 可参考运行验证算子工程,获取NPU侧可执行文件ascendc_kernels_bbit。
- 可参考算子编译部署,对算子kernel侧实现进行编译,并获取算子二进制文件*.o。
--kernel-name
指定要采集的算子名称,支持使用算子名前缀进行模糊匹配。如果不指定,则只对程序运行过程中调度的第一个算子进行采集。
说明:- 需与--application配合使用,限制长度为1024,仅支持A-Za-z0-9_中的一个或多个字符。
- 需要采集多个算子时,支持使用符号"|"进行拼接。例如,--kernel-name="add|abs"表示采集前缀名为add和abs的算子。
- 具体采集的算子数量由--launch-count参数值决定。
否
--launch-count
设置可以采集算子的最大数量,默认值为1,取值范围为1~100之间的整数。
否
--launch-skip-before-match
用于设置不需要采集数据的算子数量,从第一个算子开始到指定数目的算子不进行采集,仅对指定数目之后的算子开始采集。
说明:- 无论--launch-skip-before-match参数是否命中kernel-name中指定的算子,该项的计数都会增加,且不采集该算子。
- 此参数的取值范围为0~1000之间的整数。
否
--aic-metrics
使能算子性能指标采集。支持以下性能指标数据文件呈现,不配置此项默认全部指标数据结果输出。- ArithmeticUtilization
- L2Cache
- Memory
- MemoryL0
- MemoryUB
- PipeUtilization
- ResourceConflictRatio
可选其中的一项或多项,选多项时用英文逗号隔开,例如:--aic-metrics=Memory,MemoryL0。
说明:若仅采集部分性能指标,会影响visualize_data.bin的可视化数据的完整性。
否
--output
收集到的性能数据的存放路径,默认在当前目录下保存性能数据。
否
--help
输出帮助信息。
否
- msprof op simulator
登录运行环境,使用msprof op simulator开启算子仿真调优功能,并配合使用仿真可选参数和用户待调优程序(app [arguments])进行调优,仿真可选参数请参考表3。具体命令示例如下:
msprof op simulator --output=/home/projects/output /home/projects/MyApp/out/main blockdim 1 // --output为可选参数,/home/projects/MyApp/out/main为使用的app,blockdim 1为用户app的可选参数
表3 msprof op simulator可选参数说明 可选参数
描述
是否必选
--application
说明:当前与./app [arguments]兼容,后期将修改为./app [arguments]。
建议使用msprof op simulator ./app [arguments]进行拉取,其中app为指定的可执行文件,如果app未指定路径,默认为使用当前路径,[arguments]为app的参数。
是,指定的可执行文件和--config二选一
--config
配置为算子编译得到的二进制文件*.o,可配置为绝对路径或者相对路径。具体可参考msProf json配置文件说明。
说明:进行算子上板或者仿真调优之前,需要获取NPU侧可执行文件或算子二进制.o文件。
- 参考运行验证算子工程,获取NPU侧可执行文件ascendc_kernels_bbit,并从用户的可执行文件中提取*.o文件。
- 参考算子编译部署,算子编译时会自动生成*.o文件。
- 需确保群组和其他组的用户不具备--config指定的json文件及上一级目录的写入权限。同时,需要确保json文件的上一级目录属主为当前用户。
--kernel-name
指定要采集的算子名称,支持使用算子名前缀进行模糊匹配。如果不指定,则只对程序运行过程中调度的第一个算子进行采集。
说明:- 需与--application配合使用,限制长度为1024,仅支持A-Za-z0-9_中的一个或多个字符。
- 需要采集多个算子时,支持使用符号"|"进行拼接。例如,--kernel-name="add|abs"表示采集前缀名为add和abs的算子。
- 具体采集的算子数量由--launch-count参数值决定。
否
--launch-count
设置可以采集算子的最大数量,默认值为1,取值范围为1~100之间的整数。
否
--aic-metrics
使能算子性能指标采集。支持以下性能指标采集项,默认全部采集。
- PipeUtilization
- ResourceConflictRatio
说明:- PipeUtilization为计算单元和搬运单元指令耗时占比,且为必选项。例如:--aic-metrics=PipeUtilization。
- ResourceConflictRatio为资源冲突占比,支持展示SET_FLAG/WAIT_FLAG指令。
- 当配置--aic-metrics=PipeUtilization时,关闭SET_FLAG,WAIT_FLAG指令。
否
--output
收集到的性能数据的存放路径,默认在当前目录下保存性能数据。
否
--help
输出帮助信息。
否
调用场景
- Kernel直调:核函数运行验证的场景。
- Kernel直调的场景,详细信息可参考Kernel直调。
- Kernel直调的场景,需先配置好前置条件,然后执行以下命令:
msprof op simulator ./main // main为用户算子程序名称,包含待调优算子的程序名
- 可选:若算子已在上板运行模式下,但用户又需要在不重新编译的情况下,对其进行仿真调优,可通过以下操作步骤实现。
- 在任意目录下,创建一个指向libruntime_camodel.so的软连接,名称为libruntime.so。
ln -s /{simulator_path}/lib/libruntime_camodel.so /{so_path}/libruntime.so //例如,若使用root用户默认路径安装CANN包,simulator_path为/usr/local/Ascend/ascend-toolkit/latest/tools/simulator/Ascendxxxyy
- 将创建的软链接的父目录加入到环境变量LD_LIBRARY_PATH中。
export LD_LIBRARY_PATH={so_path}:$LD_LIBRARY_PATH
- 在任意目录下,创建一个指向libruntime_camodel.so的软连接,名称为libruntime.so。
- AscendCL单算子调用:单算子API执行的场景。
- 第三方框架算子调用:Pytorch框架的场景。