@@ -186,15 +186,13 @@ template <typename ReturnT, typename Param> struct get_device_info_impl {
186
186
// Specialization for platform
187
187
template <typename Param> struct get_device_info_impl <platform, Param> {
188
188
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 );
193
189
// TODO: Change UrDevice to device_impl.
194
190
// Use the Adapter from the device_impl class after adapter details
195
191
// 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 ()));
198
196
}
199
197
};
200
198
@@ -237,11 +235,8 @@ struct get_device_info_impl<std::vector<info::fp_config>, Param> {
237
235
typename check_fp_support<Param>::type>::get (Dev)) {
238
236
return {};
239
237
}
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));
245
240
}
246
241
};
247
242
@@ -250,11 +245,9 @@ template <>
250
245
struct get_device_info_impl <std::vector<info::fp_config>,
251
246
info::device::single_fp_config> {
252
247
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));
258
251
}
259
252
};
260
253
@@ -263,11 +256,9 @@ struct get_device_info_impl<std::vector<info::fp_config>,
263
256
// command_end will be calculated. See MFallbackProfiling
264
257
template <> struct get_device_info_impl <bool , info::device::queue_profiling> {
265
258
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;
271
262
}
272
263
};
273
264
@@ -276,12 +267,10 @@ template <>
276
267
struct get_device_info_impl <std::vector<memory_order>,
277
268
info::device::atomic_memory_order_capabilities> {
278
269
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));
285
274
}
286
275
};
287
276
@@ -290,12 +279,10 @@ template <>
290
279
struct get_device_info_impl <std::vector<memory_order>,
291
280
info::device::atomic_fence_order_capabilities> {
292
281
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));
299
286
}
300
287
};
301
288
@@ -304,12 +291,9 @@ template <>
304
291
struct get_device_info_impl <std::vector<memory_scope>,
305
292
info::device::atomic_memory_scope_capabilities> {
306
293
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));
313
297
}
314
298
};
315
299
@@ -318,12 +302,9 @@ template <>
318
302
struct get_device_info_impl <std::vector<memory_scope>,
319
303
info::device::atomic_fence_scope_capabilities> {
320
304
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));
327
308
}
328
309
};
329
310
@@ -355,12 +336,9 @@ struct get_device_info_impl<std::vector<info::execution_capability>,
355
336
" info::device::execution_capabilities is available for "
356
337
" backend::opencl only" );
357
338
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));
364
342
}
365
343
};
366
344
@@ -457,12 +435,10 @@ struct get_device_info_impl<std::vector<info::partition_affinity_domain>,
457
435
info::device::partition_affinity_domains> {
458
436
static std::vector<info::partition_affinity_domain>
459
437
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));
466
442
}
467
443
};
468
444
0 commit comments