Skip to content

【快乐开源】Paddle Tensor 规范化二期 API 支持 0-size Tensor No.13:paddle.mean - #71578

Closed
cangtianhuang wants to merge 4 commits into
PaddlePaddle:developfrom
cangtianhuang:support-0-size-mean
Closed

cangtianhuang wants to merge 4 commits into
PaddlePaddle:developfrom
cangtianhuang:support-0-size-mean

Conversation

@cangtianhuang

@cangtianhuang cangtianhuang commented Mar 11, 2025 •

Copy link
Copy Markdown
Contributor

PR Category

Operator Mechanism

PR Types

Bug fixes

Description

该 PR 主要修改了 paddle.mean 的内核代码,使其支持处理 0-size Tensor 。C++ 侧修改了多个前向 kernel,但未修改反向 kernel 。增加了测试用例,包括多个形状的 0-size Tensor ,如 [], [0,], [0, 3], [2, 0, 4]。

期望的值:("mean", float("nan"))。具体修改如下:

paddle.mean

修改了 phi 库的 C++ 前向 kernel,包括 cpu、kps、onednn、xpu 等多设备。为了增强算子 kernel 的复用,修改集中在了底层的 MeanRawKernel 处。

在 paddle\phi\kernels\cpu\reduce_mean_kernel.cc 、paddle\phi\kernels\kps\reduce_kernel.cu 、paddle\phi\kernels\onednn\reduce_mean_kernel.cc 、paddle\phi\kernels\xpu\reduce_mean_kernel.cc 中,增加了对 0-size Tensor 的处理逻辑。由于输出形状已经由 SumRawInferMeta 正确推断并保存在 DenseTensor* out 中,因此无需增加额外推断逻辑,直接调用 FullKernel,填充 NaN 值并返回。

此外 ,onednn 的 FullKernel (位于 paddle\phi\kernels\onednn\full_kernel.cc)原先不支持 phi::dtype::bfloat16 类型,为其增添了注册类型。

经测试, paddle.mean 通过了 “0-size tensorAPI 支持 0-size Tensor No.13” 的测试。且在 [], [0,], [0, 3], [2, 0, 4] 等多个 0-size Tensor 形状中表现与预期一致。测试结果如下:

python -m pytest -s -vvv array_api_tests/test_special_cases.py::test_empty_arrays[mean]

image

@paddle-bot

paddle-bot Bot commented Mar 11, 2025

Copy link
Copy Markdown

你的PR提交成功,感谢你对开源项目的贡献!
请关注后续CI自动化测试结果,详情请参考Paddle-CI手册。
Your PR has been submitted. Thanks for your contribution!
Please wait for the result of CI firstly. See Paddle CI Manual for details.

@luotao1

luotao1 commented Mar 12, 2025

Copy link
Copy Markdown
Collaborator

@cangtianhuang

Copy link
Copy Markdown
Contributor Author

@cangtianhuang @cszdrg 两位有做重复么?

看上去确实是重复了,@cszdrg 的修改方法应该更佳。

@cangtianhuang

Copy link
Copy Markdown
Contributor Author

如果 #71555 的pr通过,我将关闭这个pr。或者我可以为其添加0-size tensor的测试用例。

@luotao1

luotao1 commented Mar 12, 2025

Copy link
Copy Markdown
Collaborator

如果 #71555 的pr通过,我将关闭这个pr。或者我可以为其添加0-size tensor的测试用例。

@HydrogenSulfate 请森森老师看下。测试用例应该是要添加的。

@cangtianhuang
cangtianhuang deleted the support-0-size-mean branch March 12, 2025 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contributor External developers HappyOpenSource Pro 进阶版快乐开源活动,更具挑战性的任务

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants