一个用于验证 PaddlePaddle 和 PyTorch API 兼容性的 C++ 测试框架项目,依托 API 单元测试和持续守护流程,降低第三方库从 PyTorch 迁移到 PaddlePaddle 的技术门槛。
- CMake >= 3.18
- C++17
- Python 3.x (用于检测 PaddlePaddle)
- PaddlePaddle (通过 Python 包自动检测)
- PyTorch (libtorch,默认路径: /usr/lib/libtorch/)
- Google Test (源码依赖,项目自动下载和构建)
git clone <project-url>
cd PaddleCPPAPITestmkdir build && cd build
cmake ../PaddleCPPAPITest -DTORCH_DIR=<libtorch path> -G Ninjaninja./paddle/paddle_TensorTest./torch/torch_TensorTestctestcd .. && ./test/result_cmp.sh build项目已配置以下代码风格工具:
- clang-format: C++ 代码格式化
- Ruff: Python 代码检查
- pre-commit: Git 提交前检查
项目内置了 Claude Code Skill(.claude/skills/compatibility-testing/),用于规范化 Paddle/PyTorch C++ API 兼容性测试的编写流程。该 Skill 在涉及 API 测试编写、跨框架对比验证等场景时自动激活。
- 新增 ATen 算子的兼容性测试(如
test/ops/AbsTest.cpp) - 排查 Paddle 与 PyTorch 在特定算子上的行为差异
- 扩展现有测试的 shape / dtype 覆盖范围
| 类别 | 说明 |
|---|---|
| 文件结构 | 统一的头文件引用、at::test 命名空间、FileManerger 结果输出 |
| Shape 覆盖 | 标量 {}、小 shape、大 shape(10000+)、含零维度、非连续内存布局 |
| Dtype 覆盖 | kFloat / kDouble / kInt / kLong / kBool 等 8 种标准类型 |
| 算子分类 | Creation、Math、Shape、Indexing、Comparison、Reduction 六大类 |
| 对比流程 | 同源代码分别编译 Torch / Paddle 版本,通过输出文件 diff 验证一致性 |
完整指南见 SKILL.md。