Skip to content
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
2 changes: 1 addition & 1 deletion doc/ATen/core/tensor_body.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
| `ccol_indices` | ⏳ | ⏳ | P2 | |
| `ceil` | ⏳ | ⏳ | P2 | |
| `chalf` | ⏳ | ⏳ | P2 | |
| `cholesky` | | | P2 | |
| `cholesky` | | | P2 | Tensor 方法与 at::cholesky 均已实现 |
| `cholesky_inverse` | ⏳ | ⏳ | P2 | |
| `cholesky_solve` | ⏳ | ⏳ | P2 | |
| `clamp` | ✅ | ✅ | P2 | 已实现 Scalar 和 Tensor 版本 |
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
Loading
Loading