CANN/ops-cv仿真工具使用指南
简介【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cvCANN Simulator是一款面向算子开发场景的SoC级芯片仿真工具用于分析运行在AI仿真器上的AI任务在各阶段的精度和性能数据如指令执行情况等。该工具有助于用户进行深度性能调优使研发人员在无法获取或芯片资源紧缺的情况下也能获得与真实芯片几乎一致的验证效果和性能反馈。主要功能该工具与板上运行保持二进制兼容同一 kernel可同时在仿真和AI处理器执行主要用途如下精度仿真输出bit级精度结果协助用户完成算子的精度验证。性能仿真输出指令流水图协助用户定位算子性能瓶颈问题。使用前准备使用约束工具推荐环境配置CPU 16核内存32GB以上。本文中举例路径均需要确保运行用户具有读或读写权限。出于安全性和权限最小化考虑建议使用普通用户权限执行本工具避免使用root等高权限账户。本工具依赖CANN软件包在使用前请先安装CANN软件包无需安装驱动和固件并通过source命令执行CANN的set_env.sh环境变量文件。为确保安全执行source命令后请勿修改set_env.sh中涉及的环境变量。用户应遵循最小权限原则例如给工具输入的文件要求other用户不可写在一些对安全要求更严格的功能场景下还需确保输入的文件group用户不可写。本工具为开发工具不建议在生产环境使用。工具的仿真功能仅支持单卡场景无法仿真多卡环境代码中只能设置为0卡。若修改可见卡号将导致仿真失败。仿真环境仅支持AI Core计算类算子不支持MC2和HCCL类型的算子。CANN Simulator工具目前处于尝鲜版本阶段仅支持Ascend950PR芯片建议仿真器运行环境配置为16核CPU和32GB以上内存。目前不支持arm环境仿真。环境准备CANN Simulator集成在CANN toolkit包里参考环境部署完成软件包的安装快速开始下面以add_examples为例对算子仿真进行详细说明算子编译参考算子调用完成add_example的算子编译和安装# 说明进入项目根目录执行如下编译命令命令仅供参考详细可以查看算子调用的说明。 bash build.sh --pkg --socAscend950 --vendor_namecustom --opsadd_example # 安装自定义算子包 ./build_out/cann-ops-cv-${vendor_name}_linux-${arch}.run参考aclnn调用完成test_aclnn_add_example.cpp的编译编出可执行文件test_aclnn_add_example执行仿真命令cannsim record ./test_aclnn_add_example -s Ascend950 --gen-report仿真工具执行日志文件在examples/add_example/examples/build/bin/cannsim_*目录执行日志文件为 cannsim.log。从仿真工具日志文件可以看到示例中的打印信息add_example first input[0] is: 1.000000, second input[0] is: 1.000000, result[0] is: 2.000000 add_example first input[1] is: 1.000000, second input[1] is: 1.000000, result[1] is: 2.000000 add_example first input[2] is: 1.000000, second input[2] is: 1.000000, result[2] is: 2.000000 add_example first input[3] is: 1.000000, second input[3] is: 1.000000, result[3] is: 2.000000 add_example first input[4] is: 1.000000, second input[4] is: 1.000000, result[4] is: 2.000000 add_example first input[5] is: 1.000000, second input[5] is: 1.000000, result[5] is: 2.000000 add_example first input[6] is: 1.000000, second input[6] is: 1.000000, result[6] is: 2.000000查看性能流水仿真性能流水文件在本项目examples/add_example/examples/build/bin/cannsim_*/report目录流水相关文件为trace_core0.json在Chrome浏览器中输入“chrome://tracing”地址并将生成的指令流水图文件trace_core0.json拖到空白处打开具体参数介绍参考“仿真结果解析”章节。仿真执行说明命令功能在仿真环境中执行应用程序。命令格式cannsim record [options] user_app --user-options参数说明表1 仿真执行参数说明参数可选/必选说明-s 或 --soc-version [options]参数必选指定模拟目标芯片版本如Ascend950。-o 或 --output [options]参数可选生成文件所在路径可配置为绝对路径或者相对路径并且执行工具的用户需要具有读写权限。如果未指定路径则默认在当前目录下保存数据。-g 或 --gen-report [options]参数可选启用仿真完成后是否进行自动解析并生成分析报告。默认不自动解析。user_app必选算子可执行文件。--user-options可选算子可执行文件的运行参数。使用示例完成算子开发和编译。执行仿真命令可参考以下使用示例方式一 启用仿真并将输出保存至 ./output 目录/path/to/app 为算子程序 $ cannsim record /path/to/app -o ./output -s Ascend950 方式二启用仿真并生成报告用于后续性能分析 $ cannsim record /path/to/app -o ./output -s Ascend950 --gen-report命令完成后会在默认路径或指定的“output”目录下生成以“cannsim_{timestamp}_${user_app}”命名的文件夹结构示例如下├─cannsim_{timestamp}_${user_app} ├── cannsim.log用户可以获取算子执行结果并进行精度的对比结果展示在cannsim.log示例如下以下输出仅为Ascend C单算子直调精度比较结果举例因版本不同略有差异请以实际输出为准。INFO:root:[INFO] compare data case[ case001] INFO:root:---------------RESULT--------------- INFO:root:[case_name, wrong_num, total_num, result, task_duration] INFO:root:[ case001, 0, 65536, Success]查看算子指令流水图参考仿真结果解析。仿真结果解析说明命令功能生成可视化的指令流水图。命令格式cannsim report [options]参数说明表1 仿真结果解析参数说明参数可选/必选说明-e 或 --export [options]参数必选原始结果文件目录需指定为仿真执行后生成的结果目录指定到cannsim_{timestamp}_${user_app}层可配置为绝对路径或者相对路径并且工具执行用户具有可读写权限。-o 或 --output [options]参数可选解析结果输出目录可配置为绝对路径或者相对路径且执行用户需具有读写权限。若未指定路径默认在当前目录下保存数据。如果生成的结果文件与现有文件同名则会覆盖原有文件。-n 或 --core-id [options]参数可选指定生成指令流水的核ID不指定默认生成0核的指令流水。配置的格式如下生成所有核的流水配置为‘all’。指定核ID的范围如‘0-1’。指定单核ID如‘5’。使用示例参考仿真执行执行算子仿真对比输出示例确保对应的结果执行正确。执行仿真结果解析命令可参考以下执行用例。在当前目录下生成性能分析报告默认仅分析核0 cannsim report -e /path/to/cannsim_{timestamp}_${user_app} 在指定目录下生成核0、核1、核11、核12的性能分析报告 cannsim report -e /path/to/cannsim_{timestamp}_${user_app} -o /path/to/report -n 0-1, 11-12命令执行完后会在output配置的目录下生成对应的流水文件文件格式为json格式输出结果示例如下trace_core0.json trace_core1.json ...仿真结果查看 在Chrome浏览器中输入“chrome://tracing”地址并将生成的指令流水图文件trace.json拖到空白处打开键盘上输入快捷键W放大S缩小A左移D右移可进行查看。表2 关键字段说明字段名字段含义VECTOR向量运算单元。SCALAR标量运算单元。Cube矩阵乘运算单元。MTE1数据搬运流水数据搬运方向为L1 -{L0A/L0B, UBUF}。MTE2数据搬运流水数据搬运方向为{DDR/GM, L2} -{L1, L0A/B, UBUF}。MTE3数据搬运流水数据搬运方向为UBUF - {DDR/GM, L2, L1}、L1-{DDR/L2}。FIXP数据搬运流水数据搬运方向为FIXPIPE L0C - OUT/L1。FLOWCTRL控制流指令。ICACHELOAD查看未命中的ICache。查询帮助信息命令功能查询工具帮助信息。命令格式查询工具帮助信息cannsim --help查询工具 record 子命令的帮助信息cannsim record --help查询工具 report 子命令的帮助信息cannsim report --help参数说明无使用示例登录Host侧服务器。执行以下命令。cannsim --help输出说明usage: cannsim [-h] {record,report} ... Command-line tool for performance simulation analysis on Ascend hardware. positional arguments: {record,report} Available commands record Run user application in AscendOps simulation environment report Generate performance analysis reports options: -h, --help show this help message and exit【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考