From f3e8c4bef699713b23b33ca81e5c4a24b12e3d54 Mon Sep 17 00:00:00 2001 From: RedContritio Date: Fri, 7 Apr 2023 11:21:01 +0800 Subject: [PATCH] support auto generate static for tril_indices and triu_indices (#52537) --- paddle/fluid/operators/tril_indices_op.cc | 91 ----------------------- paddle/fluid/operators/triu_indices_op.cc | 86 --------------------- paddle/phi/api/yaml/static_ops.yaml | 22 ++++++ 3 files changed, 22 insertions(+), 177 deletions(-) delete mode 100644 paddle/fluid/operators/tril_indices_op.cc delete mode 100644 paddle/fluid/operators/triu_indices_op.cc diff --git a/paddle/fluid/operators/tril_indices_op.cc b/paddle/fluid/operators/tril_indices_op.cc deleted file mode 100644 index 4631900e3b3..00000000000 --- a/paddle/fluid/operators/tril_indices_op.cc +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -#include - -#include "paddle/fluid/framework/infershape_utils.h" -#include "paddle/fluid/framework/op_registry.h" -#include "paddle/phi/core/infermeta_utils.h" -#include "paddle/phi/infermeta/nullary.h" - -namespace paddle { -namespace operators { - -class TrilIndicesOp : public framework::OperatorWithKernel { - public: - using framework::OperatorWithKernel::OperatorWithKernel; - - protected: - phi::KernelKey GetExpectedKernelType( - const framework::ExecutionContext& ctx) const override { - return phi::KernelKey( - framework::proto::VarType::Type(ctx.Attr("dtype")), - ctx.GetPlace()); - } -}; - -class TrilIndicesOpMaker : public framework::OpProtoAndCheckerMaker { - public: - void Make() override { - AddOutput("out", - "Tensor, the output tensor, with the shape (2,x),x bounded by " - "[0,rows*cols])"); - AddAttr("rows", - "int number, the input of tril_indices op" - "which describes the number of row of the matrix") - .SetDefault(0); - AddAttr("cols", - "int number, the input of tril_indices op" - "which describes the number of col of the matrix") - .SetDefault(0); - AddAttr( - "offset", - "int number, the input of tril_indices op bounded by [1-rows,cols-1" - "which describes the dignalline index of the lower triangular part of " - "the matrix") - .SetDefault(0); - AddAttr("dtype", "data type ,the input of tril_indices op") - .SetDefault(framework::proto::VarType::INT64); - - AddComment(R"DOC( - TrilIndices Operator. - - The tril_indices operator returns the indices of the lower triangular part of the matrix - whose rows and cols is knowed. It is a 2-by-x tensor,where the first row contains row coordinates - of all indices and the second row contains column coordinates. Indices are ordered based on - rows and then columns. The lower triangular part of the matrix is defined as the elements on - and below the diagonal. - - The argument offset controls which diagonal to consider, default value is 0. - A positive valueincludes just as many diagonals above the main diagonal, - and similarly a negative value excludes just as many diagonals below the main diagonal - )DOC"); - } -}; - -} // namespace operators -} // namespace paddle - -namespace ops = paddle::operators; -DECLARE_INFER_SHAPE_FUNCTOR(tril_indices, - TrilIndicesInferShapeFunctor, - PD_INFER_META(phi::TrilIndicesInferMeta)); - -REGISTER_OPERATOR( - tril_indices, - ops::TrilIndicesOp, - ops::TrilIndicesOpMaker, - paddle::framework::EmptyGradOpMaker, - paddle::framework::EmptyGradOpMaker, - TrilIndicesInferShapeFunctor); diff --git a/paddle/fluid/operators/triu_indices_op.cc b/paddle/fluid/operators/triu_indices_op.cc deleted file mode 100644 index 8167cb3e3f3..00000000000 --- a/paddle/fluid/operators/triu_indices_op.cc +++ /dev/null @@ -1,86 +0,0 @@ -/* Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. */ - -#include - -#include "paddle/fluid/framework/infershape_utils.h" -#include "paddle/fluid/framework/op_registry.h" -#include "paddle/phi/core/infermeta_utils.h" -#include "paddle/phi/infermeta/nullary.h" - -namespace paddle { -namespace operators { - -class TriuIndicesOp : public framework::OperatorWithKernel { - public: - using framework::OperatorWithKernel::OperatorWithKernel; - - protected: - phi::KernelKey GetExpectedKernelType( - const framework::ExecutionContext& ctx) const override { - return phi::KernelKey( - framework::proto::VarType::Type(ctx.Attr("dtype")), - ctx.GetPlace()); - } -}; - -class TriuIndicesOpMaker : public framework::OpProtoAndCheckerMaker { - public: - void Make() override { - AddOutput("out", - "Tensor, the output tensor, with the shape (2,x), x bounded by " - "[0,row*col])"); - AddAttr("row", - "int number, the input of triu_indices op" - "which describes the number of row of the matrix") - .SetDefault(0); - AddAttr("col", - "int number, the input of triu_indices op" - "which describes the number of col of the matrix") - .SetDefault(0); - AddAttr( - "offset", - "int number, the input of triu_indices op bounded by [1-rows,cols-1" - "which describes the dignalline index of the upper triangular part of " - "the matrix") - .SetDefault(0); - AddAttr("dtype", "data type ,the input of triu_indices op") - .SetDefault(framework::proto::VarType::INT64); - - AddComment(R"DOC( - TriuIndices Operator. - The triu_indices operator returns the indices of the upper triangular part of the matrix - whose rows and cols is known. It is a 2-by-x tensor, where the first row contains row coordinates - of all indices and the second row contains column coordinates. Indices are ordered based on - rows and then columns. The upper triangular part of the matrix is defined as the elements on - and below the diagonal. - The argument offset controls which diagonal to consider, default value is 0. - A positive value includes just as fewer diagonals above the main diagonal, - and similarly a negative value excludes just as fewer diagonals below the main diagonal - )DOC"); - } -}; - -} // namespace operators -} // namespace paddle - -namespace ops = paddle::operators; -DECLARE_INFER_SHAPE_FUNCTOR(triu_indices, - TriuIndicesInferShapeFunctor, - PD_INFER_META(phi::TriuIndicesInferMeta)); - -REGISTER_OPERATOR( - triu_indices, - ops::TriuIndicesOp, - ops::TriuIndicesOpMaker, - paddle::framework::EmptyGradOpMaker, - paddle::framework::EmptyGradOpMaker, - TriuIndicesInferShapeFunctor); diff --git a/paddle/phi/api/yaml/static_ops.yaml b/paddle/phi/api/yaml/static_ops.yaml index cb2adb91566..b52ae8ada06 100644 --- a/paddle/phi/api/yaml/static_ops.yaml +++ b/paddle/phi/api/yaml/static_ops.yaml @@ -257,6 +257,28 @@ kernel : func : share_buffer +- op : tril_indices + args : (int rows = 0, int cols = 0, int offset = 0, DataType dtype = DataType::INT64) + output : Tensor(out) + infer_meta : + func : TrilIndicesInferMeta + param : [rows, cols, offset, dtype] + kernel : + func : tril_indices + param : [rows, cols, offset, dtype] + data_type : dtype + +- op : triu_indices + args : (int row = 0, int col = 0, int offset = 0, DataType dtype = DataType::INT64) + output : Tensor(out) + infer_meta : + func : TriuIndicesInferMeta + param : [row, col, offset, dtype] + kernel : + func : triu_indices + param : [row, col, offset, dtype] + data_type : dtype + - op : uniform args : (IntArray shape = {}, DataType dtype = DataType::FLOAT32, Scalar min = -1.0f, Scalar max = 1.0f, int seed = 0, int diag_num = 0, int diag_step = 0, float diag_val = 1.0f) output : Tensor(out) -- GitLab