Skip to content

Commit 70c2dc6

Browse files
[NFC][SYCL] Minor refactor after #6896 (#6947)
1 parent fee486e commit 70c2dc6

File tree

1 file changed

+23
-20
lines changed

1 file changed

+23
-20
lines changed

sycl/source/device_selector.cpp

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -106,27 +106,30 @@ device select_device(DSelectorInvocableType DeviceSelectorInvocable,
106106
return *res;
107107
}
108108

109-
auto Selector = DeviceSelectorInvocable.target<int (*)(const sycl::device &)>();
110-
if ((Selector && *Selector == gpu_selector_v)
111-
|| DeviceSelectorInvocable.target<sycl::gpu_selector>()) {
112-
throw sycl::runtime_error(
113-
"No device of requested type 'info::device_type::gpu' available.",
114-
PI_ERROR_DEVICE_NOT_FOUND);
109+
std::string Message;
110+
constexpr const char Prefix[] = "No device of requested type ";
111+
constexpr const char Cpu[] = "'info::device_type::cpu' ";
112+
constexpr const char Gpu[] = "'info::device_type::gpu' ";
113+
constexpr const char Acc[] = "'info::device_type::accelerator' ";
114+
constexpr const char Suffix[] = "available.";
115+
constexpr auto ReserveSize = sizeof(Prefix) + sizeof(Suffix) + sizeof(Acc);
116+
Message.reserve(ReserveSize);
117+
Message += Prefix;
118+
119+
auto Selector =
120+
DeviceSelectorInvocable.target<int (*)(const sycl::device &)>();
121+
if ((Selector && *Selector == gpu_selector_v) ||
122+
DeviceSelectorInvocable.target<sycl::gpu_selector>()) {
123+
Message += Gpu;
124+
} else if ((Selector && *Selector == cpu_selector_v) ||
125+
DeviceSelectorInvocable.target<sycl::cpu_selector>()) {
126+
Message += Cpu;
127+
} else if ((Selector && *Selector == accelerator_selector_v) ||
128+
DeviceSelectorInvocable.target<sycl::accelerator_selector>()) {
129+
Message += Acc;
115130
}
116-
if ((Selector && *Selector == cpu_selector_v)
117-
|| DeviceSelectorInvocable.target<sycl::cpu_selector>()) {
118-
throw sycl::runtime_error(
119-
"No device of requested type 'info::device_type::cpu' available.",
120-
PI_ERROR_DEVICE_NOT_FOUND);
121-
}
122-
if ((Selector && *Selector == accelerator_selector_v)
123-
|| DeviceSelectorInvocable.target<sycl::accelerator_selector>()) {
124-
throw sycl::runtime_error("No device of requested type "
125-
"'info::device_type::accelerator' available.",
126-
PI_ERROR_DEVICE_NOT_FOUND);
127-
}
128-
throw sycl::runtime_error("No device of requested type available.",
129-
PI_ERROR_DEVICE_NOT_FOUND);
131+
Message += Suffix;
132+
throw sycl::runtime_error(Message, PI_ERROR_DEVICE_NOT_FOUND);
130133
}
131134

132135
// select_device(selector)

0 commit comments

Comments
 (0)