msProf工具用于采集和分析运行在昇腾AI处理器上算子的关键性能指标,用户可根据输出的性能数据,快速定位算子的软、硬件性能瓶颈,提升算子性能的分析效率。
当前支持基于不同运行模式(上板或仿真)和不同文件形式(可执行文件或算子二进制.o文件)进行性能数据的采集和自动解析。
算子调优工具使用请参考工具使用,通过MindStudio Insight展示计算内存热力图、Roofline瓶颈分析图、通算流水图(MC2算子)、指令流水图、算子代码热点图以及性能数据文件等单算子调优能力,具体请参考表1。
登录运行环境,使用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的可选参数
可选参数 |
描述 |
是否必选 |
---|---|---|
--application
说明:
当前与./app [arguments]兼容,后期将修改为./app [arguments]。 |
建议使用msprof op [msprof op参数] ./app进行拉取,其中app为指定的可执行文件,如果app未指定路径,默认为使用当前路径。 |
是,指定的可执行文件和--config二选一 |
--config |
配置为输入算子编译得到的二进制文件*.o,可配置为绝对路径或者相对路径。具体可参考msProf json配置文件说明。 |
|
--kernel-name |
指定要采集的算子名称,支持使用算子名前缀进行模糊匹配。如果不指定,则只对程序运行过程中调度的第一个算子进行采集。
说明:
|
否 |
--launch-count |
设置可以采集算子的最大数量,默认值为1,取值范围为1~100之间的整数。 |
否 |
--launch-skip-before-match |
用于设置不需要采集数据的算子数量,从第一个算子开始到指定数目的算子不进行采集,仅对指定数目之后的算子开始采集。
说明:
|
否 |
--aic-metrics |
使能算子性能指标的采集能力和算子采集能力指标。
|
否 |
--kill |
可选择on/off,默认为off,关闭该功能。 若用户配置--kill=on使能该功能,用户程序将会在采集完--launch-count设置的算子数量后,自动停止程序。
说明:
|
否 |
--mstx |
该参数决定算子调优工具是否使能用户代码程序中使用的mstx API。 默认为off,表示关闭对mstx API的使能。 若用户配置--mstx=on,算子调优工具将会使能用户代码程序中使用的mstx API。 具体举例如下: msprof op --mstx=on ./add_custom
说明:
当前已支持mstx API中的mstxRangeStartA和mstxRangeEnd接口,功能为使能算子调优的指定区间,具体参数介绍请参见mstxRangeStartA和mstxRangeEnd接口。 |
否 |
--mstx-include |
该参数支持在算子调优工具使能mstx API的情况下,仅使能用户指定mstx API 若不配置,则默认使能所有用户代码中使用的mstx API。 若配置,--mstx-include只使能用户指定的mstx API。--mstx-include的输入为用户调用mstx函数时传入的message字符串,使用"|"拼接多个字符串。 具体举例如下: --mstx=on --mstx-include="hello|hi" //仅使能用户传入mstx函数中message参数为hello和hi的mstx API
说明:
|
否 |
--replay-mode |
算子数据采集的重放模式,可配置为kernel或application,默认为kernel。
说明:
多卡多算子的场景不支持配置为application。 |
否 |
--warm-up |
当部分算子使用msprof op采集时,会达不到芯片提频的最小任务耗时产生降频,从而会对交付件的结果产生一定影响。在该情况下,可用--warm-up指定预热次数,提前提升昇腾AI处理器的运行频率,使上板数据更准确。
说明:
|
否 |
--output |
收集到的性能数据的存放路径,默认在当前目录下保存性能数据。
说明:
需确保群组和其他组的用户不具备--output指定输出路径的上一级目录的写入权限。同时,需要确保--output指定目录的上一级目录属主为当前用户。 |
否 |
--help |
输出帮助信息。 |
否 |
登录运行环境,使用msprof op simulator开启算子仿真调优功能,并配合使用仿真可选参数和用户待调优程序(blockdim 1)进行调优,仿真可选参数请参考表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的可选参数
可选参数 |
描述 |
是否必选 |
||
---|---|---|---|---|
--application
说明:
当前与./app [arguments]兼容,后期将修改为./app [arguments]。 |
建议使用msprof op simulator [msprof op simulator 参数] ./app 进行拉取,其中app为用户指定的可执行文件,如果app未指定路径,默认为使用当前路径。 |
是,指定的可执行文件、--config和--export三选一 |
||
--config |
配置为算子编译得到的二进制文件*.o,可配置为绝对路径或者相对路径。具体可参考msProf json配置文件说明。 |
|||
--export |
指定包含单算子仿真结果文件夹,直接对该仿真结果进行解析,并通过MindStudio Insight展示单算子单核或多核的指令流水图。
说明:
|
|||
--kernel-name |
指定要采集的算子名称,支持使用算子名前缀进行模糊匹配。如果不指定,则只对程序运行过程中调度的第一个算子进行采集。
说明:
|
否 |
||
--launch-count |
设置可以采集算子的最大数量,默认值为1,取值范围为1~100之间的整数。 |
否 |
||
--aic-metrics |
使能算子性能指标采集。支持以下性能指标采集项,默认全部采集。
说明:
|
否 |
||
--core-id |
该参数适用于算子分布均匀的情况时,可使用--core-id参数指定部分逻辑核的id,解析部分核的仿真数据。 核id的取值范围为[0,49]。
说明:
若要解析多个核的仿真数据时,需要使用符号"|"进行拼接。例如,--core-id="0|31"表示解析核id为0和31的仿真数据。 |
否 |
||
--timeout |
该参数适用于数据量大且计算重复的算子,完整运行该类算子将会耗时很长,部分流水图即可获取必要信息。可通过设置--timeout参数缩短算子运行时长并获取必要流水信息。具体实现如下:
参数取值范围为1~2880之间的整数,单位分钟。具体示例如下: msprof op simulator --timeout =1 ./add_custom |
否 |
||
--mstx |
该参数决定算子调优工具是否使能用户代码程序中使用的mstx API。 默认为off,表示关闭对mstx API的使能。 当配置--mstx=on,算子调优工具将会使能用户代码程序中使用的mstx API。 具体举例如下: msprof op simulator --mstx=on ./add_custom
说明:
当前已支持mstx API中的mstxRangeStartA和mstxRangeEnd接口,功能为使能算子调优的指定区间,具体参数介绍请参见mstxRangeStartA和mstxRangeEnd接口。 |
否 |
||
--mstx-include |
该参数支持在msProf工具使能用户指定mstx API。 若不配置,则默认使能所有用户代码中使用的mstx API。 若配置,--mstx-include仅使能用户指定的mstx API。--mstx-include的输入为用户调用mstx函数时传入的message字符串,多个字符串需使用"|"拼接。 具体举例如下: --mstx=on --mstx-include="hello|hi" //仅使能用户传入mstx函数中message参数为hello和hi的mstx API
说明:
|
否 |
||
--soc-version |
用于在--application和--export模式下指定仿真器类型,选取范围可参考${INSTALL_DIR}/tools/simulator路径下的仿真器类型。
若不配置,需要使用LD_LIBRARY_PATH环境变量设置仿真器类型。
export LD_LIBRARY_PATH=${INSTALL_DIR}/tools/simulator/Ascendxxxyy/lib:$LD_LIBRARY_PATH
说明:
${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。 |
否 |
||
--output |
收集到的性能数据的存放路径,默认在当前目录下保存性能数据。
说明:
需确保群组和其他组的用户不具备--output指定输出路径的上一级目录的写入权限。同时,需要确保--output指定目录的上一级目录属主为当前用户。 |
否 |
||
--help |
输出帮助信息。 |
否 |
若实际已调优算子数量小于等于--launch-count值,则继续执行。否则,实际已调优算子数量达到--launch-count设置的算子数值时,会自动停止程序。
msprof op simulator ./main // main为用户算子程序名称,包含待调优算子的程序名
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
export LD_LIBRARY_PATH={so_path}:$LD_LIBRARY_PATH
msprof op simulator ./main // main为用户算子程序名称,包含待调优算子的程序名
msprof op simulator python a.py // a.py为用户算子程序名称,包含待调优算子的程序名