☰
oil-gas-ops-prospect贡献指南:从提Issue到PR合入的开源协作全流程
2026/10/2 7:19:45 网站建设 项目流程

oil-gas-ops-prospect贡献指南:从提Issue到PR合入的开源协作全流程

【免费下载链接】oil-gas-ops-prospect面向油气勘探(oil & gas exploration)领域的昇腾自定义算子库。仓名即 oil-gas-ops(油气算子)+ prospect(勘探目标),面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospect

oil-gas-ops-prospect 是面向油气勘探领域的昇腾自定义算子库,仓名即 oil-gas-ops(油气算子)+ prospect(勘探目标),覆盖地震成像、全波形反演等计算场景。本文是它的完整开源贡献指南:从提 Issue、认领任务,到本地自检、提交 PR、通过 CI 门禁,再到双 Committer 代码检视合入,带你走通这条全流程协作链路。

📋 贡献前准备:环境就绪与协议签署

在动手写代码之前,先完成 3 件准备工作:

  1. 签署 CLA 协议并了解行为准则:参与 CANN 社区贡献前,需先了解社区行为准则并完成 CLA(贡献者许可协议)签署;
  2. 克隆仓库:
git clone https://gitcode.com/cann/oil-gas-ops-prospect.git cd oil-gas-ops-prospect
  1. 确认硬件环境:本仓当前面向Ascend 910B,算子在 NPU 上的精度、性能、显存必须在真实 910B 上验证通过,这是硬性要求。环境搭建可参考快速入门与环境部署。

📌 本仓归属 oil-gas-engineering SIG,完整流程详见贡献指南。

🐛 第一步:提 Issue——先讨论方案,再写代码

仓库明确要求:如果你的修改不是简单的 bug 修复,而涉及新增算子、新增接口、修改调用约定或改动构建流程,请务必先通过 Issue 讨论方案,以免代码被拒绝合入。拿不准是否属于"简单修复"时,同样建议先提 Issue。

贡献前判断你要做哪一类

贡献类型Issue 类型关键材料
新增算子Requirement | 需求建议业务背景、预期收益、设计方案
算子 Bug 修复Bug-Report | 缺陷反馈复现 shape、版本信息、期望与实际结果
算子性能优化Requirement | 需求建议优化点说明 + 设计方案

新增算子 Issue 要写什么

新建Requirement|需求建议类 Issue,一般包含三部分:

  • 背景信息:来自哪个勘探业务场景(叠前偏移、RTM、FWI 等),当前用什么实现、瓶颈在哪;
  • 价值/作用:预期加速比、显存收益或精度收益;
  • 设计方案:算子数学定义、输入输出 shape/dtype/format、切分策略、目标 SOC。

Bug 类 Issue 建议附带的信息

  • 复现用的 shape、dtype 与调用方式;
  • CANN 版本、SOC 型号、torch/torch_npu版本;
  • 期望结果与实际结果(含误差量级)。

认领任务:一句话/assign

需求评审通过后,在 Issue 评论框输入/assign @yourself即可认领任务。SIG 组会指派 Committer 对 Issue 进行评审,完成修改后在 Issue 中 @ 对应 Committer。

🧩 贡献新算子:按后端选对交付目录

本仓有三类算子后端,交付件不同,请先判断你的算子属于哪一类(完整说明见算子开发指南):

场景后端目录
精细控制核间切分与流水,追求极致性能AscendC(OPP.run包)ascendc/operators/
Python 快速表达、依赖 autograd、形态多变Triton-Ascend(whl)triton-ascend/
组合现有 torch 算子即可表达Composite-Torchcomposite-torch/

AscendC 算子的标准交付件结构

ascendc/operators/${op_name}/ ├── op_host/ # OpDef、InferShape、TilingFunc 及 Tiling 算法 └── op_kernel/ # kernel 入口与实现

同时还需交付:manifest.tsv 中追加一行注册算子、ascendc/pybind/ 下的 Python API、tests/ut/op_host/ 下的切分 UT、tests/st/ 下的多 case aclnn 测试,以及 examples/aclnn/ 中的两段式小样例。

几条关键约定:

  • 切分算法必须抽到op_host/<op>_tiling_core.h,与平台无关,ophost UT 才能覆盖真实算法;
  • C++ 的 OpType 用 PascalCase(如ComplexMul),aclnn 接口为aclnn+ OpType;
  • Python 接口用蛇形命名(如complex_mul),不加npu_前缀。

Triton-Ascend 算子的交付件

triton-ascend/${op_family}/ ├── __init__.py # 对外导出 ├── triton_${op_family}.py # Triton kernel 与 autograd 封装 └── README.md # 算子说明

kernel 需提供PyTorch 回退实现,并在 setup.py 中按算子名注册进入 whl。可参考现有实现 triton_fft_real.py。

精度要求:PR 里要附精度报告

新增或修改算子的 PR 需在描述中附上精度测试报告,报告格式直接复制 精度验收报告模板 逐项填写即可。

✅ 提交前本地自检:3 条命令守住质量底线

提 PR 之前,本地跑完这套自检:

bash build.sh --install bash build.sh -u --ut --st --precision --perf bash scripts/check_license_header.sh

依次是:编译安装并冒烟、跑全部测试套件(切分、上板、精度、性能)、检查许可证头。测试分类说明见 tests/README.md。

合规检查同样不能漏:

  • C++ 代码可用仓内.clang-format格式化,符合社区 C++ 编程规范;
  • 所有新增源文件带Apache License 2.0许可证头;
  • Markdown 文档语法符合规范。

🚀 提交 PR:模板填全、关联 Issue

提交 PR 时重点关注:

  1. 按 PR 模板填写本次 PR 的业务背景、目的、方案;
  2. PR 描述说明更改内容和原因,并关联对应 Issue;
  3. 检查 PR 标题是否清晰、是否已签署 CLA。

优化类 PR 还须在描述中给出优化前后的性能对比数据。

🛡️ CI 门禁与代码检视:合入前的最后两关

第一关:CI 门禁。通过评论compile指令触发开源仓门禁,当前门禁包含:代码编译、静态检查(codecheck 误报可提交 SIG 成员屏蔽)、UT 测试。依据 CI 结果修改后,在关联 Issue 中 @ 指派的 Committer。

第二关:代码检视。合入前需至少两名 Committer完成代码检视,并分别在 PR 中评论/lgtm与/approve。检视意见修改完成后,再次 @ 检视人即可等待合入。

🧭 全流程速查:一张表记住贡献链路

步骤关键动作常用指令/材料
1. 提 Issue阐明方案,先讨论后写码Requirement / Bug-Report
2. 认领评论认领任务/assign @yourself
3. 开发按后端交付件开发参考目录结构
4. 自检本地编译+测试+许可头build.sh -u全套件
5. PR填模板、关联 Issue附精度报告模板
6. CI触发门禁评论compile
7. 检视合入双 Committer/lgtm+/approve

除了贡献代码,社区也欢迎你参与帮助解决他人 Issue:如果对应 Issue 需要代码修改,同样可以/assign认领并协助解决,共同优化易用性。

📚 延伸阅读

  • CONTRIBUTING.md:完整贡献指南
  • docs/zh/develop/operator_development_guide.md:算子开发指南
  • docs/zh/develop/precision_acceptance_template.md:精度验收报告模板
  • docs/zh/context/dir_structure.md:目录结构说明
  • docs/zh/op_list.md:算子列表
  • docs/zh/api_list.md:接口列表
  • CHANGELOG.md:变更记录

【免费下载链接】oil-gas-ops-prospect面向油气勘探(oil & gas exploration)领域的昇腾自定义算子库。仓名即 oil-gas-ops(油气算子)+ prospect(勘探目标),面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospect

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询