提交你的第一个 ROCm PR,从 fork 到 CI 绿灯完整记录
00. 开场白:错别字也能上热搜?
第一次给 ROCm 提 PR,我改的不是惊天动地的 kernel,而是 rocSPARSE 文档里一个把 “parallel” 打成 “paralle” 的 typo。
别笑,开源社区对文档的洁癖堪比处女座——错别字不挑,后面的大佬怎么放心把 GPU 交给你折腾?
下面这条时间线,记录了我从「fork」到「CI 全绿」的 48 小时,顺便把踩过的坑刷成彩蛋,包教包会。
01. Fork & Clone:鼠标点两下就行?
- 打开 ROCm/rocSPARSE → 右上角 Fork → 选自己账号。
- 本地克隆(SSH 更快,别用 HTTPS 给自己找罪受):
git clone git@github.com:<你的ID>/rocSPARSE.git
cd rocSPARSE
git remote add upstream git@github.com:ROCm/rocSPARSE.git
- 顺手牵羊把主分支同步到最新:
git fetch upstream
git checkout develop
git merge upstream/develop
02. 开分支:名字别瞎起
分支名就是未来 PR 的「门牌号」,格式统一好 review:
git switch -c docfix/typo-in-sparse-bsr
小抄:
feature/给新功能hotfix/给紧急 bugdocfix/给文档,一目了然,CI 机器人少啰嗦。
03. 改错别字:一分钟完工
文件路径:library/include/rocsparse-types.h
把第 312 行注释里的 paralle 改成 parallel,保存。
表情包时刻:
😎 「就改一个字母,会不会被 maintainer 打回?」
👻 「放心,社区欢迎原子级贡献,只要规范。」
04. Commit Message:七行模板直接套
git add library/include/rocsparse-types.h
git commit
弹出的 vim 界面里按下面格式写,越短越香:
doc: fix typo in rocsparse-types.h comment
- "paralle" -> "parallel"
- Close #<issue 号>(没有就删这行)
保存退出后,用 git log --oneline -1 检查,红圈绿圈都舒服。
05. 本地 pre-commit:别让机器人骂你
ROCm 仓库自带 .pre-commit-config.yaml,装一次管终身:
pip install pre-commit
pre-commit install
跑一遍,把错误留在本地,别去 CI 丢人:
pre-commit run --all-files
常见翻车现场:
- clang-format 把大括号换行
- end-of-file-fixer 自动补空行
修复方法:git add .再git commit --amend,别新增 commit。
06. Push & 开 PR:标题别写「fix」
git push origin docfix/typo-in-sparse-bsr
浏览器回显,点 Compare & Pull Request。
标题示范:
doc: correct spelling in rocsparse-types.h
正文模板直接抄:
### What does this PR do?
Fix a minor typo in the public header comment.
### How was it tested?
- pre-commit passed locally
- no functional code change
表情包彩蛋:在末尾丢一张「我保证只改了一个字母」的熊猫头,reviewer 心情 +10。
07. CI 绿灯观察室:gfx908 vs gfx90a
ROCm 的 CI 会同时拉起两种架构节点,gfx908(MI100)与 gfx90a(MI250)。
在 PR 页面往下拉,能看到两条流水线:
| 流水线 | 作用 | 平均时长 |
|---|---|---|
rocmgfx908 |
单 GCD 编译 + 单测 | 18 min |
rocmgfx90a |
双 GCD 编译 + 多测 | 35 min |
常见红灯 log 速查:
-
编译失败:
error: use of undeclared identifier 'hipStream_t'
→ 你改到了头文件顺序,把#include "hip/hip_runtime.h"顶到最前。 -
单测超时:
rocsparse-test Timeout after 300s
→ 大概率不是你惹的,re-run 就行,MI250 节点偶尔排队。 -
clang-format 怒:
--- library/src/file.cpp (original)
→ 本地pre-commit run clang-format --all-files自动修,再git commit --amend。
TIPS:CI 页面右上角 ... → View logs 可在线 tail,手机也能蹲结果。
08. Review 反馈:秒批 vs 小修
我的 typo PR 运气爆棚,5 分钟 Approve。
若收到 nits: 开头的小评论,别玻璃心,点 Add suggestion to batch 一键 commit,省得再拉本地。
09. Merge 后:别急着删分支
PR 合并按钮由 maintainer 按下,页面出现紫色 Merged 徽章后:
git fetch upstream
git branch -d docfix/typo-in-sparse-bsr # 本地删除
再去自己仓库的 Settings → Branches 把远端分支也清掉,强迫症福音。
10. 把调优脚本也捐了:下一步怎么玩
只改错别字不过瘾?把你压箱底的 gemm_tuning.py 扔进去!
步骤一模一样,只是 git add 的是新文件。
社区最缺的是实战样本,你的脚本能让后面几千张 MI250 少跑冤枉路,star 收割机就是你。
11. 彩蛋:表情包合集自取
下面这张「CI 全绿」熊猫头,我 PR 里用过,直接右键保存:
(若无法显示,去 Telegram 搜「CI 全绿 表情包」第一包就是。)
12. 收尾:欢迎来当同事
第一次 PR 就像打副本,最难的是进组。
当你看到邮箱里静静躺着 Welcome to ROCm! 的邀请,就会明白:
开源不是施舍,而是互相捡装备。
下一个 typo,也许就在你眼皮底下,fork 键已经等你点亮。
添加微信小助手 csdn-01 还可额外领取「Openclaw 实战秘籍」
更多推荐



所有评论(0)