add-compat-api
循环新增 Paddle 对 PyTorch C++ 兼容接口。Use when: 有新增 PyTorch C++ API 需求时,在 Paddle compat 层新增接口与测试,并执行双仓编译、ctest、wheel 安装和回归验证。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
循环新增 Paddle 对 PyTorch C++ 兼容接口。Use when: 有新增 PyTorch C++ API 需求时,在 Paddle compat 层新增接口与测试,并执行双仓编译、ctest、wheel 安装和回归验证。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
根据 PR 链接、GitHub Actions 链接或 review/comment 链接定位问题并修复 Paddle C++ compat 接口。Use when: 需要按外部链接驱动修复 c10/ATen/torch 兼容层接口并完成编译、测试和回归。
定期触发验证并自动更新 API 映射表。基于 verify_api_mapping.py 全量验证,检测分类漂移,自动修复高置信度问题,低置信度进入Agent 审核队列。
按需验证单个或批次 API 的映射准确性,基于 Step 2-1 追踪方法深入 PyTorch 实现链路。支持发现问题、给出修复建议、执行修复。
编写或更新 Paddle 与 PyTorch C++ API 兼容性文档。Use when: 添加兼容文档、补充 API 对比表、补全兼容性统计、拆分 typeid 类级文档、统一文档格式。
编写或更新 Paddle 与 PyTorch C++ API 兼容性文档。Use when: 添加兼容文档、补充 API 对比表、补全兼容性统计、拆分 typeid 类级文档、统一文档格式。
PaddlePaddle 与 PyTorch C++ API 兼容性测试开发规范。适用于:编写或扩展 test/ 目录下的兼容性测试、验证 Paddle 兼容层与 PyTorch 同一 API 的行为一致性、定位接口输出差异、新增算子测试、覆盖 Shape/Dtype/值域/API 变体。Use when: writing compatibility tests, adding operator tests, checking ATen/c10 API behavior differences between Paddle and PyTorch.
| name | add-compat-api |
| description | 循环新增 Paddle 对 PyTorch C++ 兼容接口。Use when: 有新增 PyTorch C++ API 需求时,在 Paddle compat 层新增接口与测试,并执行双仓编译、ctest、wheel 安装和回归验证。 |
| argument-hint | 传入 Paddle 仓库路径与 PyTorch 仓库路径(可选:PaddleCppAPITest 路径) |
用于在 Paddle 兼容层中持续新增 PyTorch C++ API: 先补测试,再实现新接口,持续编译和回归,直到新增接口相关用例通过。
PADDLE_ROOT: Paddle 仓库路径,例如 ~/PaddlePYTORCH_ROOT: PyTorch 仓库路径,例如 ~/pytorchPCAT_ROOT: PaddleCppAPITest 路径,默认 ~/PaddleCppAPITestTORCH_DIR: libtorch 路径,默认 ~/libtorch建议先设置:
PADDLE_ROOT=~/Paddle
PYTORCH_ROOT=~/pytorch
PCAT_ROOT=~/PaddleCppAPITest
TORCH_DIR=~/libtorch
bash test/result_cmp.sh ./build/ 仍出现 FAILED/SKIPPED/DIFF进入主流程之前,按以下顺序检测并按需配置环境。完整命令模板与 fallback 决策见 references/Step0.md。
nvidia-smi)origin/upstream)pip install,因为版本须与 Paddle build 输出一致)安全约定:克隆、下载、
pip install这类"本地、可逆"操作可在用户已知意图下直接执行;但不要主动改用户已存在仓库的remote(remote 是用户工作流,意外覆盖会丢失工作)。
$PCAT_ROOT/test/ 中定位或补充对应测试(例如 Device 相关)先在 $TORCH_DIR 中查找目标接口声明,然后在 $PYTORCH_ROOT 中查找目标接口实现。
追踪方法参考 references/Step2-1.md 与
references/Step2-2.md。
在 $PADDLE_ROOT/paddle/phi/api/include/compat 中新增接口
在 $PADDLE_ROOT/test/cpp/compat 中新增对应测试,并添加到CMakeLists.txt,规范见 references/Step2-3.md
同时在 $PCAT_ROOT/test/ 下新增/扩展跨框架对比测试。
测试规范见 compatibility-testing
(命名空间 at::test、<OpName>Test 类、write_<op>_result_to_file、
Shape 四档与 Dtype 四基础类型覆盖、异常用 std::exception 不取 e.what()、
空格分隔单行输出格式、新算子 checklist),本文档不复述。
调用该 skill 时传入:
PCAT_ROOT=$PCAT_ROOTat::abs、at::abs_)$PCAT_ROOT/test/<分类>/<OpName>Test.cpp返回后照其骨架写入测试文件,并对照其 checklist 自检强制项(标 * 项)。
保持与 PyTorch 行为一致:
cd "$PADDLE_ROOT/build"
ninja -j"$(nproc)"
ctest -R "ATen|c10|torch"
若此步失败,先修复 Paddle 侧编译或测试问题,再继续。
pip install "$PADDLE_ROOT"/build/python/dist/*.whl --force-reinstall --no-deps
cd "$PCAT_ROOT/build"
ninja -j"$(nproc)"
cd "$PCAT_ROOT"
bash test/result_cmp.sh ./build/
FAILED/SKIPPED/DIFF:回到 Step 2,进入下一轮ctest 失败ctest 直接进入回归对比build/python/dist/ 下有最新 whl同时满足以下条件才算完成:
$PADDLE_ROOT/build 下 ninja -j"$(nproc)" 成功$PADDLE_ROOT/build 下 ctest -R "ATen|c10|torch" 通过$PCAT_ROOT 下 bash test/result_cmp.sh ./build/ 中新增接口相关用例通过完成新增后,按以下固定模板更新文档(推荐记录到
$PCAT_ROOT/doc/ 下的专题文档,必要时同步相关文档):
## 对齐迭代记录(YYYY-MM-DD)
### 1) 接口变更
- 接口名:
- 变更类型:新增
- Paddle 兼容层位置:
- 参考 PyTorch 位置:
### 2) 测试覆盖
- 测试文件:
- 新增/修改用例:
- 覆盖点:shape / dtype / 边界 / 异常
### 3) 新增接口验证结果
- 新增前状态(缺失):
- 新增后验证结果:
- 关键行为说明:
### 4) 构建与回归结果
- Paddle 编译:通过/失败
- ctest (ATen|c10|torch):通过/失败
- result_cmp:无差异/仍有差异
### 5) 未完成项与下一轮计划
- 未完成接口:
- 下一轮优先级:
按上节"对齐迭代记录"模板填好五段后,不要直接写入 $PCAT_ROOT/doc/。
本 skill 不维护"✅🔧❌ 状态符号 / 优先级 P0–P3 / 测试用例 checkbox /
兼容性统计表 / 关键差异说明"这些格式规范,统一交给
compat-doc-authoring 完成入库与校验。
调用该 skill 时传入:
PCAT_ROOT=$PCAT_ROOTappend-to-existing(追加到已有专题文档)$PCAT_ROOT/doc/<topic>.md对齐迭代记录下游必须完成的额外工作(本 skill 不重复约束):
✅ 或 🔧## 兼容性统计 表的三行数字🔧 的条目,在"关键差异说明"中补一小节下游 compat-doc-authoring 的 Step 5 校验全部通过后,本轮即算完成。
闭环验证通过且文档已回填后,按以下流程提交。完整命令模板见 references/Step7.md。
git checkout develop && git pull --ff-only origin develop && git checkout -b add/<api>-<YYYYMMDD>)[Cpp API Compatibility] <对齐迭代记录标题>)git push origin <branch>)gh pr create 到 upstream(--repo PaddlePaddle/Paddle --base develop)cd "$PCAT_ROOT" && git checkout master && git pull --ff-only origin master && git checkout -b test/<api>-<YYYYMMDD>)test(<api>): align with Paddle compat <api> 行为)git push origin <branch>)gh pr create 到 upstream(--repo PFCCLab/PaddleCppAPITest --base master,PR body 中加 Related: PaddlePaddle/Paddle#<Paddle_PR_NUM>)gh pr checks <PR_NUM> --watch)
references/Step7.md 第 6 节):
Step 2 修复;同一分支上 commit + push,PR 自动更新,不发新 PRgh pr comment <PR_NUM> --body "/re-run all-failed" 重新触发 CI,回到本步骤继续 watch