oil-gas-ops-prospect三路线架构揭秘:AscendC、Triton-Ascend、Composite-Torch该如何选型
oil-gas-ops-prospect三路线架构揭秘AscendC、Triton-Ascend、Composite-Torch该如何选型【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospectoil-gas-ops-prospect是一个面向油气勘探领域的昇腾自定义算子库覆盖地震成像、全波形反演等勘探计算场景。这个仓库最有特色的地方是把自定义算子按交付物形态组织成AscendC、Triton-Ascend、Composite-Torch 三条路线。本文以项目已交付的 7 个算子为例帮新手快速搞清楚自己的算子到底该走哪条路线。一句话看懂为什么需要三条算子路线 昇腾上做自定义算子常面临开发成本 vs 性能上限的取舍写 C AscendC 内核性能上限最高但开发周期也最长反过来纯 PyTorch 组合几行代码就能写完但只能用现有算子拼。oil-gas-ops-prospect 用交付物形态把三条路线切得很清楚路线目录交付物一句话定位 AscendCascendc/CANN OPP.run算子包暴露 aclnn 接口精细控制切分与流水追求极致性能⚡ Triton-Ascendtriton-ascend/Python whl 内的 Triton kernelPython 快速表达、依赖 autograd、形态多变 Composite-Torchcomposite-torch/Python whl 内纯 PyTorch 组合模块组合现有 torch 算子即可表达无需自定义 kernel各目录的完整职责划分见目录结构。路线一AscendC——追求极致性能的精调路线 交付物安装 CANN OPP.run算子包后可通过aclnn两段式接口调用Python 侧同样封装成模块。仓库里的 4 个 AscendC 算子都是典型的计算密集场景ComplexMul / ComplexMulGrad——复数逐点乘及其反向源码在 ascendc/operators/complex_mul/FusedBiasSoftmax——把 bias 累加与 softmax 三次发射融合进单个 kernel原地写回FusedSoftmaxGrad——注意力 softmax 反向融合JVP还可走 AIC 矩乘 AIV 向量的 MIX 路径以 ComplexMul 为例每个算子目录分两层组织op_host/——算子定义OpDef、形状推断、tiling 切分算法。比如 complex_mul_tiling_core.h 负责把数据在 AIV 核间按 32B 对齐均分并按 UB 缓冲预算分拍op_kernel/——kernel 实现真正跑在 NPU AICore 上这条路线的成本在于切分算法要自己写、自己测。仓库为每个算子都准备了 googletest 单元测试test_complex_mul_tiling.cpp覆盖每个元素恰好被一个核处理、无空洞无重叠这类切分不变量。路线二Triton-Ascend——用 Python 快速表达复杂算子 ⚡交付物打包在 Python whl 里的 Triton kernel支持 autogradPython 直接 import 就能用。仓库里的 2 个 Triton-Ascend 算子是实数 FFT——real_rfft/real_irfft源码在 triton-ascend/real_fft/是地震成像与全波形反演里的高频变换。实现思路很巧妙把 DFT 基矩阵构造出来当作tl.dot矩阵乘跑在昇腾的cube 单元上——让FFT变成高吞吐的矩阵乘而不是低吞吐的逐元素向量操作。两个值得借鉴的工程细节CPU 回退不在 NPU 上、或 Triton 不可用时自动回退torch.fft接口语义一致开发时可以先在 CPU 上自检示例见 real_fft_example.pyAOT 编译检查aot_compile_check.py 保证 kernel 的每个分支都能通过 TTIR → Linalg → bishengir → npubin 编译链路避免分支只在上板运行时才暴露编译错误路线三Composite-Torch——零内核的纯 PyTorch 组合 交付物Python whl 内的纯 PyTorch 组合模块前向 / 反向用torch.autograd.Function组织没有任何自定义 kernel。当前代表算子是Conv3dcomposite-torch/conv3d_custom/作为nn.Conv3d的等价替换自定义前向 / 反向state_dict 与原生 Conv3d 完全互通。它的反向用分步构造grad_weight 零膨胀 翻转转置卷积替代原生路径在 NPU 上处理大 kernel depthwise 卷积时比原生aclnnConvolutionBackward更稳定。这条路线最大的好处是CPU / NPU 行为一致不需要 NPU 开发环境就能开发测试tests/composite/conv3d_custom/ 里的 11 种实际训练调用模式在 CPU 上就能全部跑通。如何选型算子路线选择速查表 ✅要新增算子时按顺序问自己三个问题即可你的情况推荐路线参考路径需要精细控制核间切分、UB 分配与流水性能是第一优先级AscendCascendc/operators/想用 Python 快速表达、依赖 autograd、输入形态多变Triton-Ascendtriton-ascend/用现有 torch 算子组合即可表达无需自定义 kernelComposite-Torchcomposite-torch/官方算子开发指南开头就给了这张选型表并写明了每条路线的完整开发流程。顺带提醒新增 AscendC 算子还要在 ascendc/operators/manifest.tsv 登记一行注册信息。统一 Python 接口调用时不用关心是哪条路线 一个容易让人困惑的问题路线不同调用方式会不会不一样答案是——对外完全一样。三条路线最终都打包进同一个 Python 包oil_gas_ops_prospect按算子名暴露不区分实现后端导入名实际来源路线oil_gas_ops_prospect.complex_mulascendc/pybind/complex_mul.pyAscendCoil_gas_ops_prospect.fused_bias_softmaxascendc/pybind/fused_bias_softmax.pyAscendCoil_gas_ops_prospect.real_ffttriton-ascend/real_fft/Triton-Ascendoil_gas_ops_prospect.conv3d_customcomposite-torch/conv3d_custom/Composite-Torch这个包名由 setup.py 在打包时组装源码树里并没有这个目录而 scripts/local_pkg.py 会在裸 checkout 时自动把各算子目录挂到同一导入名下装不装 whl调用方式都一样import torch import torch_npu # noqa: F401 from oil_gas_ops_prospect.real_fft import real_rfft x torch.randn(8, 256, devicenpu) xr, xi real_rfft(x, dim-1) # 实数正向 FFT频率轴长度 129完整接口签名与环境变量见接口列表和算子调用。快速上手3 条命令从克隆到跑通 当前已验证配套CANN 9.0.0 Triton-Ascend 3.2.1面向Ascend 910B。完整安装步骤见环境部署git clone https://gitcode.com/cann/oil-gas-ops-prospect.git cd oil-gas-ops-prospect bash build.sh --install # 编译 OPP .run 与 Python whl、安装并跑冒烟测试产物统一落在output/目录如果只想产出 AscendC 算子包用bash build.sh --pkg即可跑全量测试套件则用bash build.sh -u套件清单见 tests/suites.json。总结AscendC性能上限路线精细控制切分与流水适合复数乘法、融合注意力这类计算密集算子Triton-Ascend快速迭代路线Python 表达 autograd适合实数 FFT 这类形态多变的算子Composite-Torch零内核路线纯 PyTorch 组合适合现有算子可表达的场景无论走哪条路线对外接口都统一为oil_gas_ops_prospect.算子名切换与维护成本极低先花十分钟浏览算子列表把 7 个已交付算子的数学定义与约束过一遍再动手写你的第一个勘探算子吧【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →