Skip to content

Commit 79c26f3

Browse files
[NFCI][SYCL] Delegate to unspecialized get_device_info_impl more (#18113)
1 parent 0aa0bc6 commit 79c26f3

File tree

1 file changed

+33
-57
lines changed

1 file changed

+33
-57
lines changed

sycl/source/detail/device_info.hpp

+33-57
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,13 @@ template <typename ReturnT, typename Param> struct get_device_info_impl {
186186
// Specialization for platform
187187
template <typename Param> struct get_device_info_impl<platform, Param> {
188188
static platform get(const DeviceImplPtr &Dev) {
189-
typename sycl_to_ur<platform>::type result;
190-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
191-
Dev->getHandleRef(), UrInfoCode<Param>::value, sizeof(result), &result,
192-
nullptr);
193189
// TODO: Change UrDevice to device_impl.
194190
// Use the Adapter from the device_impl class after adapter details
195191
// are added to the class.
196-
return createSyclObjFromImpl<platform>(
197-
platform_impl::getOrMakePlatformImpl(result, Dev->getAdapter()));
192+
return createSyclObjFromImpl<platform>(platform_impl::getOrMakePlatformImpl(
193+
get_device_info_impl<typename sycl_to_ur<platform>::type, Param>::get(
194+
Dev),
195+
Dev->getAdapter()));
198196
}
199197
};
200198

@@ -237,11 +235,8 @@ struct get_device_info_impl<std::vector<info::fp_config>, Param> {
237235
typename check_fp_support<Param>::type>::get(Dev)) {
238236
return {};
239237
}
240-
ur_device_fp_capability_flags_t result;
241-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
242-
Dev->getHandleRef(), UrInfoCode<Param>::value, sizeof(result), &result,
243-
nullptr);
244-
return read_fp_bitfield(result);
238+
return read_fp_bitfield(
239+
get_device_info_impl<ur_device_fp_capability_flags_t, Param>::get(Dev));
245240
}
246241
};
247242

@@ -250,11 +245,9 @@ template <>
250245
struct get_device_info_impl<std::vector<info::fp_config>,
251246
info::device::single_fp_config> {
252247
static std::vector<info::fp_config> get(const DeviceImplPtr &Dev) {
253-
ur_device_fp_capability_flags_t result;
254-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
255-
Dev->getHandleRef(), UrInfoCode<info::device::single_fp_config>::value,
256-
sizeof(result), &result, nullptr);
257-
return read_fp_bitfield(result);
248+
return read_fp_bitfield(
249+
get_device_info_impl<ur_device_fp_capability_flags_t,
250+
info::device::single_fp_config>::get(Dev));
258251
}
259252
};
260253

@@ -263,11 +256,9 @@ struct get_device_info_impl<std::vector<info::fp_config>,
263256
// command_end will be calculated. See MFallbackProfiling
264257
template <> struct get_device_info_impl<bool, info::device::queue_profiling> {
265258
static bool get(const DeviceImplPtr &Dev) {
266-
ur_queue_flags_t Properties;
267-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
268-
Dev->getHandleRef(), UrInfoCode<info::device::queue_profiling>::value,
269-
sizeof(Properties), &Properties, nullptr);
270-
return Properties & UR_QUEUE_FLAG_PROFILING_ENABLE;
259+
return get_device_info_impl<ur_queue_flags_t,
260+
info::device::queue_profiling>::get(Dev) &
261+
UR_QUEUE_FLAG_PROFILING_ENABLE;
271262
}
272263
};
273264

@@ -276,12 +267,10 @@ template <>
276267
struct get_device_info_impl<std::vector<memory_order>,
277268
info::device::atomic_memory_order_capabilities> {
278269
static std::vector<memory_order> get(const DeviceImplPtr &Dev) {
279-
ur_memory_order_capability_flag_t result;
280-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
281-
Dev->getHandleRef(),
282-
UrInfoCode<info::device::atomic_memory_order_capabilities>::value,
283-
sizeof(result), &result, nullptr);
284-
return readMemoryOrderBitfield(result);
270+
return readMemoryOrderBitfield(
271+
get_device_info_impl<
272+
ur_memory_order_capability_flag_t,
273+
info::device::atomic_memory_order_capabilities>::get(Dev));
285274
}
286275
};
287276

@@ -290,12 +279,10 @@ template <>
290279
struct get_device_info_impl<std::vector<memory_order>,
291280
info::device::atomic_fence_order_capabilities> {
292281
static std::vector<memory_order> get(const DeviceImplPtr &Dev) {
293-
ur_memory_order_capability_flag_t result;
294-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
295-
Dev->getHandleRef(),
296-
UrInfoCode<info::device::atomic_fence_order_capabilities>::value,
297-
sizeof(result), &result, nullptr);
298-
return readMemoryOrderBitfield(result);
282+
return readMemoryOrderBitfield(
283+
get_device_info_impl<
284+
ur_memory_order_capability_flag_t,
285+
info::device::atomic_fence_order_capabilities>::get(Dev));
299286
}
300287
};
301288

@@ -304,12 +291,9 @@ template <>
304291
struct get_device_info_impl<std::vector<memory_scope>,
305292
info::device::atomic_memory_scope_capabilities> {
306293
static std::vector<memory_scope> get(const DeviceImplPtr &Dev) {
307-
size_t result;
308-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
309-
Dev->getHandleRef(),
310-
UrInfoCode<info::device::atomic_memory_scope_capabilities>::value,
311-
sizeof(result), &result, nullptr);
312-
return readMemoryScopeBitfield(result);
294+
return readMemoryScopeBitfield(
295+
get_device_info_impl<
296+
size_t, info::device::atomic_memory_scope_capabilities>::get(Dev));
313297
}
314298
};
315299

@@ -318,12 +302,9 @@ template <>
318302
struct get_device_info_impl<std::vector<memory_scope>,
319303
info::device::atomic_fence_scope_capabilities> {
320304
static std::vector<memory_scope> get(const DeviceImplPtr &Dev) {
321-
size_t result;
322-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
323-
Dev->getHandleRef(),
324-
UrInfoCode<info::device::atomic_fence_scope_capabilities>::value,
325-
sizeof(result), &result, nullptr);
326-
return readMemoryScopeBitfield(result);
305+
return readMemoryScopeBitfield(
306+
get_device_info_impl<
307+
size_t, info::device::atomic_fence_scope_capabilities>::get(Dev));
327308
}
328309
};
329310

@@ -355,12 +336,9 @@ struct get_device_info_impl<std::vector<info::execution_capability>,
355336
"info::device::execution_capabilities is available for "
356337
"backend::opencl only");
357338

358-
ur_device_exec_capability_flag_t result;
359-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
360-
Dev->getHandleRef(),
361-
UrInfoCode<info::device::execution_capabilities>::value, sizeof(result),
362-
&result, nullptr);
363-
return read_execution_bitfield(result);
339+
return read_execution_bitfield(
340+
get_device_info_impl<ur_device_exec_capability_flag_t,
341+
info::device::execution_capabilities>::get(Dev));
364342
}
365343
};
366344

@@ -457,12 +435,10 @@ struct get_device_info_impl<std::vector<info::partition_affinity_domain>,
457435
info::device::partition_affinity_domains> {
458436
static std::vector<info::partition_affinity_domain>
459437
get(const DeviceImplPtr &Dev) {
460-
ur_device_affinity_domain_flags_t result;
461-
Dev->getAdapter()->call<UrApiKind::urDeviceGetInfo>(
462-
Dev->getHandleRef(),
463-
UrInfoCode<info::device::partition_affinity_domains>::value,
464-
sizeof(result), &result, nullptr);
465-
return read_domain_bitfield(result);
438+
return read_domain_bitfield(
439+
get_device_info_impl<
440+
ur_device_affinity_domain_flags_t,
441+
info::device::partition_affinity_domains>::get(Dev));
466442
}
467443
};
468444

0 commit comments

Comments
 (0)