Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/skills/add-compat-api/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,12 +202,12 @@ bash test/result_cmp.sh ./build/

闭环验证通过且文档已回填后,按以下流程提交。完整命令模板见 [`references/Step7.md`](references/Step7.md)。

1. **从 fork 主分支 checkout 新分支**(`git fetch upstream && git checkout -B add/<api>-<YYYYMMDD> upstream/develop`)
1. **从本地跟踪 origin 的 develop 创建新分支**(`git checkout develop && git pull --ff-only origin develop && git checkout -b add/<api>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `[Cpp API Compatibility] <对齐迭代记录标题>`)
3. **push 到 fork**(`git push origin <branch>`)
4. **`gh pr create` 到 upstream**(`--repo PaddlePaddle/Paddle --base develop`)
5. **同步 PCAT 测试改动**
1. **从 fork 主分支 checkout 新分支**(`cd "$PCAT_ROOT" && git fetch upstream && git checkout -B test/<api>-<YYYYMMDD> upstream/master`)
1. **从本地跟踪 origin 的 master 创建新分支**(`cd "$PCAT_ROOT" && git checkout master && git pull --ff-only origin master && git checkout -b test/<api>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `test(<api>): align with Paddle compat <api> 行为`)
3. **push 到 fork**(`git push origin <branch>`)
4. **`gh pr create` 到 upstream**(`--repo PFCCLab/PaddleCppAPITest --base master`,PR body 中加 `Related: PaddlePaddle/Paddle#<Paddle_PR_NUM>`)
Expand Down
18 changes: 11 additions & 7 deletions .claude/skills/add-compat-api/references/Step7.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,27 @@

任一未通过 → **不要**进入本流程。

## 1) 从 fork 主分支 checkout 新分支
## 1) 从本地跟踪 origin 的基分支创建新分支

### Paddle 侧

```bash
cd "$PADDLE_ROOT"
git fetch upstream
git checkout develop
git pull --ff-only origin develop
# add 流程
git checkout -B "add/<api-name>-$(date +%Y%m%d)" upstream/develop
git checkout -b "add/<api-name>-$(date +%Y%m%d)"
# fix 流程
git checkout -B "fix/<pr-or-issue-num>-$(date +%Y%m%d)" upstream/develop
git checkout -b "fix/<pr-or-issue-num>-$(date +%Y%m%d)"
```

分支命名规则:
- add:`add/<api-name>-<YYYYMMDD>`(例:`add/abs-20260519`)
- fix:`fix/<pr-num>-<YYYYMMDD>`(例:`fix/78652-20260519`)

> 前提:Paddle 仓库已配置 `origin = <user>/Paddle` 与 `upstream = PaddlePaddle/Paddle`。若 remote 缺失,**提示用户配置后再继续**,不要主动改用户仓库的 remote。
> 实际执行时只选 add 或 fix 对应的一条 `git checkout -b`。若分支已存在,`git checkout -b` 会失败;换新分支名或让用户手动处理,**不要**改用 `-B` 覆盖已有分支。
>
> 前提:Paddle 仓库已配置 `origin = <user>/Paddle` 与 `upstream = PaddlePaddle/Paddle`,且本地 `develop` 跟踪 `origin/develop`。若 remote 或本地基分支缺失,**提示用户配置后再继续**,不要主动改用户仓库的 remote。

## 2) commit 改动

Expand Down Expand Up @@ -100,8 +103,9 @@ EOF

```bash
cd "$PCAT_ROOT"
git fetch upstream
git checkout -B "test/<api>-$(date +%Y%m%d)" upstream/master
git checkout master
git pull --ff-only origin master
git checkout -b "test/<api>-$(date +%Y%m%d)"
git add test/<改动文件>
git commit -m "test(<api>): align with Paddle compat <api> 行为"
git push origin <branch>
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/fix-compat-api/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ bash test/result_cmp.sh ./build/

闭环验证通过且文档已回填后,按以下流程提交。完整命令模板见 [`../add-compat-api/references/Step7.md`](../add-compat-api/references/Step7.md)(与 `add-compat-api` 共享同一份 references)。

1. **从 fork 主分支 checkout 新分支**(`git fetch upstream && git checkout -B fix/<pr-or-issue-num>-<YYYYMMDD> upstream/develop`)
1. **从本地跟踪 origin 的 develop 创建新分支**(`git checkout develop && git pull --ff-only origin develop && git checkout -b fix/<pr-or-issue-num>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `[Cpp API Compatibility] <Compat 修复记录标题>`)
3. **征求用户同意后 push 到 fork**(`git push origin <branch>`——这是发出去的动作,**push 前必须明确询问用户**)
4. **征求用户同意后 `gh pr create` 到 upstream**(`--repo PaddlePaddle/Paddle --base develop`——同样需要用户确认;若本轮修复源自外部 PR/Actions/comment 链接,PR 描述里应**引用原链接**便于追溯)
Expand Down
4 changes: 2 additions & 2 deletions .github/skills/add-compat-api/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,12 +202,12 @@ bash test/result_cmp.sh ./build/

闭环验证通过且文档已回填后,按以下流程提交。完整命令模板见 [`references/Step7.md`](references/Step7.md)。

1. **从 fork 主分支 checkout 新分支**(`git fetch upstream && git checkout -B add/<api>-<YYYYMMDD> upstream/develop`)
1. **从本地跟踪 origin 的 develop 创建新分支**(`git checkout develop && git pull --ff-only origin develop && git checkout -b add/<api>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `[Cpp API Compatibility] <对齐迭代记录标题>`)
3. **push 到 fork**(`git push origin <branch>`)
4. **`gh pr create` 到 upstream**(`--repo PaddlePaddle/Paddle --base develop`)
5. **同步 PCAT 测试改动**
1. **从 fork 主分支 checkout 新分支**(`cd "$PCAT_ROOT" && git fetch upstream && git checkout -B test/<api>-<YYYYMMDD> upstream/master`)
1. **从本地跟踪 origin 的 master 创建新分支**(`cd "$PCAT_ROOT" && git checkout master && git pull --ff-only origin master && git checkout -b test/<api>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `test(<api>): align with Paddle compat <api> 行为`)
3. **push 到 fork**(`git push origin <branch>`)
4. **`gh pr create` 到 upstream**(`--repo PFCCLab/PaddleCppAPITest --base master`,PR body 中加 `Related: PaddlePaddle/Paddle#<Paddle_PR_NUM>`)
Expand Down
18 changes: 11 additions & 7 deletions .github/skills/add-compat-api/references/Step7.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,27 @@

任一未通过 → **不要**进入本流程。

## 1) 从 fork 主分支 checkout 新分支
## 1) 从本地跟踪 origin 的基分支创建新分支

### Paddle 侧

```bash
cd "$PADDLE_ROOT"
git fetch upstream
git checkout develop
git pull --ff-only origin develop
# add 流程
git checkout -B "add/<api-name>-$(date +%Y%m%d)" upstream/develop
git checkout -b "add/<api-name>-$(date +%Y%m%d)"
# fix 流程
git checkout -B "fix/<pr-or-issue-num>-$(date +%Y%m%d)" upstream/develop
git checkout -b "fix/<pr-or-issue-num>-$(date +%Y%m%d)"
```

分支命名规则:
- add:`add/<api-name>-<YYYYMMDD>`(例:`add/abs-20260519`)
- fix:`fix/<pr-num>-<YYYYMMDD>`(例:`fix/78652-20260519`)

> 前提:Paddle 仓库已配置 `origin = <user>/Paddle` 与 `upstream = PaddlePaddle/Paddle`。若 remote 缺失,**提示用户配置后再继续**,不要主动改用户仓库的 remote。
> 实际执行时只选 add 或 fix 对应的一条 `git checkout -b`。若分支已存在,`git checkout -b` 会失败;换新分支名或让用户手动处理,**不要**改用 `-B` 覆盖已有分支。
>
> 前提:Paddle 仓库已配置 `origin = <user>/Paddle` 与 `upstream = PaddlePaddle/Paddle`,且本地 `develop` 跟踪 `origin/develop`。若 remote 或本地基分支缺失,**提示用户配置后再继续**,不要主动改用户仓库的 remote。

## 2) commit 改动

Expand Down Expand Up @@ -100,8 +103,9 @@ EOF

```bash
cd "$PCAT_ROOT"
git fetch upstream
git checkout -B "test/<api>-$(date +%Y%m%d)" upstream/master
git checkout master
git pull --ff-only origin master
git checkout -b "test/<api>-$(date +%Y%m%d)"
git add test/<改动文件>
git commit -m "test(<api>): align with Paddle compat <api> 行为"
git push origin <branch>
Expand Down
2 changes: 1 addition & 1 deletion .github/skills/fix-compat-api/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ bash test/result_cmp.sh ./build/

闭环验证通过且文档已回填后,按以下流程提交。完整命令模板见 [`../add-compat-api/references/Step7.md`](../add-compat-api/references/Step7.md)(与 `add-compat-api` 共享同一份 references)。

1. **从 fork 主分支 checkout 新分支**(`git fetch upstream && git checkout -B fix/<pr-or-issue-num>-<YYYYMMDD> upstream/develop`)
1. **从本地跟踪 origin 的 develop 创建新分支**(`git checkout develop && git pull --ff-only origin develop && git checkout -b fix/<pr-or-issue-num>-<YYYYMMDD>`)
2. **commit 改动**(commit message 首行使用 `[Cpp API Compatibility] <Compat 修复记录标题>`)
3. **征求用户同意后 push 到 fork**(`git push origin <branch>`——这是发出去的动作,**push 前必须明确询问用户**)
4. **征求用户同意后 `gh pr create` 到 upstream**(`--repo PaddlePaddle/Paddle --base develop`——同样需要用户确认;若本轮修复源自外部 PR/Actions/comment 链接,PR 描述里应**引用原链接**便于追溯)
Expand Down
6 changes: 6 additions & 0 deletions test/ATen/core/TensorUtilTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <torch/all.h>

#include <string>
#include <utility>
#include <vector>

#include "src/file_manager.h"
Expand All @@ -17,6 +18,11 @@ namespace test {
using paddle_api_test::FileManerger;
using paddle_api_test::ThreadSafeParam;

static_assert(noexcept(std::declval<const at::TensorBase&>().is_same(
std::declval<const at::TensorBase&>())));
static_assert(noexcept(std::declval<const at::TensorBase&>().use_count()));
static_assert(noexcept(std::declval<const at::TensorBase&>().weak_use_count()));

class TensorUtilTest : public ::testing::Test {
protected:
void SetUp() override {
Expand Down
52 changes: 38 additions & 14 deletions test/ATen/ops/AsStridedTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,8 @@ class AsStridedTest : public ::testing::Test {
void SetUp() override {}
};

// 返回当前用例的结果文件名
std::string GetTestCaseResultFileName() {
std::string base = g_custom_param.get();
std::string test_name =
::testing::UnitTest::GetInstance()->current_test_info()->name();
if (base.size() >= 4 && base.substr(base.size() - 4) == ".txt") {
base.resize(base.size() - 4);
}
return base + "_" + test_name + ".txt";
}

TEST_F(AsStridedTest, AsStrided) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.createFile();
file << "AsStrided ";
at::Tensor tensor = at::ones({2, 3, 4}, at::kFloat);
Expand All @@ -44,7 +33,7 @@ TEST_F(AsStridedTest, AsStrided) {
}

TEST_F(AsStridedTest, AsStridedInplace) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "AsStridedInplace ";
at::Tensor tensor = at::ones({2, 3, 4}, at::kFloat);
Expand All @@ -57,7 +46,7 @@ TEST_F(AsStridedTest, AsStridedInplace) {
}

TEST_F(AsStridedTest, AsStridedScatter) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "AsStridedScatter ";
at::Tensor tensor = at::ones({2, 3, 4}, at::kFloat);
Expand All @@ -69,5 +58,40 @@ TEST_F(AsStridedTest, AsStridedScatter) {
file.saveFile();
}

TEST_F(AsStridedTest, AsStridedScatterPreservesInputShape) {
FileManerger file(g_custom_param.get());
file.openAppend();
file << "AsStridedScatterPreservesInputShape ";
at::Tensor tensor = at::arange(12, at::kFloat);
at::Tensor src = at::full({2, 3}, 99.0f, at::kFloat);
at::Tensor result = tensor.as_strided_scatter(src, {2, 3}, {3, 1});
file << std::to_string(result.dim()) << " ";
file << std::to_string(result.sizes()[0]) << " ";
float* data = result.data_ptr<float>();
for (int i = 0; i < 6; ++i) {
file << std::to_string(data[i]) << " ";
}
file << "\n";
file.saveFile();
}

TEST_F(AsStridedTest, AsStridedScatterWithOffset) {
FileManerger file(g_custom_param.get());
file.openAppend();
file << "AsStridedScatterWithOffset ";
at::Tensor tensor = at::arange(12, at::kFloat);
at::Tensor src = at::full({2, 2}, 88.0f, at::kFloat);
at::Tensor result = tensor.as_strided_scatter(src, {2, 2}, {2, 1}, 2);
file << std::to_string(result.dim()) << " ";
file << std::to_string(result.sizes()[0]) << " ";
float* data = result.data_ptr<float>();
file << std::to_string(data[0]) << " ";
file << std::to_string(data[2]) << " ";
file << std::to_string(data[3]) << " ";
file << std::to_string(data[5]) << " ";
file << "\n";
file.saveFile();
}

} // namespace test
} // namespace at
13 changes: 1 addition & 12 deletions test/ATen/ops/BitwiseTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,8 @@ class BitwiseTest : public ::testing::Test {
void SetUp() override {}
};

// 返回当前用例的结果文件名
std::string GetTestCaseResultFileName() {
std::string base = g_custom_param.get();
std::string test_name =
::testing::UnitTest::GetInstance()->current_test_info()->name();
if (base.size() >= 4 && base.substr(base.size() - 4) == ".txt") {
base.resize(base.size() - 4);
}
return base + "_" + test_name + ".txt";
}

TEST_F(BitwiseTest, BitwiseRightShift) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.createFile();
file << "BitwiseRightShift ";
at::Tensor input = at::ones({2, 3}, at::kInt).fill_(8);
Expand Down
35 changes: 12 additions & 23 deletions test/ATen/ops/ClampTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,8 @@ class ClampTest : public ::testing::Test {
void SetUp() override {}
};

// 返回当前用例的结果文件名
std::string GetTestCaseResultFileName() {
std::string base = g_custom_param.get();
std::string test_name =
::testing::UnitTest::GetInstance()->current_test_info()->name();
if (base.size() >= 4 && base.substr(base.size() - 4) == ".txt") {
base.resize(base.size() - 4);
}
return base + "_" + test_name + ".txt";
}

TEST_F(ClampTest, ClampScalarMinMax) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.createFile();
file << "ClampScalarMinMax ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -44,7 +33,7 @@ TEST_F(ClampTest, ClampScalarMinMax) {
}

TEST_F(ClampTest, ClampTensorMinMax) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampTensorMinMax ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -57,7 +46,7 @@ TEST_F(ClampTest, ClampTensorMinMax) {
}

TEST_F(ClampTest, ClampInplaceScalar) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampInplaceScalar ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -69,7 +58,7 @@ TEST_F(ClampTest, ClampInplaceScalar) {
}

TEST_F(ClampTest, ClampInplaceTensor) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampInplaceTensor ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -82,7 +71,7 @@ TEST_F(ClampTest, ClampInplaceTensor) {
}

TEST_F(ClampTest, ClampMaxScalar) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMaxScalar ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -94,7 +83,7 @@ TEST_F(ClampTest, ClampMaxScalar) {
}

TEST_F(ClampTest, ClampMaxTensor) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMaxTensor ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -106,7 +95,7 @@ TEST_F(ClampTest, ClampMaxTensor) {
}

TEST_F(ClampTest, ClampMaxInplace) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMaxInplace ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -118,7 +107,7 @@ TEST_F(ClampTest, ClampMaxInplace) {
}

TEST_F(ClampTest, ClampMaxInplaceTensor) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMaxInplaceTensor ";
at::Tensor input = at::ones({2, 3}, at::kFloat).fill_(5.0f);
Expand All @@ -130,7 +119,7 @@ TEST_F(ClampTest, ClampMaxInplaceTensor) {
}

TEST_F(ClampTest, ClampMinScalar) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMinScalar ";
at::Tensor input = at::ones({2, 3}, at::kFloat);
Expand All @@ -142,7 +131,7 @@ TEST_F(ClampTest, ClampMinScalar) {
}

TEST_F(ClampTest, ClampMinTensor) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMinTensor ";
at::Tensor input = at::ones({2, 3}, at::kFloat);
Expand All @@ -154,7 +143,7 @@ TEST_F(ClampTest, ClampMinTensor) {
}

TEST_F(ClampTest, ClampMinInplace) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMinInplace ";
at::Tensor input = at::ones({2, 3}, at::kFloat);
Expand All @@ -166,7 +155,7 @@ TEST_F(ClampTest, ClampMinInplace) {
}

TEST_F(ClampTest, ClampMinInplaceTensor) {
FileManerger file(GetTestCaseResultFileName());
FileManerger file(g_custom_param.get());
file.openAppend();
file << "ClampMinInplaceTensor ";
at::Tensor input = at::ones({2, 3}, at::kFloat);
Expand Down
Loading
Loading