
oil-gas-ops-prospect快速上手从源码编译到跑通首个昇腾自定义算子【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospectoil-gas-ops-prospect 是面向油气勘探领域的昇腾Ascend自定义算子库覆盖地震成像、全波形反演等勘探计算场景。它把 AscendC、Triton-Ascend、Composite-Torch 三种后端的 7 个算子统一封装成 Python 接口一条build.sh命令即可从源码编译到安装上板。本文带你以最短路径完成环境准备、源码编译并跑通第一个自定义算子。 项目简介三个后端、7 个算子后端交付物适用场景源码目录AscendCCANN OPP.run算子包暴露aclnn接口精细控制核间切分与流水、追求极致性能ascendc/operators/Triton-AscendPython whl 内的 Triton kernel用 Python 快速表达、依赖 autogradtriton-ascend/Composite-Torch纯 PyTorch 组合模块组合现有 torch 算子即可表达composite-torch/当前交付的算子包括ComplexMul / ComplexMulGrad复数逐点乘及其反向油气频域成像的基础操作FusedBiasSoftmax / FusedSoftmaxGrad融合注意力前向/反向softmax(x bias1 bias2, -1)原地写回real_rfft / real_irfft实数正/逆 FFT面向地震数据处理Conv3dnn.Conv3d等价替换自定义前/反向state_dict 互通数学定义与约束详见 docs/zh/op_list.md完整接口签名见 docs/zh/api_list.md。⚙️ 第一步环境准备清单在开始编译前请确认以下环境。本仓当前已验证CANN 9.0.0Ascend 910BAscend910B1组合项目要求CANN9.0.0 官方版本Toolkit 包 910b Ops 包SoCAscend 910BPython≥ 3.10Python 依赖torch、torch-npu、triton-ascend3.2.1不要用 PyPI 社区triton代替NPU 设备真实 910B精度/性能必须真机验证CANN 的 Toolkit / Ops 包安装与环境变量配置source .../cann/set_env.sh完整步骤见 docs/zh/context/quick_install.md。装好 CANN 后在仓库内执行pip install -r requirements.txt pip install triton-ascend3.2.1 --extra-index-urlhttps://mirrors.huaweicloud.com/ascend/repos/pypi 第二步克隆源码git clone https://gitcode.com/cann/oil-gas-ops-prospect.git cd oil-gas-ops-prospect仓库根目录的 build.sh 是唯一构建入口三种模式按需选择命令行为bash build.sh --pkg只编译 AscendC OPP.run包bash build.sh编译.run Python whl产物写入output/不安装bash build.sh --install编译 安装到 CANN/Python 跑 whl 冒烟测试推荐新手 第三步一条命令编译并安装bash build.sh --install--install会依次完成 5 件事编译 AscendC OPP.run包默认Ascend910B1将.run安装到当前 CANN 环境构建统一的oil_gas_ops_prospectwhl 包pip安装 whl运行 tests/test_oil_gas_ops_prospect_whl.py 冒烟测试产物统一落在仓库根目录output/OPP 包 whl不污染 CANN 安装目录。若 CANN 不在默认路径可用ASCEND_HOME_PATH/path/to/cann bash build.sh --install指定。安装完成后每个新 shell 需保留 opapi 动态库路径source /usr/local/Ascend/cann-9.0.0/set_env.sh export LD_LIBRARY_PATH${ASCEND_HOME_PATH}/opp/vendors/customize/op_api/lib:${ASCEND_HOME_PATH}/lib64:$LD_LIBRARY_PATH常用参数完整说明见 docs/zh/context/build.mdbash build.sh --opscomplex_mul,complex_mul_grad # 只构建指定算子加快编译 bash build.sh --clean # 先清理再构建 bash build.sh --socAscend910B1 -j16 # 指定 SOC 与并行度 第四步跑通首个昇腾自定义算子选最简单的ComplexMul复数逐点乘作为第一个算子。注意Python 侧默认走 PyTorch 参考实现需通过环境变量显式切到 AscendC 融合算子import os os.environ[OIL_GAS_OPS_COMPLEX_MUL_IMPL] ascendc # 关键切到自定义算子 import torch import torch_npu # noqa: F401 from oil_gas_ops_prospect.complex_mul import complex_mul shape (4, 1024) ur torch.randn(shape, devicenpu) # 复数 u 的实部 ui torch.randn(shape, devicenpu) # 复数 u 的虚部 vr torch.randn(shape, devicenpu) # 复数 v 的实部 vi torch.randn(shape, devicenpu) # 复数 v 的虚部 wr, wi complex_mul(ur, ui, vr, vi) # w u * v避坑提示默认情况下 AscendC 调用失败会静默回退到 PyTorch 实现。想确认算子确实被调用请设置OIL_GAS_OPS_REQUIRE_ASCENDC_COMPLEX_MUL1失败将直接抛异常而不是回退。反向传播由torch.autograd.Function自动封装.backward()时会自动触发ComplexMulGrad算子无需额外代码。仓内提供可直接运行的完整示例带 CPU 回退开发容器里也能跑python3 examples/complex_mul_example.py示例源码见 examples/complex_mul_example.py更多端到端调用方式见 docs/zh/invocation/quick_op_invocation.md。想试试 FFT 算子同样几行代码from oil_gas_ops_prospect.real_fft import real_rfft, real_irfft x torch.randn(8, 256, devicenpu) xr, xi real_rfft(x, dim-1) # 实数正向 FFT频率轴长度 129 y real_irfft(xr, xi, n256, dim-1) # 从半谱重建实信号非 NPU 环境会自动回退到torch.fft同一段代码在 CPU 上即可做精度自检。源码在 triton-ascend/real_fft/。 第五步用测试套件验证在已安装算子的 910B 上执行统一测试入口bash build.sh -u # 全部测试套件 bash build.sh -u --ut # UT切分算法 上板小 launch bash build.sh -u --st # ST多 shape aclnn 系统测试 bash build.sh -u --precision # 精度对拍 bash build.sh -u --perf # 性能计时测试跑完会输出test_result/test_report.md报告。无 NPU 时上板类测试自动 SKIP不会失败。各测试类别的划分见 tests/README.md。 下一步继续深入查看支持范围docs/zh/op_list.md、docs/zh/api_list.md新增自己的算子docs/zh/develop/operator_development_guide.md调用不生效 / 精度异常排查docs/zh/debug/op_debug_prof.md目录结构速览docs/zh/context/dir_structure.md至此你已完成从源码编译到跑通首个昇腾自定义算子的全流程 。掌握这套流程后无论是替换算子实现、还是基于本仓模板开发新的勘探领域算子都只是「改配置 跑测试」的事。【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考