diff --git a/paddle/fluid/framework/operator.cc b/paddle/fluid/framework/operator.cc index 36208c41ed5dcaa4a69a3610b269948a639862a2..b12ad552aba6e6e599689c05c23ae306110aa78f 100644 --- a/paddle/fluid/framework/operator.cc +++ b/paddle/fluid/framework/operator.cc @@ -2108,12 +2108,6 @@ void OperatorWithKernel::BuildPhiKernelContext( "Unsupported output `%s` type when call pt kernel.", framework::ToTypeName(var->Type()))); } - - experimental::ResetTensorDtypeAndLayoutByArgDef(tensor_out, - output_defs.at(i)); - SetAllocationForOutputTenosr( - tensor_out, phi::TransToPhiPlace(output_defs.at(i).backend)); - pt_kernel_context->EmplaceBackOutputWithoutSetRange(tensor_out); } diff --git a/paddle/fluid/framework/phi_utils.cc b/paddle/fluid/framework/phi_utils.cc index 1a39a87fb99b15c007462b9eb9e63edfb5c3980c..93bc2c02d57cb7b57cf48d6f5c34a27a97637377 100644 --- a/paddle/fluid/framework/phi_utils.cc +++ b/paddle/fluid/framework/phi_utils.cc @@ -233,26 +233,5 @@ static void SetAllocationForUninitializedDenseTensor( dense_tensor->ResetHolder(shared_allocation); } -void SetAllocationForOutputTenosr(phi::TensorBase* tensor, - const platform::Place& place) { - if (phi::DenseTensor::classof(tensor)) { - auto* dense_tensor = static_cast(tensor); - if (!dense_tensor->IsInitialized() || !(dense_tensor->place() == place)) { - SetAllocationForUninitializedDenseTensor(dense_tensor, place); - } - } else if (phi::SelectedRows::classof(tensor)) { - auto* selected_rows = static_cast(tensor); - if (!selected_rows->value().IsInitialized() || - !(selected_rows->place() == place)) { - SetAllocationForUninitializedDenseTensor(selected_rows->mutable_value(), - place); - } - } else { - PADDLE_THROW(platform::errors::Unimplemented( - "Unsupported tensor type is received when setting allocation for " - "output tensor.")); - } -} - } // namespace framework } // namespace paddle diff --git a/paddle/fluid/framework/phi_utils.h b/paddle/fluid/framework/phi_utils.h index 1a1f79d82770058ae4010b7a3a3162280ceb1537..a17578816921b2337a76d1a0a69a6c8adbc51c4d 100644 --- a/paddle/fluid/framework/phi_utils.h +++ b/paddle/fluid/framework/phi_utils.h @@ -62,9 +62,6 @@ class KernelArgsNameMaker { void InitDefaultKernelSignatureMap(); -void SetAllocationForOutputTenosr(phi::TensorBase* tensor, - const platform::Place& place); - // TODO(Wilber): support others device context. template struct ConvertToPhiContext { diff --git a/paddle/fluid/imperative/prepared_operator.h b/paddle/fluid/imperative/prepared_operator.h index 8e1e2fbe9a12da672a633075ed4c41d3d62cd7e1..3b5762720e7fb4a9eb0be157f6dabf07aa9353c2 100644 --- a/paddle/fluid/imperative/prepared_operator.h +++ b/paddle/fluid/imperative/prepared_operator.h @@ -323,12 +323,6 @@ void BuildDygraphPhiKernelContext( "Unsupported output `%s` type when call pt kernel.", framework::ToTypeName(var->Type()))); } - - experimental::ResetTensorDtypeAndLayoutByArgDef(tensor_out, - output_defs.at(i)); - framework::SetAllocationForOutputTenosr( - tensor_out, phi::TransToPhiPlace(output_defs.at(i).backend)); - kernel_ctx->EmplaceBackOutputWithoutSetRange(tensor_out); } kernel_ctx->AssignOutputRange(std::make_pair(start_idx, end_idx), i); diff --git a/paddle/phi/api/lib/utils/tensor_utils.cc b/paddle/phi/api/lib/utils/tensor_utils.cc index 31325e22afae31e55a3a2d939739d6745ccd3d36..1c9f7c3a8683daaf26cb87b23e50284d0329c4a8 100644 --- a/paddle/phi/api/lib/utils/tensor_utils.cc +++ b/paddle/phi/api/lib/utils/tensor_utils.cc @@ -136,26 +136,5 @@ phi::ScalarArray MakePhiScalarArrayFromVarList( return result; } -void ResetTensorDtypeAndLayoutByArgDef(phi::TensorBase* dst, - const phi::TensorArgDef& arg_def) { - VLOG(5) << "ResetTensor by TensorArgDef."; - if (phi::DenseTensor::classof(dst)) { - auto* dense_t = static_cast(dst); - auto* meta = phi::DenseTensorUtils::GetMutableMeta(dense_t); - meta->dtype = arg_def.dtype; - meta->layout = arg_def.layout; - } else if (phi::SelectedRows::classof(dst)) { - auto* selected_rows = static_cast(dst); - auto* meta = - phi::DenseTensorUtils::GetMutableMeta(selected_rows->mutable_value()); - meta->dtype = arg_def.dtype; - meta->layout = arg_def.layout; - } else { - PADDLE_THROW(phi::errors::Unimplemented( - "Unsupported tensor type is received when reseting tensor dtype and " - "layout by argument definition.")); - } -} - } // namespace experimental } // namespace paddle diff --git a/paddle/phi/api/lib/utils/tensor_utils.h b/paddle/phi/api/lib/utils/tensor_utils.h index 8b30d5421ab943d568a046ca0fe4698849780ffd..64df59c1a2a2de3f72ce46874fe07df70d33599e 100644 --- a/paddle/phi/api/lib/utils/tensor_utils.h +++ b/paddle/phi/api/lib/utils/tensor_utils.h @@ -42,8 +42,5 @@ phi::ScalarArray MakePhiScalarArrayFromVar(const framework::Variable& variable); phi::ScalarArray MakePhiScalarArrayFromVarList( const std::vector& variable_list); -void ResetTensorDtypeAndLayoutByArgDef(phi::TensorBase* dst, - const phi::TensorArgDef& arg_def); - } // namespace experimental } // namespace paddle diff --git a/paddle/phi/core/CMakeLists.txt b/paddle/phi/core/CMakeLists.txt index f4f57a0acbbb386a3642a05e0d0dc70cd082a4d8..8ffacbb39bb249c57fb5c9ef1462d03747356f96 100644 --- a/paddle/phi/core/CMakeLists.txt +++ b/paddle/phi/core/CMakeLists.txt @@ -22,8 +22,8 @@ cc_library(sparse_csr_tensor SRCS sparse_csr_tensor.cc DEPS dense_tensor tensor_ cc_library(meta_tensor SRCS meta_tensor.cc DEPS tensor_base tensor_meta dense_tensor) cc_library(infermeta_utils SRCS infermeta_utils.cc DEPS meta_tensor) -cc_library(phi_device_context SRCS device_context.cc DEPS dense_tensor selected_rows) cc_library(selected_rows SRCS selected_rows_impl.cc DEPS dense_tensor phi_enforce ddim memcpy) +cc_library(phi_device_context SRCS device_context.cc DEPS dense_tensor selected_rows) cc_library(phi_custom_kernel SRCS custom_kernel.cc DEPS kernel_factory convert_utils) diff --git a/paddle/phi/core/dense_tensor_impl.cc b/paddle/phi/core/dense_tensor_impl.cc index 29e7dc01f32db20e3756677fe8a48fcb138b3883..5ee83089589e89b3cb29f095bd88fb16ff39d296 100644 --- a/paddle/phi/core/dense_tensor_impl.cc +++ b/paddle/phi/core/dense_tensor_impl.cc @@ -73,11 +73,6 @@ void DenseTensor::set_layout(const paddle::framework::DataLayout layout) { // Note: When you reset holder, you need to ensure the offset is correct void DenseTensor::ResetHolder(const std::shared_ptr& holder) { if (holder_) { - // TODO(zyfncg): The change of static_cast<> in check will recover back - // when SetAllocationForOutputTenosr is deleted. - // Now the numel() may return -1, and will cast to a very large number when - // compare with a data with unsigned long type, this will make checking - // failed, so it's a temporary solution to deal with this problem. PADDLE_ENFORCE_LE( numel() * static_cast(SizeOf(dtype())) + static_cast(meta_.offset), diff --git a/paddle/phi/kernels/xpu/full_kernel.cc b/paddle/phi/kernels/xpu/full_kernel.cc index 574f4e991a260e8ebc250fe3f8461736dc3eb7f8..d43126d56e88c868d4e273aaf13bd71bc570d37c 100644 --- a/paddle/phi/kernels/xpu/full_kernel.cc +++ b/paddle/phi/kernels/xpu/full_kernel.cc @@ -59,7 +59,7 @@ void FullKernel(const Context& dev_ctx, const Scalar& val, DataType dtype, DenseTensor* out) { - out->ResizeAndAllocate(phi::make_ddim(shape.GetData())); + out->Resize(phi::make_ddim(shape.GetData())); FullValueXPU(dev_ctx, out, val.to()); } @@ -69,6 +69,7 @@ void FullLikeKernel(const Context& dev_ctx, const Scalar& val, DataType dtype, DenseTensor* out) { + dev_ctx.template Alloc(out); auto value = val.to(); using XPUInTDType = typename XPUTypeTrait::Type; using CommonType = typename std::common_type<