ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

ops-nn 算子库文档中心全览:从环境部署到算子开发的进阶学习路径指南

ops-nn 算子库文档中心全览:从环境部署到算子开发的进阶学习路径指南 ops-nn 算子库文档中心全览从环境部署到算子开发的进阶学习路径指南【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nnops-nn 是 CANN 算子库中提供神经网络计算能力的高阶算子库覆盖 matmul、activation、index、loss、norm、optim、pooling、quant、rnn 等算子分类。本文以 docs/README.md文档中心为骨架系统梳理其目录结构、指南类/API 类/工具类文档的分类体系与用途并结合仓库内真实文档内容源码构建指南、算子调用指南、环境部署、项目目录 等展开解读。读完本文您将掌握遇到什么问题该查哪篇文档的导航方法并了解从环境部署、源码构建、算子调用、算子开发到调试调优的完整进阶路径。文档中心定位与整体布局docs目录是 ops-nn 项目的文档入口承担两类职责一是给出 docs 目录自身的结构约定二是以进阶教程为核心把项目所有高阶文档按用途分类索引帮助开发者快速定位所需资料。文档中心共分为四大板块指南类文档解决怎么做、API 类文档解决有哪些接口、算子、工具类文档解决用什么工具以及更多文档/附录样例、实践、FAQ 与基础概念。docs 目录结构文档中心 docs/README.md 明确给出 Docs 目录结构如下├── zh ├── context # 公共文档如术语、基础概念等 ├── debug # 算子调试指导文档 │ ├── op_debug_prof.md │ ├── ... ├── develop # 算子开发指导文档 │ ├── aicore_develop_guide.md │ ├── aicpu_develop_guide.md │ ├── ... ├── figures # 图片目录 ├── install # 环境安装和编译指导文档 │ ├── build.md │ ├── compile.md │ ├── quick_install.md │ └── ... ├── invocation # 算子调用指导文档包括aclnn调用、图模式调用等 │ ├── quick_op_invocation.md │ ├── ... ├── menu_aclnn_api.md # 全量aclnn接口索引文件 ├── menu_torch_api.md # 全量torch_extension接口索引文件 ├── op_api_list.md # aclnn接口列表 ├── op_list.md # 全量算子列表 └── torch_api_list.md # torch_extension接口列表 ├── CONTRIBUTING_DOCS.md # 文档贡献说明 ├── QUICKSTART.md # 快速入门 └── README.md对照仓库实际目录docs/zh下各子目录的落位如下docs/zh/context/算子领域基础概念包括两段式接口、数据结构、数据类型、数据格式、非连续 Tensor、broadcast 关系、量化介绍、稀疏模式介绍、确定性计算 等docs/zh/debug/算子调试与性能调优含 算子调试调优 与 Simulator 仿真工具docs/zh/develop/算子开发指导含 AI Core 算子开发指南、AI CPU 算子开发指南、图模式开发指南、torch_extension 开发指南、跨平台迁移指南docs/zh/install/环境与编译含 环境部署、源码构建、项目目录docs/zh/invocation/算子调用核心是 算子调用指南。此外docs/zh根下还有menu_aclnn_api.md、menu_torch_api.md全量接口索引、op_api_list.mdaclnn 接口列表、op_list.md全量算子列表、torch_api_list.mdtorch_extension 接口列表五个清单类文件。单算子目录交付件的灵活性文档中心强调本章罗列的部分目录是可选的请以实际交付件为准。结合 项目目录 可知单算子目录如activation/celu/、matmul/transpose_batch_mat_mul/通常由op_kernelAI Core Kernel 实现、op_host算子信息库、Tiling、InferShape、op_graph图融合与原型定义、op_apiaclnn 接口、examples调用示例、testsUT 用例等组成但存在以下可选交付件的判定规则缺少op_host可能调用了其他算子的 op_host 实现或 Kernel 暂无 Ascend C 实现缺少op_kernel可能调用了其他算子的 op_kernel 实现或暂无 Device 侧实现缺少op_api说明该算子暂不支持 aclnn 调用缺少op_graph说明该算子暂不支持图模式调用。这一约定与 算子列表 中每行算子op_kernel / op_host / op_api / op_graph四列能力标记一一对应是阅读算子目录与算子清单时必须先理解的前提。指南类文档贯穿算子全生命周期指南类文档是文档中心的主体共 5 篇覆盖构建 → 调用 → 开发 → 调试调优的完整链路。文档说明源码构建指南介绍联网/未联网场景下不同的源码构建方式和验证方法。算子调用指南介绍调用算子样例方法和不同算子调用方式如 PyTorch/aclnn/图等。标准算子开发指南介绍如何基于标准工程定义算子原型、实现 Tiling 和 Kernel此类算子称为标准算子。标准算子支持 aclnn 和图模式调用。简易算子开发指南介绍如何基于简易工程实现 fast_kernel_launch即方式此类算子称为简易算子。简易算子仅支持 PyTorch 调用。算子调试调优介绍常见的算子功能调试和性能调优方法如数据采集和仿真流水等。源码构建指南三种交付形态与联网/未联网双路径源码构建指南 首先明确本项目编译产生的三种包形态选择不同形态直接影响后续的调用范围自定义算子包选择部分算子编译生成以挂载形式作用于 CANN 包不改变原始包内容优先级高于原始 CANN 包支持 aclnn 和图模式调用 AI Core、AI CPU 算子ops-nn 包选择整个项目编译生成可完整替换 CANN 包对应部分支持 aclnn 和图模式调用 AI Core 算子ops-nn 静态库整个项目编译为libcann_nn_static.a静态库与 aclnn 接口头文件适合基于本项目二次发布且对软件包大小有要求的场景仅支持 aclnn 调用 AI Core 算子静态库仅支持 Atlas A2、A3 系列产品experimental 算子暂不支持。三种形态的统一入口是项目根目录的build.sh其参数含义是后续所有编译操作的公共基础--soc${soc_version}NPU 型号。Atlas A2 训练/推理系列使用ascend910b默认Atlas A3 训练/推理系列使用ascend910_93Ascend 950PR/Ascend 950DT 产品使用ascend950--vendor_name${vendor_name}可选自定义算子包名默认custom--ops${op_list}可选待编译算子列表多算子用英文逗号分隔如transpose_batch_mat_mul,fatrelu_mul不指定时默认编译所有算子--experimental可选编译 experimental 贡献目录下的用户算子-j${n}可选指定编译线程数--cann_3rd_lib_path仅未联网场景使用指定第三方软件存放路径。联网环境下直接执行bash build.sh --pkg --socascend910b --opstranspose_batch_mat_mul -j16即可自动下载第三方依赖并编译未联网环境则需先在联网机器上通过scripts/tools/third_lib_download.py脚本仓库内位于 scripts/tools/third_lib_download.py一键下载 json、makeself、eigen、protobuf、abseil-cpp、opbase、ops-tensor、cann-cmake 等第三方软件上传离线环境后放入项目根目录third_party推荐或自定义目录并追加--cann_3rd_lib_path参数。编译成功后 run 包存放于项目根目录build_out下例如cann-ops-nn-custom_linux-${arch}.run。部署验证方面该指南还给出 UT 用例执行方式例如bash build.sh -u --ophost依赖 googletest 框架以及常见 FAQ 处理run 包安装权限不足、libnnopbase.so校验失败等。算子调用指南两种场景 × 三种调用方式算子调用指南 是文档中心篇幅最大、实操性最强的文档之一其核心方法论是先选场景再选调用方式。两种调用场景调用场景场景说明特点快速调用算子适用于快速体验和验证算子功能的场景。无需搭建调用工程基于源码编译包和项目脚本 build.sh 可直接调用算子样例。业务应用集成算子适用于将算子灵活集成到实际业务应用中。需自行搭建调用工程手动创建调用脚本/CMake 工程灵活实现算子编译和运行。三种调用方式调用方式说明PyTorch API将算子 Kernel 注册到 PyTorch 原生框架以类似于 Torch 原生 API 方式实现算子调用。aclnn API针对算子提供相应的 C 语言 API前缀为 aclnn无需提供 IR 定义实现 API 直接调用算子。GE 图模式通过算子 IRIntermediate Representation定义以构图方式实现算子调用。快速调用场景下基于自定义算子包执行算子样例的通用命令为bash build.sh --run_example ${op} ${mode} ${pkg_mode} [--example_name${example_name}] [--vendor_name${vendor_name}] [--soc${soc_version}] [--simulator] [--experimental]其中${mode}支持eageraclnn 调用与graph图模式调用${pkg_mode}目前仅支持cust--simulator为仿真模式仅 eager 场景支持Ascend 950PR 产品可通过 Simulator 执行算子样例。基于 ops-nn 整包执行时省略pkg_mode与vendor_name。业务集成场景下算子调用指南 给出了完整的 aclnn 两段式调用 C 示例aclnnAddExampleGetWorkspaceSizeaclnnAddExample、区分自定义算子包/内置算子包两套 CMakeLists.txt、run.sh 脚本以及 GE 图模式下的Graph/op::AddExample/Session构图流程完整样例代码可参考 test_aclnn_add_example.cpp 与 test_geir_add_example.cpp。标准算子开发指南定义原型 → Tiling → Kernel → aclnn 适配AI Core 算子开发指南 面向标准算子开发即以标准工程定义算子原型、实现 Tiling 和 Kernel 的算子开发流程为工程创建 → 算子定义 → Tiling 实现 → Kernel 实现 → aclnn 适配 → 编译部署 → 算子验证。工程创建可直接使用项目build.sh的脚手架能力bash build.sh --genop${op_class}/${op_name}执行成功后提示Create the initial directory for ${op_name} under ${op_class} success即可生成包含op_graph、op_host、op_api、op_kernel、examples、tests的标准算子目录骨架。与之配套的快速体验闭环见 快速入门以examples/add_example为实践对象演示了编译运行 → 修改 Kernel 将 Add 改为 Mul → 使用AscendC::PRINTF与DumpTensor打印调试 → 使用msprof op采集算子级性能 → 修改 example 输入验证多场景正确性的完整开发与验证流程。简易算子开发指南fast_kernel_launch 轻量工程与标准算子相对简易算子基于examples/fast_kernel_launch_example轻量工程实现方式的 fast_kernel_launch工程内包含ascend_ops示例算子实现目录、setup.py构建脚本等详见 简易算子开发指南。需要特别留意其能力边界简易算子仅支持 PyTorch 调用不支持 aclnn 与图模式调用这与标准算子的调用范围形成互补。算子调试调优功能调试与性能分析算子调试调优 覆盖常见的功能调试数据采集等与性能调优仿真流水采集等方法与 Simulator 仿真工具 配合可在无真实硬件或硬件不可用时基于 AI 仿真器分析算子在各个阶段的精度与性能数据。API 类文档查接口、定方案API 类文档解决这个项目到底提供哪些算子、哪些接口的清单检索问题共 3 篇。文档说明算子列表介绍项目包含的所有算子清单。aclnn API 列表介绍项目包含的所有算子 aclnn API 清单。为方便用户在 Host 侧调用算子提供了 C 语言 API即 aclnn 前缀的 API。PyTorch API 列表介绍项目提供的 torch_extension API 清单通过 JIT 编译桥接 PyTorch 与 aclnn API并通过 GE Converter 支持 TorchAir 图模式。以 算子列表 为例该表共 5700 行以算子分类 → 算子目录 → op_kernel/op_host 实现 → aclnn 调用 → 图模式调用 → 算子执行硬件单元 → 说明七列为骨架逐算子登记其能力矩阵。阅读时需注意三条前提算子目录为小写下划线形式如transpose_batch_mat_mul算子执行硬件单元大部分算子运行在 AI Core少部分运行在 AI CPU默认语境下算子一般指 AI Core 算子V 版本演进部分算子存在多个 V 版本如gelu_v2、gather_elements_v2使用时选择最高 V 版本即可高版本已兼容低版本全部能力。aclnn 接口采用两段式调用范式GetWorkspaceSize 执行接口其原理可进一步参考 两段式接口torch_extension 的 JIT 桥接与图模式支持细节可参考 torch_extension 开发指南。工具类文档Simulator 仿真工具工具类文档目前收录 Simulator 仿真工具面向算子开发场景的 SoC 级仿真工具用于分析运行在 AI 仿真器上 AI 任务在各阶段的精度和性能数据。结合 算子调用指南 可知其典型用法是在--run_example时追加--simulator参数仿真模式下会根据soc_version链接对应的仿真库Ascend 950PR 等新芯片的算子开发与调试可完全依托该仿真工具进行见 README 最新动态。更多文档与附录样例、实践与 FAQ文档中心同时声明了三类补充资源样例类文档可参考 cann-samples 仓算子样例仓库内则以examples目录add_example、add_example_aicpu、fast_kernel_launch_example为端到端样例主体实践类文档建设中以算子性能优化为专题例如 MatMul 算子性能优化实践、MatMul 算子 VCV 性能优化实践等发布在项目 WikiFAQ 类文档建设中同样以项目 Wiki 为主要检索渠道。此外文档中心还专门提供 文档贡献说明供有意为项目补充文档的开发者查阅。附录基础概念与 build 参数附录表格收录两类支撑性文档算子基本概念算子领域基础概念与术语涵盖两段式接口、数据结构/类型/格式、非连续 Tensor、broadcast 关系、互推导/互转换关系、量化模式、稀疏模式、确定性计算、Batch 一致性等主题是阅读算子 README 与接口文档前建议先扫盲的清单build 参数说明介绍build.sh参数功能与取值包括源码编译、算子调用、调试等场景其中与编译/调用/UT 验证直接相关的参数用法在 源码构建指南 与 快速入门 中有完整命令示例--pkg、--ops、--soc、--vendor_name、--genop、--run_example、-u等。学习路径建议从快速入门到进阶将文档中心与 README 的学习教程编排结合推荐以下按角色划分的阅读路径首次接触本项目环境准备先读 环境部署在 CANNLab无设备一站式云环境、Docker有设备、快速搭建适用于 Atlas A2/A3 系列与手动安装三种方式中选择其一并用npu-smi info、ascend_toolkit_install.info验证环境验证环境与快速上手按 快速入门 以add_example为对象走通编译 → 安装 → 调用 → 改 Kernel → 调试 → 验证闭环日常构建与调用按需查阅 源码构建指南 与 算子调用指南先确认目标算子属于自定义算子包/ops-nn 包/静态库哪种形态再选定快速调用或业务集成方案算子开发与贡献阅读 AI Core 算子开发指南标准算子或 简易算子开发指南简易算子对照 项目目录 理解交付件约定接口检索与问题定位用 算子列表、aclnn API 列表、PyTorch API 列表 检索能力矩阵用 算子调试调优 与 Simulator 仿真工具 完成功能与性能问题定位。按此路径即可从文档导航出发快速收敛到环境 → 构建 → 调用 → 开发 → 调优任意环节的权威依据避免在海量算子与接口清单中迷失方向。【免费下载链接】ops-nn本项目是CANN提供的神经网络类计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-nn创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表