132个NPU算子接口速查:ops-multimodal-fusion API清单与torch.ops调用详解

发布时间:2026/8/26 14:24:30
132个NPU算子接口速查:ops-multimodal-fusion API清单与torch.ops调用详解 132个NPU算子接口速查ops-multimodal-fusion API清单与torch.ops调用详解【免费下载链接】ops-multimodal-fusion基于 AscendC 的 PyTorch 自定义多模态算子库项目地址: https://gitcode.com/cann/ops-multimodal-fusionops-multimodal-fusion是基于 AscendC 的 PyTorch 自定义多模态算子库提供132 个高性能 NPU 算子接口全部通过torch.ops.ops_multimodal_fusion.算子名统一调用编译为 Python wheel 包pip 安装即用。本文是完整的API 清单速查与torch.ops 调用详解10 大算子分类、三步安装上手、源码路径对照帮你 5 分钟找到并跑通任意算子 一、为什么需要这个 NPU 算子库在 LLM 推理加速、多模态模型部署中框架原生算子往往覆盖不到特殊数学函数贝塞尔、艾里函数、稀疏/嵌套张量、量化推理等场景。ops-multimodal-fusion 正好补齐这块特性说明PyTorch 原生集成通过 PyTorch 扩展机制注册算子import 后自动加载无需额外注册⚡Fast Kernel Launch使用直调方式启动 kernel降低启动开销适合低时延推理️多芯片覆盖支持 Atlas A2ascend910b、Atlas A3ascend910_93、950 系列ascend950对应 arch22 / arch35 两套架构wheel 交付编译产物为 wheel 包pip install即可不侵入现有训练/推理代码当前已验证配套的 CANN 版本为CANN 9.0.0master 分支需安装 Toolkit 包 Ops 包。二、一眼看懂 API 清单132 个 NPU 算子分类速查完整接口签名参数、返回值、数据类型请查阅 接口文档芯片支持矩阵请查阅 接口支持清单。这里按用途把 132 个算子归为 10 类方便快速定位分类数量代表算子典型场景逐元素数学与激活33absaddmulexpsingelusigmoidswi_glu基础数学、激活函数特殊函数29bessel_j0airy_aidigammazetachebyshev_polynomial_t科学计算、信号处理统计与归约13summeanmaxnormkthvaluepdistlogcumsumexp聚合统计、归约池化 / 卷积 / 上采样10avg_pool2dadaptive_avg_pool2ddepthwise_conv3dupsample_linear1dCV 特征提取随机分布采样9multinomialpoissondirichletexponentialgamma随机采样、仿真索引访问9index_copyindex_reduceputtaketril_indicesc2_boolean_mask数据重排、稀疏索引损失与评估8c2_accuracymulti_margin_losscdist_backwardc2_lars训练损失、评估指标嵌套与稀疏7nested_bmmnested_add_padsparse_binary_intersectsparse_mask_projection变长嵌套张量、稀疏交集归一化与 RNN 单元5layer_normrms_norm_gatedweight_normgru_celllstm_cellLLM / 序列模型量化与矩阵8dynamic_quantdequant_swiglu_quantsemi_structured_linearaddmvmatrix_exp_util低精度推理、矩阵运算 命名规律算子名即目录名。看到算子名dequant_swiglu_quant源码就在applications/llm/dequant_swiglu_quant/测试在tests/dequant_swiglu_quant/一一对应非常好找。三、三步上手编译、安装、调用 NPU 算子第 1 步准备环境并获取源码先安装 CANN 9.0.0 的Toolkit 包和对应型号的Ops 包Ops 包需与 Toolkit 同目录然后配置环境变量source ${install_path}/cann/set_env.sh再克隆算子仓库git clone https://gitcode.com/cann/ops-multimodal-fusion第 2 步一条命令编译 wheelbash build.sh --soc${soc_version}--soc参数按实际硬件取值默认ascend950Atlas A2 训练/推理系列 →ascend910bAtlas A3 训练/推理系列 →ascend910_93950 系列 →ascend950脚本会依次执行安装构建依赖 → 清理旧构建 → 编译 wheel。结束时打印 wheel 绝对路径产物形如dist/ops_multimodal_fusion-1.0.0ascend950-cp310-cp310-linux_*.whl第 3 步安装并调用算子⚠️ 注意请勿在源码目录内执行pip install否则可能导致卸载异常。建议拷贝到/tmp等目录再安装。cd /tmp pip install /path/to/dist/ops_multimodal_fusion-*.whl --force-reinstall --no-deps以abs算子为例完整调用只有 5 行import torch import torch_npu import ops_multimodal_fusion # 所有算子在 import 时自动加载 x torch.randn(32, 64, dtypetorch.float32).npu() result torch.ops.ops_multimodal_fusion.abs(x) print(result.shape) # torch.Size([32, 64]) print(result.dtype) # torch.float32 print(result.device) # npu输出仍在 NPU 上torch.ops 调用规则详解理解了 3 条规则132 个算子都会调统一命名空间torch.ops.ops_multimodal_fusion.算子名算子名与目录名完全一致例如torch.ops.ops_multimodal_fusion.gelu(x)、torch.ops.ops_multimodal_fusion.layer_norm(x, gamma, beta)输入先行上卡张量先.npu()再传入算子在 NPU 上执行输出自动保留在 NPU多输出直接解包如layer_norm输出单张量而lstm_cell返回(hy, cy)元组、dequant_swiglu_quant返回双张量按需解包即可。每个算子的精确签名默认参数、数据类型支持都在 接口文档 中按「接口签名 / 功能 / 参数 / 返回值 / 支持的数据类型 / 支持的芯片 / 调用示例」七段式给出可直接复制示例运行。四、如何定位任意算子源码与测试路径对照表仓库结构对新手非常友好一个算子一个目录四类文件固定位置要找什么相对路径示例Kernel 实现applications/llm/算子名/arch35/算子名.ascapplications/llm/gelu/arch35/gelu.asc构建配置applications/llm/算子名/arch35/CMakeLists.txtapplications/llm/gelu/arch35/CMakeLists.txt单元测试tests/算子名/test_算子名.pytests/gelu/test_gelu.pyAPI 文档docs/zh/api_list.md全部 132 个算子常见算子的源码与测试对照算子算子实现测试文件absapplications/llm/abs/arch22/abs.asc、applications/llm/abs/arch35/abs.asctests/abs/test_abs.pylayer_normapplications/llm/layer_norm/arch35/layer_norm.asctests/layer_norm/test_layer_norm.pydynamic_quantapplications/llm/dynamic_quant/arch35/dynamic_quant.asctests/dynamic_quant/test_dynamic_quant.pynested_bmmapplications/llm/nested_bmm/arch35/nested_bmm.asctests/nested_bmm/test_nested_bmm.pydequant_swiglu_quantapplications/llm/dequant_swiglu_quant/arch35/dequant_swiglu_quant.asctests/dequant_swiglu_quant/test_dequant_swiglu_quant.pyPython 包入口位于 包初始化文件内部会为每个算子加载对应的动态库libops_multimodal_fusion_算子名.so因此「import 即全部就绪」。五、芯片支持与数据类型调用前的两个检查点✅检查芯片并非所有算子都支持所有芯片。例如abs在 arch22Atlas A2/A3和 arch35950 系列都有实现而adaptive_avg_pool2d、layer_norm、swi_glu等多数算子目前仅支持950 系列arch35。逐个算子的支持状态见 接口支持清单表格按ascend910b / ascend910_93 / ascend950三列标注。✅检查数据类型主流支持torch.float32、torch.float16部分算子有差异bitwisenot仅支持INT32/INT16any额外支持INT32/BOOLavg_pool2d、bessel_j0等目前仅FP32。调用前对照文档中的数据表格确认 dtype是避免报错的最快方式。六、验证与调优测试、调试、性能采集功能验证、问题定位、性能分析三步都有一套标准做法1. 跑通官方测试每个算子都有现成用例以abs为例pytest tests/abs/ -v预期看到test_abs_interface PASSED等结果即部署成功回归全部算子则执行pytest tests/ -v。2. 打印调试在测试中对输入输出加printshape / dtype / 前 10 个元素快速定位精度异常调试方法详见 算子调试调优。3. 性能采集功能正确后用msprof采集算子性能msprof --output./prof_out pytest tests/abs/test_abs.py命令结束会自动解析并导出性能数据文件。七、常见问题 FAQ ❓Q1调用时提示找不到torch.ops.ops_multimodal_fusion确认代码中已import ops_multimodal_fusion算子在该包 import 时自动注册且安装的是与当前 SoC 匹配的 wheel。Q2wheel 命名里的ascend950是什么这是编译时的 SoC 版本标识wheel 只适配对应芯片跨芯片请使用或重新编译对应--soc产出的包。Q3abs 为什么有 arch22 和 arch35 两套实现arch22 面向 Atlas A2/A3arch35 面向 950 系列。多数新算子仅实现 arch35这是芯片支持差异的来源详见 接口支持清单。Q4想在源码目录里直接 pip install 吗不要。README 明确提示请勿在源码目录内执行 pip install否则会引发卸载异常。Q5想自己加一个算子参考 算子开发指南 和 目录结构说明按「一个算子一个目录」的规范在applications/llm/下新增即可仓库自带完整的开发工作流与模板。写在最后ops-multimodal-fusion 把 132 个 NPU 算子整理成了「目录即清单、import 即可用」的规范形态用API 清单定位算子 → 用torch.ops 命名空间调用 → 用pytest 样例验证 → 用msprof调优。按本文的路径对照表任何一个算子的源码、测试、文档都能在 10 秒内找到建议收藏备用 ⭐【免费下载链接】ops-multimodal-fusion基于 AscendC 的 PyTorch 自定义多模态算子库项目地址: https://gitcode.com/cann/ops-multimodal-fusion创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考