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

op unittest for scatter_add, remove scatter/scatter_nd operator #1500

Merged
merged 11 commits into from
Jun 5, 2023

Conversation

zzk0
Copy link
Contributor

@zzk0 zzk0 commented Jun 3, 2023

描述

From #1378

给 scatter_add 算子添加单元测试,并移除 scatter/scatter_nd 两个算子。

@paddle-bot
Copy link

paddle-bot bot commented Jun 3, 2023

Thanks for your contribution!

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 3, 2023

描述

From #1378

scatter_add 算子。

算子类型

因为实现的原因,将其设置为无法融合的算子。

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

Test Cases Checklist

张量维度

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

special shape

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

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

张量数据类型

  • int32
  • int64
  • float16
  • float32
  • float64

广播

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

算子属性

  • axis:scatter 指定轴

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 3, 2023

关于移除 scatter/scatter_nd 的原因:

  1. scatter/scatter_nd 两个算子缺少前端、补充了前端对其测试验证、运行过程会报错、修复了部分错误后、发现计算结果对不齐,实现错误。
  2. scatter/scatter_nd 是 torch/tvm 风格的;paddle/tensorflow 的 scatter 本质上是 index_add;
  3. scatter/scatter_nd 可以使用 index_add 进行实现,因此存在冗余。

@zzk0 zzk0 requested a review from thisjiang June 5, 2023 04:16
Copy link
Collaborator

@thisjiang thisjiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@thisjiang thisjiang merged commit 99aca84 into PaddlePaddle:develop Jun 5, 2023
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.

2 participants