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

op unittest for cbrt/ceil/cholesky/concat/constant/fill_constant #1495

Merged
merged 11 commits into from
Jun 8, 2023

Conversation

zzk0
Copy link
Contributor

@zzk0 zzk0 commented Jun 2, 2023

描述

From #1378

给 cbrt/ceil/cholesky/concat/constant 算子添加单元测试。

@paddle-bot
Copy link

paddle-bot bot commented Jun 2, 2023

Thanks for your contribution!

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 2, 2023

描述

From #1378

cbrt 算子。

算子类型

  • 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

广播

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

算子属性

无。

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 2, 2023

描述

From #1378

ceil 算子。

算子类型

  • 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

广播

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

算子属性

无。

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 2, 2023

描述

From #1378

cholesky 算子。

算子类型

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

Test Cases Checklist

张量维度

cholesky 支持 [*, N, N] 形式的输入,batch 维度可以缺失,因此只能测试 2D 张量或者 3D 张量

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

special shape

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

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

张量数据类型

  • int32
  • int64
  • float16
  • float32
  • float64

广播

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

算子属性

  • upper:对上三角还是下三角进行了测试。

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 2, 2023

描述

From #1378

concat 算子。

算子类型

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

Test Cases Checklist

张量维度

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

special shape

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

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

张量数据类型

  • bool
  • uint8
  • int8
  • int32
  • int64
  • float16
  • float32
  • float64

广播

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

算子属性

  • 该算子支持多个输入,测试了输入参数个数为 1-4 的情况,每个参数数量配置测试了 1D-4D 张量
  • axis: 指定 concat 的维度。

@zzk0
Copy link
Contributor Author

zzk0 commented Jun 2, 2023

描述

From #1378

constant 算子。

算子类型

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

Test Cases Checklist

张量维度

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

special shape

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

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

张量数据类型

  • bool
  • uint8
  • int8
  • int32
  • int64
  • float16
  • float32
  • float64

广播

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

算子属性

  • 支持常量类型的输入,对其进行了测试。

cinn/pybind/frontend.cc Show resolved Hide resolved
python/tests/ops/test_constant_op.py Show resolved Hide resolved
@zzk0 zzk0 changed the title op unittest for cbrt/ceil/cholesky/concat/constant op unittest for cbrt/ceil/cholesky/concat/constant/fill_constant Jun 3, 2023
@zzk0
Copy link
Contributor Author

zzk0 commented Jun 3, 2023

描述

From #1378

fill_constant 算子。

算子类型

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

Test Cases Checklist

张量维度

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

special shape

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

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

张量数据类型

  • bool
  • uint8
  • int8
  • int32
  • int64
  • float16
  • float32
  • float64

广播

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

算子属性

fill_constant 提供的接口如下:测试了 dtype 参数是否空的情况、测试了 value 为 bool、int64、float64、str 四种情况。

#define PY_REGISTER_FILLCONSTANT_OP(TYPE__)                                   \
     .def("fill_constant",                                                    \
          static_cast<Variable (NetBuilder::*)(                               \
               const std::vector<int> &, TYPE__, const std::string &, bool)>( \
               &NetBuilder::template FillConstant<TYPE__>),                   \
          py::arg("shape"),                                                   \
          py::arg("value"),                                                   \
          py::arg("name") = "",                                               \
          py::arg("force_cpu") = false)
          EXPAND_CINN_SUPPORT_TYPE(PY_REGISTER_FILLCONSTANT_OP)
#undef PY_REGISTER_FILLCONSTANT_OP

      .def("fill_constant",
           static_cast<Variable (NetBuilder::*)(
               const std::vector<int> &, float, const std::string &, const std::string &, bool)>(
               &NetBuilder::FillConstant),
           py::arg("shape"),
           py::arg("value"),
           py::arg("name") = "",
           py::arg("dtype"),
           py::arg("force_cpu") = false)

      .def("fill_constant",
           static_cast<Variable (NetBuilder::*)(
               const std::vector<int> &, const std::string &, const std::string &, const std::string &, bool)>(
               &NetBuilder::FillConstant),
           py::arg("shape"),
           py::arg("value"),
           py::arg("name") = "",
           py::arg("dtype"),
           py::arg("force_cpu") = false)

python/tests/ops/test_ceil_op.py Outdated Show resolved Hide resolved
python/tests/ops/test_cbrt_op.py Outdated Show resolved Hide resolved
python/tests/ops/test_fill_constant_op.py Show resolved Hide resolved
@zzk0 zzk0 requested a review from thisjiang June 8, 2023 01:17
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 c0d5079 into PaddlePaddle:develop Jun 8, 2023
BiynXu added a commit that referenced this pull request Jun 19, 2023
* op unittest for cbrt/ceil/cholesky/concat/constant/fill_constant (#1495)

* op unittest for cbrt

* op unittest for ceil

* op unittest for cholesky

* op unittest for concat

* op unittest for constant

* add 4d test for constant op

* fix ci

* op unittest for fill_constant

* op unittest for fill_constant

* refine

* fix(schedule): fix SimpleComputeAt primitive (#1504)

* Fix reduce cast schedule bug (#1512)

* fix(fuse): fix reduce cast schedule bug

* test(fuse): add unittest for reduce_cast subgroup

* Refactor some op tests and fix bugs (#1515)

* Add depthwise_conv2d op test

* Refactor log op test

* Refactor round op test and fix bugs

* Only test depthwise_conv2d in cuda_cudnn

* op unittest for repeat/arange/reverse/elementwise_add_grad/flip (#1514)

* op unittest for repeat op

* add repeat frontend

* op unittest for repeat

* op unittest for arange

* op unittest for reverse

* format & remove old add op test

* op unittest for flipe && remove redundant flip implementation

* remove test_add_op_new.py

* update reverse

* Refactor some op tests and fix bugs (#1513)

* Refactor op isclose test

* Refactor op logical_right_shift and add more dtypes support

* Refactor pow op test and fix bugs

* Refactor lookup_table op test

* Add logical_right_shift host function proto

* Improve isclose test case

* Fixed jitify commit to prevent header file conflicts (#1522)

* Fixed jitify commit to prevent header file conflicts

* Set random seed for debug floor_divide

* Avoid oom error

* Just for debug ci

* Fix floor_divide error when input dtype is int

* Fix bugs and add more tests for floor_divide

* Experimental PR for the first OP to clean old schedule (#1524)

---------

Co-authored-by: zzk0 <[email protected]>
Co-authored-by: Fisher <[email protected]>
Co-authored-by: Huihuang Zheng <[email protected]>
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