2025年算子开发工具指南_232页_2mb
报告摘要
算子开发工具指南总结
核心内容
MindStudio算子开发工具(MindStudio OpDev Tools)是面向Ascend C编程语言的系列工具,旨在简化用户编程难度,助力开发者高效完成高性能算子开发。该工具集成了算子设计、工程创建、测试、调试、调优等多功能模块,支持多种硬件型号(如Atlas推理系列产品、Atlas训练系列产品、Atlas A2训练系列产品等)。
主要观点
- 性能建模:通过msKPP工具,用户可以基于算子的数学逻辑进行性能预测,无需真实计算,仅需输入和输出规模即可快速获得性能评估结果。
- 开发效率:msOpGen工具提供模板工程生成能力,简化算子工程搭建并辅助测试验证。
- 功能验证:msOpST工具支持在真实硬件环境中对算子的输入输出进行测试,确保算子功能正确。
- 异常检测:msSanitizer工具提供内存检测、竞争检测和未初始化检测,支持多核程序下的内存问题精准定位。
- 调试能力:msDebug工具提供基于昇腾芯片的原生环境调试能力,支持断点设置、内存与变量打印、单步调试、核切换等功能。
- 调优分析:msTracekit和msProf工具提供性能数据采集和分析功能,帮助用户快速定位性能瓶颈并进行优化。
关键信息
算子设计(msKPP)
- 功能:提供性能建模、搬运通路建模、随路转换建模、cache命中率建模、tensor拆分使用等功能。
- 性能建模假设:
- 内部存储(LocalMemory)无限,但用户需控制生命周期内的内存使用。
- 理论性能基于指令能力统计。
- 数据下发无瓶颈。
- 主要接口:
Chip():用于芯片建模,支持调试模式。Core():用于AI Core建模,支持AIC和AIV类型。Tensor():用于定义Tensor的内存位置、数据类型、大小及排布格式。Tensor.load():用于数据搬运,支持多种搬运通路。mmad():用于矩阵乘加操作。vadd():用于向量加法。vbrcb():用于向量广播扩展。vconv():用于向量数据类型转换。vconv_deq():用于向量量化操作。vconv_vdeg():用于向量量化转换。vector_dup():用于向量复制。vexp():用于向量取指数。vln():用于向量取对数。vmax():用于向量取最大值。vmul():用于向量乘法。vmuls():用于向量乘法和加法。vsub():用于向量减法。vdiv():用于向量除法。vcadd():用于向量加法和乘法。
算子工程创建(msOpGen)
- 功能:提供模板工程生成能力,简化算子工程搭建并辅助测试验证。
- 使用阶段:开发、部署。
- 支持硬件型号:Atlas推理系列产品、Atlas训练系列产品、Atlas A2训练系列产品。
- 使用步骤:
- 完成环境准备。
- 工具启动。
- 创建算子工程。
- 创建简易算子工程。
- 算子开发。
- 算子编译部署。
- 查看算子仿真流水图。
- 查看典型案例。
算子测试(msOpST)
- 功能:支持在真实硬件环境中对算子的输入输出进行测试。
- 使用阶段:开发、部署。
- 支持硬件型号:Atlas推理系列产品、Atlas训练系列产品、Atlas A2训练系列产品。
- 使用步骤:
- 完成环境准备。
- 工具启动。
- 生成测试用例定义文件。
- 生成/执行测试用例。
- 生成单算子上板测试框架。
- 查看典型案例。
异常检测(msSanitizer)
- 功能:提供内存检测、竞争检测和未初始化检测。
- 使用阶段:调试。
- 支持硬件型号:Atlas A2训练系列产品、Atlas推理系列产品。
- 主要接口:
sanitizerRtMalloc()sanitizerRtMallocCached()sanitizerRtFree()sanitizerRtMemset()sanitizerRtMemsetAsync()sanitizerRtMemcpy()sanitizerRtMemcpyAsync()sanitizerRtMemcpy2d()sanitizerRtMemcpy2dAsync()SanitizerReportMalloc()SanitizerReportFree()
- 典型案例:
- 检测内核调用符方式的Ascend C算子。
- 检测AscendCL调用的单算子。
- 检测CANN软件栈的内存。
算子调试(msDebug)
- 功能:提供基于昇腾芯片的原生环境调试能力,支持断点设置、内存与变量打印、单步调试、核切换等功能。
- 使用阶段:调试。
- 支持硬件型号:
- Atlas推理系列产品(不支持中断运行功能)。
- Atlas A2训练系列产品。
- 使用步骤:
- 完成环境准备。
- 工具启动。
- 导入调试信息。
- 设置断点。
- 内存与变量打印。
- 单步调试。
- 中断运行。
- 核切换。
- 读取寄存器。
- 调试信息展示。
- 查看典型案例。
- FAQ:
- msDebug工具使用"-O0-g"编译算子时,stack frame size超出限制。
- msDebug工具打印Tensor变量功能不可用,提示“unavailable”或“memory read failed”。
- msDebug工具在容器环境中调试运行失败,提示需安装HDK驱动包。
- msDebug工具断点设置在核函数内,命中断点后执行continue命令,算子运行失败。
- msDebug工具在docker中执行"run"命令运行程序后,提示“'A' packet returned an error: 8”。
算子调优(msTracekit 和 msProf)
- 功能:提供性能数据采集和分析功能,帮助用户快速定位性能瓶颈。
- msTracekit:
- 支持指令轨迹分析和kernel轨迹分析。
- 可通过MindStudioInsight进行可视化呈现。
- 需要单独安装MindStudioInsight软件包。
- msProf:
- 支持上板和仿真的性能数据采集。
- 可通过MindStudioInsight进行可视化呈现。
- 需要单独安装MindStudioInsight软件包。
- 支持多种性能数据文件,如msprof op、msprof op simulator、PipeUtilization.csv等。
- 典型案例:
- 采集Ascend C算子的性能数据。
- 通过指令流水图优化算子。
附录
- op ut run:提供UT测试功能。
- 使用场景:支持UT测试。
工具使用注意事项
- 环境准备:需安装驱动固件和CANNToolkit软件包。
- 权限约束:使用算子工具前,请保证使用最小权限原则。
- 安装建议:安装HDK驱动包时,建议使用--debug参数。
- 文档更新:文档内容会不定期更新,建议参考最新版本。
- 安装MindStudioInsight:若需使用MindStudioInsight进行查看,需单独安装。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载