开发者
下载
[object Object]

本工具主要针对工程编译生成的算子ELF文件(Executable and Linkable Format)提供解析和解压功能,并将结果信息以可读形式呈现,方便开发者直观获得kernel文件信息。当前支持解析融合编译工程、标准/简易自定义算子工程,以及Kernel直调工程生成的相关产物。

[object Object]
[object Object]

[object Object][object Object]

[object Object]undefined
[object Object]
  1. 安装msobjdump工具。

    工具跟随CANN软件包发布(参考完成CANN安装),其路径默认为“${INSTALL_DIR}/tools/msobjdump”,其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,安装后文件默认存储路径为:/usr/local/Ascend/cann。

  2. 设置环境变量。

    • root用户安装Ascend-cann-toolkit包时

      [object Object]
    • 非root用户安装Ascend-cann-toolkit包时

      [object Object]
  3. 检查工具是否安装成功。

    执行如下命令,若能正常显示--help或-h信息,则表示工具环境正常,功能可正常使用。

    [object Object]
[object Object]
  • 解析ELF文件的命令

    [object Object]

    表 1 参数说明[object Object][object Object]

    [object Object]undefined
  • 解压ELF文件的命令

    [object Object]

    表 2 参数说明[object Object][object Object]

    [object Object]undefined
  • 获取ELF文件列表的命令

    [object Object]

    表 3 参数说明

    [object Object][object Object]

    [object Object]undefined

表 4 ELF解析字段说明(标准/简易自定义算子工程及融合编译工程)[object Object][object Object]

[object Object]undefined

表 5 kernel type信息

[object Object][object Object]

[object Object]undefined

表 6 ELF解析字段说明(Kernel直调工程)

[object Object][object Object]

[object Object]undefined
[object Object]

以融合编译工程生成的可执行文件为例,假设[object Object]为工程构建目录,编译生成的可执行文件名为[object Object]。对于该类产物,工具会基于可执行文件中的device相关信息进行解析,其中[object Object]用于展示binary meta与function meta信息,[object Object]用于查看可提取的device文件名,[object Object]用于将解析出的device文件落盘。调用样例可参考

  • 解析融合编译工程产物

    支持两种打印方式,请按需选取,解析字段含义参见

    • 简单打印

      [object Object]

      执行上述命令,终端打印基础device信息,示例如下:

      [object Object]
    • 全量打印

      [object Object]

      执行上述命令,除基础device信息外,还会打印提取出的device文件对应的ELF详细信息,示例如下:

      [object Object]
  • 获取融合编译工程产物中的device文件列表

    [object Object]

    执行上述命令,终端会打印可提取的device文件名,屏显信息形如:

    [object Object]
  • 解压融合编译工程产物中的device文件并落盘

    [object Object]

    执行上述命令,默认在当前执行路径下落盘[object Object]文件。若需要指定输出路径,可配合[object Object]使用。

[object Object]

以下面的算子工程为例(仅为示例,具体以实际算子工程为准),假设${cmake_install_dir}为算子Cmake编译产物根目录,目录结构如下,类似

[object Object]

工具对编译生成的库文件(如*.so、*.a等)进行解析和解压,功能实现命令样例如下:

  • 解析包含device信息的库文件

    支持两种打印方式,请按需选取,解析字段含义参见

    • 简单打印

      [object Object]

      执行上述命令,终端打印基础device信息,示例如下:

      [object Object]
    • 全量打印

      [object Object]

      执行上述命令,终端打印基础device信息,示例如下:

      [object Object]
      [object Object]
  • 解压包含device信息的库文件并落盘

    [object Object]

    执行上述命令,默认在当前执行路径下保存解压文件,产物目录如下:

    [object Object]

    以acos_custom算子编译产物解压为例:

    • 查看算子原型(acos_custom.json)

      [object Object]
    • 解析{op_type}_\{op\_type\}\_{parm_info}.o文件获取.ascend.meta段信息。

      [object Object]

      执行上述命令,终端屏显如下,字段与库文件解析类似,参见

      [object Object]
    • 查看{op_type}_\{op\_type\}\_{parm_info}.json,直观获取device文件中算子信息。

      [object Object]
  • 获取包含device信息的库文件列表

    [object Object]

    执行上述命令,终端会打印所有文件,屏显信息形如:

    [object Object]
[object Object]

以MatMulInvocationNeo算子为例(NPU模式),假设${cmake_install_dir}为算子Cmake编译产物根目录,目录结构如下(仅为示例,具体以实际算子工程为准),类似

[object Object]

工具对编译生成的库文件(如*.so、*.a等)进行解析和解压,功能实现命令样例如下:

  • 解析包含device信息的库文件

    支持两种打印方式,请按需选取,解析字段含义参见

    • 简单打印

      [object Object]

      执行上述命令,终端打印基础device信息,示例如下:

      [object Object]
    • 全量打印

      [object Object]

      执行上述命令,终端打印所有device信息,示例如下:

      [object Object]
  • 解压包含device信息的库文件并落盘

    [object Object]

    执行上述命令,默认在当前执行路径下落盘ascendxxxb1_ascendc_kernels_npu_0_mix.o文件。

  • 获取包含device信息的库文件列表

    [object Object]

    执行上述命令,终端会打印所有文件,屏显信息形如:

    [object Object]