diff --git a/paddle/fluid/framework/new_executor/interpreter/interpreter_util.cc b/paddle/fluid/framework/new_executor/interpreter/interpreter_util.cc index 1f6cd392ec0bf9f3cfee6166e1f692edc5b844b5..1baf27928bdecdf6827a38cc369658d134c38a6a 100644 --- a/paddle/fluid/framework/new_executor/interpreter/interpreter_util.cc +++ b/paddle/fluid/framework/new_executor/interpreter/interpreter_util.cc @@ -58,7 +58,6 @@ static std::set OpsNeedSetOutputDtypeWhenRegisterPhiKernel = { "angle", "any_raw", "arg_sort", - "as_real", "atan2", "auc", "bincount", diff --git a/paddle/phi/infermeta/unary.cc b/paddle/phi/infermeta/unary.cc index 0f001ff023e9e60859da5344eed53cfb487f6407..b2e9e6535394df26d943899388345a525a225720 100644 --- a/paddle/phi/infermeta/unary.cc +++ b/paddle/phi/infermeta/unary.cc @@ -273,6 +273,7 @@ void AsRealInferMeta(const MetaTensor& input, MetaTensor* output) { auto out_dims = phi::make_ddim(out_dims_v); output->set_dims(out_dims); output->share_lod(input); + output->set_dtype(dtype::ToReal(input.dtype())); } void AsComplexInferMeta(const MetaTensor& input, MetaTensor* output) { diff --git a/paddle/phi/kernels/cpu/as_real_kernel.cc b/paddle/phi/kernels/cpu/as_real_kernel.cc index eb7584a28d6c0aefaa69cbe314972d42145b8a8b..5541a887c9f9b63178d274b1c8d06ed6136151cb 100644 --- a/paddle/phi/kernels/cpu/as_real_kernel.cc +++ b/paddle/phi/kernels/cpu/as_real_kernel.cc @@ -23,4 +23,6 @@ using complex64 = ::phi::dtype::complex; using complex128 = ::phi::dtype::complex; PD_REGISTER_KERNEL( - as_real, CPU, ALL_LAYOUT, phi::AsRealKernel, complex64, complex128) {} + as_real, CPU, ALL_LAYOUT, phi::AsRealKernel, complex64, complex128) { + kernel->OutputAt(0).SetDataType(paddle::experimental::DataType::UNDEFINED); +} diff --git a/paddle/phi/kernels/gpu/as_real_kernel.cu b/paddle/phi/kernels/gpu/as_real_kernel.cu index c6cb3aca22629e7a48f16325394eed1db61fb4a8..83976381844239290cd5ed8fff09d79da7982e92 100644 --- a/paddle/phi/kernels/gpu/as_real_kernel.cu +++ b/paddle/phi/kernels/gpu/as_real_kernel.cu @@ -23,4 +23,6 @@ using complex64 = ::phi::dtype::complex; using complex128 = ::phi::dtype::complex; PD_REGISTER_KERNEL( - as_real, GPU, ALL_LAYOUT, phi::AsRealKernel, complex64, complex128) {} + as_real, GPU, ALL_LAYOUT, phi::AsRealKernel, complex64, complex128) { + kernel->OutputAt(0).SetDataType(paddle::experimental::DataType::UNDEFINED); +}