00. 开场白:错别字也能上热搜?

第一次给 ROCm 提 PR,我改的不是惊天动地的 kernel,而是 rocSPARSE 文档里一个把 “parallel” 打成 “paralle” 的 typo。
别笑,开源社区对文档的洁癖堪比处女座——错别字不挑,后面的大佬怎么放心把 GPU 交给你折腾?
下面这条时间线,记录了我从「fork」到「CI 全绿」的 48 小时,顺便把踩过的坑刷成彩蛋,包教包会。


01. Fork & Clone:鼠标点两下就行?

  1. 打开 ROCm/rocSPARSE → 右上角 Fork → 选自己账号。
  2. 本地克隆(SSH 更快,别用 HTTPS 给自己找罪受):
git clone git@github.com:<你的ID>/rocSPARSE.git
cd rocSPARSE
git remote add upstream git@github.com:ROCm/rocSPARSE.git
  1. 顺手牵羊把主分支同步到最新:
git fetch upstream
git checkout develop
git merge upstream/develop

02. 开分支:名字别瞎起

分支名就是未来 PR 的「门牌号」,格式统一好 review:

git switch -c docfix/typo-in-sparse-bsr

小抄

  • feature/ 给新功能
  • hotfix/ 给紧急 bug
  • docfix/ 给文档,一目了然,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 速查

  1. 编译失败error: use of undeclared identifier 'hipStream_t'
    → 你改到了头文件顺序,把 #include "hip/hip_runtime.h" 顶到最前。

  2. 单测超时rocsparse-test Timeout after 300s
    → 大概率不是你惹的,re-run 就行,MI250 节点偶尔排队。

  3. 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 键已经等你点亮

立即加入 AI 开发者计划,免费领取 100 小时算力

添加微信小助手 csdn-01 还可额外领取「Openclaw 实战秘籍」

Logo

免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐