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
2526DECLARE_bool (enable_api_kernel_fallback);
2627
2728namespace phi {
2829
2930const 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
3435uint32_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