Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Add reduce test using new test helper #1379

Merged
merged 3 commits into from
May 9, 2023

Conversation

FisherWY
Copy link
Contributor

@FisherWY FisherWY commented Apr 27, 2023

描述

From #1378

为Reduce类型算子增加新的测试用例

序号 算子名 单测文件
57 reduce_sum test_reduce_op.py
58 reduce_prod test_reduce_op.py
59 reduce_max test_reduce_op.py
60 reduce_min test_reduce_op.py
61 reduce_all test_reduce_op.py
62 reduce_any test_reduce_op.py

算子类型

  • ElementWise:输入张量索引和输出张量索引之间存在一对一的对应关系
  • Broadcast:输入张量索引和输出张量索引之间存在一对多的对应关系
  • Injective:单射算子,可以将一个输出 axis 映射到一个输入 axis
  • Reduction:输入张量索引和输出张量索引之间存在多对一的对应关系
  • OutFusible:复杂算子,仍然可以将一对一的算子融合到其输出中。
  • kNonFusible:无法融合的算子

OpMapper

  • 该算子是否 OpMapper? 如果是,请贴出在 Paddle 中对应的 OpMaker 代码路径。(给出 Github 链接更好)

Test Cases Checklist

张量维度

  • 1D 张量
  • 2D 张量
  • 3D 张量
  • 4D 张量

special shape

挑选 2D/3D/4D 张量中的一个,测试下面的特殊情况。

  • 其中一个维度为 1
  • 其中一个维度小于 1024
  • 其中一个维度大于 1024
  • 向量的所有维度都是 1

张量数据类型

  • int32
  • int64
  • float16
  • float32
  • float64

广播

  • 这个算子是否支持广播?
  • 广播的测试样例

算子属性

算子属性的测试用例。

  • 属性:属性类型-可取值
    • op_type
    • axis
    • keepdim
  • 使用 OpTestHelper 测试上述属性的笛卡尔积组合

备注

  1. 本PR将作为快乐开源活动的参考,如需更多的参考样例,可查看python/test/ops下的test_add_op_new.pytest_relu6_op.pytest_left_shift_op.pytest_right_shift_op.pytest_scale_op.pytest_dropout_infer_op.py
  2. 测试过程可能会发现算子在某些shapedtype和属性组合的情况下出现错误,如果是较为简单的类型不支持等错误,可尝试在PR中顺带一起解决,如果是较为复杂的错误,可以寻求其他小伙伴协助解决
  3. 本PR在测试过程中发现了以下问题:
    • 数据类型为int32的情况下,paddle的sum得到的输出数据类型为int64,需要特殊处理,已添加cast算子处理
    • reduce_allreduce_anykeepdim参数未生效,已修复
    • 特殊caseshape=[64, 32, 16, 8, 4], axis=[], keepdim=True的计算结果错误,经排查发现生成的代码有数据读写冲突的问题,已修复

@paddle-bot
Copy link

paddle-bot bot commented Apr 27, 2023

Thanks for your contribution!

Add cast op on paddle reduce_sum when dtype is int32
@zzk0
Copy link
Contributor

zzk0 commented May 5, 2023

LGTM

python/tests/ops/test_reduce_op_new.py Outdated Show resolved Hide resolved
python/tests/ops/test_reduce_op_new.py Outdated Show resolved Hide resolved
@thisjiang thisjiang merged commit 90cb75f into PaddlePaddle:develop May 9, 2023
jiahy0825 pushed a commit to jiahy0825/CINN that referenced this pull request May 25, 2023
* Add reduce test using new test helper

* Fix output shape error when numel = 1

Add cast op on paddle reduce_sum when dtype is int32

* Fix reduce result error when keepdim = True
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants