From f1704b204363052a771f6584412847627a44545d Mon Sep 17 00:00:00 2001 From: zyfncg Date: Thu, 21 Apr 2022 22:13:38 +0800 Subject: [PATCH] optimiaze performance of PreparePhiData (#42093) --- paddle/fluid/imperative/prepared_operator.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/paddle/fluid/imperative/prepared_operator.h b/paddle/fluid/imperative/prepared_operator.h index b3c5a6b5fa..cb3275674e 100644 --- a/paddle/fluid/imperative/prepared_operator.h +++ b/paddle/fluid/imperative/prepared_operator.h @@ -581,10 +581,11 @@ void PreparePhiData(const phi::Kernel& pt_kernel, for (size_t i = 0; i < input_names.size(); ++i) { auto& in_def = input_defs.at(i); - if (ins.find(input_names[i]) == ins.end()) { + auto iter = ins.find(input_names[i]); + if (iter == ins.end()) { continue; } - auto& ins_vector = ins.at(input_names[i]); + auto& ins_vector = iter->second; for (size_t offset = 0; offset < ins_vector.size(); ++offset) { auto& var = ins_vector[offset]; @@ -593,11 +594,15 @@ void PreparePhiData(const phi::Kernel& pt_kernel, if (in_def.backend == phi::Backend::ALL_BACKEND) { continue; } - auto expected_place = phi::TransToPhiPlace(in_def.backend); - if (platform::is_same_place(tensor_in->place(), expected_place)) { + auto tensor_backend = phi::TransToPhiBackend(tensor_in->place()); + if (in_def.backend == tensor_backend || + (in_def.backend == phi::Backend::GPUDNN && + tensor_backend == phi::Backend::GPU)) { continue; } + auto expected_place = phi::TransToPhiPlace(in_def.backend); + VLOG(3) << "Phi Transform Variable " << input_names[i] << " from " << tensor_in->place() << " to " << expected_place; -- GitLab