Skip to content

Commit 3fbbee7

Browse files
authored
opt kernel_selection error msg (PaddlePaddle#48864)
1 parent fa65fed commit 3fbbee7

File tree

1 file changed

+12
-26
lines changed

1 file changed

+12
-26
lines changed

paddle/phi/core/kernel_factory.cc

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121
#include "paddle/phi/core/compat/convert_utils.h"
2222
#endif
2323
#include "paddle/phi/core/compat/op_utils.h"
24+
#include "paddle/utils/string/string_helper.h"
2425

2526
DECLARE_bool(enable_api_kernel_fallback);
2627

2728
namespace phi {
2829

2930
const static Kernel empty_kernel; // NOLINT
3031

31-
std::string kernel_selection_error_message(const std::string& kernel_name,
32-
const KernelKey& target_key);
32+
std::string KernelSelectionErrorMessage(const std::string& kernel_name,
33+
const KernelKey& target_key);
3334

3435
uint32_t KernelKey::Hash::operator()(const KernelKey& key) const {
3536
uint32_t hash_value = 0;
@@ -146,7 +147,7 @@ KernelResult KernelFactory::SelectKernelOrThrowError(
146147
"The kernel with key %s of kernel `%s` is not registered. %s",
147148
kernel_key,
148149
kernel_name,
149-
kernel_selection_error_message(kernel_name, kernel_key)));
150+
KernelSelectionErrorMessage(kernel_name, kernel_key)));
150151

151152
#if defined(PADDLE_WITH_XPU) && !defined(PADDLE_WITH_XPU_KP)
152153
VLOG(6) << "fluid_op_name: " << TransToFluidOpName(kernel_name);
@@ -176,7 +177,7 @@ KernelResult KernelFactory::SelectKernelOrThrowError(
176177
"fail to fallback to CPU one. %s",
177178
kernel_key,
178179
kernel_name,
179-
kernel_selection_error_message(kernel_name, kernel_key)));
180+
KernelSelectionErrorMessage(kernel_name, kernel_key)));
180181

181182
VLOG(3) << "missing " << kernel_key.backend() << " kernel: " << kernel_name
182183
<< ", expected_kernel_key:" << kernel_key
@@ -195,7 +196,7 @@ KernelResult KernelFactory::SelectKernelOrThrowError(
195196
" to CPU one, please set the flag true before run again.",
196197
kernel_key,
197198
kernel_name,
198-
kernel_selection_error_message(kernel_name, kernel_key)));
199+
KernelSelectionErrorMessage(kernel_name, kernel_key)));
199200

200201
return {kernel_iter->second, false};
201202
}
@@ -368,8 +369,8 @@ std::ostream& operator<<(std::ostream& os, KernelFactory& kernel_factory) {
368369
// (GPU, Undefined(AnyLayout), [float32, float64, ...]);
369370
// ...
370371
// }
371-
std::string kernel_selection_error_message(const std::string& kernel_name,
372-
const KernelKey& target_key) {
372+
std::string KernelSelectionErrorMessage(const std::string& kernel_name,
373+
const KernelKey& target_key) {
373374
PADDLE_ENFORCE_NE(
374375
KernelFactory::Instance().kernels().find(kernel_name),
375376
KernelFactory::Instance().kernels().end(),
@@ -402,25 +403,15 @@ std::string kernel_selection_error_message(const std::string& kernel_name,
402403
// 1. If target_key not supports target backend, output "Selected wrong
403404
// Backend ..."
404405
if (!support_backend) {
405-
std::string error_message = "";
406-
for (auto iter = backend_set.begin(); iter != backend_set.end(); ++iter) {
407-
error_message += *iter;
408-
error_message += ", ";
409-
}
410-
error_message = error_message.substr(0, error_message.length() - 2);
406+
std::string error_message = paddle::string::join_strings(backend_set, ", ");
411407
return "Selected wrong Backend `" +
412408
paddle::experimental::BackendToString(target_key.backend()) +
413409
"`. Paddle support following Backends: " + error_message + ".";
414410
}
415411
// 2. If target_key not supports target datatype, output "Selected wrong
416412
// DataType ..."
417413
if (!support_dtype) {
418-
std::string error_message = "";
419-
for (auto iter = dtype_set.begin(); iter != dtype_set.end(); ++iter) {
420-
error_message += *iter;
421-
error_message += ", ";
422-
}
423-
error_message = error_message.substr(0, error_message.length() - 2);
414+
std::string error_message = paddle::string::join_strings(dtype_set, ", ");
424415
return "Selected wrong DataType `" +
425416
paddle::experimental::DataTypeToString(target_key.dtype()) +
426417
"`. Paddle support following DataTypes: " + error_message + ".";
@@ -431,14 +422,9 @@ std::string kernel_selection_error_message(const std::string& kernel_name,
431422
kernel_name + "`: { ";
432423
for (auto iter = all_kernel_key.begin(); iter != all_kernel_key.end();
433424
++iter) {
434-
message += "(" + iter->first + ", [";
435425
std::vector<std::string>& dtype_vec = iter->second;
436-
for (std::size_t i = 0; i < dtype_vec.size(); ++i) {
437-
message += dtype_vec[i];
438-
if (i + 1 != dtype_vec.size()) {
439-
message += ", ";
440-
}
441-
}
426+
message += "(" + iter->first + ", [";
427+
message += paddle::string::join_strings(dtype_vec, ", ");
442428
message += "]); ";
443429
}
444430
message += "}.";

0 commit comments

Comments
 (0)