From 712ccfbf16de252b5322acb3bd4adf87ac288ab2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9F=B3=E6=99=93=E4=BC=9F?= <39303645+Shixiaowei02@users.noreply.github.com> Date: Tue, 25 Jan 2022 16:55:01 +0800 Subject: [PATCH] fix custom ops, test=develop (#39153) --- paddle/pten/api/include/tensor.h | 6 ++++ paddle/pten/api/lib/tensor.cc | 20 +++++++---- .../fluid/tests/custom_op/attr_test_op.cc | 34 ++++++++----------- .../fluid/tests/custom_op/concat_and_split.h | 6 ++-- .../fluid/tests/custom_op/custom_conj_op.cc | 4 +-- .../fluid/tests/custom_op/dispatch_test_op.cc | 24 ++++--------- 6 files changed, 43 insertions(+), 51 deletions(-) diff --git a/paddle/pten/api/include/tensor.h b/paddle/pten/api/include/tensor.h index d2afd703ea..e93b9be704 100644 --- a/paddle/pten/api/include/tensor.h +++ b/paddle/pten/api/include/tensor.h @@ -505,6 +505,12 @@ class PADDLE_API Tensor final { * in the development of new dygraph. It may be removed in the future. */ std::string name_{""}; + + /** + * Place type: Return the expected memory location if the Tensor is + * uninitialized. + */ + PlaceType place_{PlaceType::kUNK}; }; } // namespace experimental diff --git a/paddle/pten/api/lib/tensor.cc b/paddle/pten/api/lib/tensor.cc index d598b9a08c..02fd918d79 100644 --- a/paddle/pten/api/lib/tensor.cc +++ b/paddle/pten/api/lib/tensor.cc @@ -78,7 +78,8 @@ Tensor::Tensor(const PlaceType &place) ConvertExtPlaceToInnerPlace(place))), std::move(pten::DenseTensorMeta(pten::DataType::UNDEFINED, framework::make_ddim({}), - pten::DataLayout::NCHW))))) {} + pten::DataLayout::NCHW))))), + place_{place} {} Tensor::Tensor(const PlaceType &place, const std::vector &shape) : impl_(std::move(std::make_shared( @@ -86,7 +87,8 @@ Tensor::Tensor(const PlaceType &place, const std::vector &shape) ConvertExtPlaceToInnerPlace(place))), std::move(pten::DenseTensorMeta(pten::DataType::UNDEFINED, framework::make_ddim(shape), - pten::DataLayout::NCHW))))) {} + pten::DataLayout::NCHW))))), + place_{place} {} /* Part 2: Dimension, DataType and DataLayout methods */ @@ -131,17 +133,23 @@ bool Tensor::is_dense_tensor() const { /* Part 3: Device and Backend methods */ PlaceType Tensor::place() const { - return ConvertInnerPlaceToExtPlace(impl_->place()); + if (!impl_->initialized()) { + return place_; + } else { + return ConvertInnerPlaceToExtPlace(impl_->place()); + } } -paddle::platform::Place Tensor::inner_place() const { return impl_->place(); } +paddle::platform::Place Tensor::inner_place() const { + return ConvertExtPlaceToInnerPlace(place()); +} bool Tensor::is_cpu() const { - return paddle::platform::is_cpu_place(impl_->place()); + return paddle::platform::is_cpu_place(inner_place()); } bool Tensor::is_cuda() const { - return paddle::platform::is_gpu_place(impl_->place()); + return paddle::platform::is_gpu_place(inner_place()); } /* Part 4: Data Access methods */ diff --git a/python/paddle/fluid/tests/custom_op/attr_test_op.cc b/python/paddle/fluid/tests/custom_op/attr_test_op.cc index 1c79d9a26a..14cb0aa7c7 100644 --- a/python/paddle/fluid/tests/custom_op/attr_test_op.cc +++ b/python/paddle/fluid/tests/custom_op/attr_test_op.cc @@ -137,9 +137,7 @@ std::vector AttrTestForward( PD_DISPATCH_FLOATING_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); // Check attrs value @@ -177,13 +175,12 @@ std::vector AttrTestBackward( const std::vector& str_vec_attr) { auto grad_x = paddle::Tensor(paddle::PlaceType::kCPU, grad_out.shape()); - PD_DISPATCH_FLOATING_TYPES( - grad_out.type(), "assign_cpu_kernel", ([&] { - assign_cpu_kernel( - grad_out.data(), - grad_x.mutable_data(paddle::PlaceType::kCPU), - grad_out.size()); - })); + PD_DISPATCH_FLOATING_TYPES(grad_out.type(), "assign_cpu_kernel", ([&] { + assign_cpu_kernel( + grad_out.data(), + grad_x.mutable_data(), + grad_out.size()); + })); CheckAllBackwardAttrs(int_attr, float_vec_attr, str_vec_attr); @@ -206,9 +203,7 @@ std::vector ConstAttrTestForward( PD_DISPATCH_FLOATING_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); // Check attrs value @@ -246,13 +241,12 @@ std::vector ConstAttrTestBackward( const std::vector& str_vec_attr) { auto grad_x = paddle::Tensor(paddle::PlaceType::kCPU, grad_out.shape()); - PD_DISPATCH_FLOATING_TYPES( - grad_out.type(), "assign_cpu_kernel", ([&] { - assign_cpu_kernel( - grad_out.data(), - grad_x.mutable_data(paddle::PlaceType::kCPU), - grad_out.size()); - })); + PD_DISPATCH_FLOATING_TYPES(grad_out.type(), "assign_cpu_kernel", ([&] { + assign_cpu_kernel( + grad_out.data(), + grad_x.mutable_data(), + grad_out.size()); + })); CheckAllBackwardAttrs(int_attr, float_vec_attr, str_vec_attr); diff --git a/python/paddle/fluid/tests/custom_op/concat_and_split.h b/python/paddle/fluid/tests/custom_op/concat_and_split.h index cbec4653a2..9f24cc4369 100644 --- a/python/paddle/fluid/tests/custom_op/concat_and_split.h +++ b/python/paddle/fluid/tests/custom_op/concat_and_split.h @@ -47,7 +47,7 @@ void ConcatCpuKernel(const std::vector& ins, int64_t out_cols = 0; auto ins_cols = GetCols(ins, out_rows, &out_cols); - auto* out_data = out->mutable_data(paddle::PlaceType::kCPU); + auto* out_data = out->mutable_data(); int64_t col_idx = 0; for (size_t i = 0; i < num; ++i) { int64_t col_len = ins_cols[i]; @@ -76,9 +76,7 @@ void SplitCpuKernel(const paddle::Tensor& in, int64_t col_idx = 0; for (size_t j = 0; j < num; ++j) { int64_t col_len = out_cols[j]; - auto* out_data = - outs->at(j).mutable_data(paddle::PlaceType::kCPU) + - i * col_len; + auto* out_data = outs->at(j).mutable_data() + i * col_len; std::memcpy(out_data, in_data + col_idx, sizeof(data_t) * col_len); col_idx += col_len; } diff --git a/python/paddle/fluid/tests/custom_op/custom_conj_op.cc b/python/paddle/fluid/tests/custom_op/custom_conj_op.cc index ae60799d23..b9c10f479e 100644 --- a/python/paddle/fluid/tests/custom_op/custom_conj_op.cc +++ b/python/paddle/fluid/tests/custom_op/custom_conj_op.cc @@ -76,9 +76,7 @@ std::vector ConjFunction(const paddle::Tensor& x) { PD_DISPATCH_FLOATING_AND_COMPLEX_TYPES( x.type(), "ConjCPUKernel", ([&] { ConjCPUKernel( - x.data(), - x.size(), - out.mutable_data(paddle::PlaceType::kCPU)); + x.data(), x.size(), out.mutable_data()); })); return {out}; diff --git a/python/paddle/fluid/tests/custom_op/dispatch_test_op.cc b/python/paddle/fluid/tests/custom_op/dispatch_test_op.cc index d5f161fc5b..0f7d323b54 100644 --- a/python/paddle/fluid/tests/custom_op/dispatch_test_op.cc +++ b/python/paddle/fluid/tests/custom_op/dispatch_test_op.cc @@ -32,9 +32,7 @@ std::vector DispatchTestInterger(const paddle::Tensor& x) { PD_DISPATCH_INTEGRAL_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; @@ -52,9 +50,7 @@ std::vector DispatchTestFloatAndInteger( PD_DISPATCH_FLOATING_AND_INTEGRAL_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; @@ -71,9 +67,7 @@ std::vector DispatchTestComplex(const paddle::Tensor& x) { PD_DISPATCH_COMPLEX_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; @@ -91,9 +85,7 @@ std::vector DispatchTestFloatAndComplex( PD_DISPATCH_FLOATING_AND_COMPLEX_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; @@ -111,9 +103,7 @@ std::vector DispatchTestFloatAndIntegerAndComplex( PD_DISPATCH_FLOATING_AND_INTEGRAL_AND_COMPLEX_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; @@ -130,9 +120,7 @@ std::vector DispatchTestFloatAndHalf(const paddle::Tensor& x) { PD_DISPATCH_FLOATING_AND_HALF_TYPES( x.type(), "assign_cpu_kernel", ([&] { assign_cpu_kernel( - x.data(), - out.mutable_data(paddle::PlaceType::kCPU), - x.size()); + x.data(), out.mutable_data(), x.size()); })); return {out}; -- GitLab