200 std::vector<std::string> warnings;
203 std::string name =
"?";
211 auto cpu_name = get_cpu_name();
220 FETCH_PROP(device_type, sycl::info::device_type)
223 FETCH_PROP(max_work_item_dimensions, uint32_t)
224 FETCH_PROPN(max_work_item_sizes<1>, sycl::id<1>, max_work_item_sizes_1d)
225 FETCH_PROPN(max_work_item_sizes<2>, sycl::id<2>, max_work_item_sizes_2d)
226 FETCH_PROPN(max_work_item_sizes<3>, sycl::id<3>, max_work_item_sizes_3d)
229 FETCH_PROP(sub_group_independent_forward_progress,
bool)
230 FETCH_PROP(sub_group_sizes, std::vector<size_t>)
232 FETCH_PROP(preferred_vector_width_char, uint32_t)
233 FETCH_PROP(preferred_vector_width_short, uint32_t)
234 FETCH_PROP(preferred_vector_width_int, uint32_t)
235 FETCH_PROP(preferred_vector_width_long, uint32_t)
236 FETCH_PROP(preferred_vector_width_float, uint32_t)
237 FETCH_PROP(preferred_vector_width_double, uint32_t)
238 FETCH_PROP(preferred_vector_width_half, uint32_t)
239 FETCH_PROP(native_vector_width_char, uint32_t)
240 FETCH_PROP(native_vector_width_short, uint32_t)
242 FETCH_PROP(native_vector_width_long, uint32_t)
243 FETCH_PROP(native_vector_width_float, uint32_t)
244 FETCH_PROP(native_vector_width_double, uint32_t)
245 FETCH_PROP(native_vector_width_half, uint32_t)
264 FETCH_PROP(half_fp_config, std::vector<sycl::info::fp_config>)
265 FETCH_PROP(single_fp_config, std::vector<sycl::info::fp_config>)
266 FETCH_PROP(double_fp_config, std::vector<sycl::info::fp_config>)
267 FETCH_PROP(global_mem_cache_type, sycl::info::global_mem_cache_type)
268 FETCH_PROP(global_mem_cache_line_size, uint32_t)
271 FETCH_PROP(local_mem_type, sycl::info::local_mem_type)
274#ifdef SYCL_COMP_INTEL_LLVM
275 FETCH_PROP(atomic_memory_order_capabilities, std::vector<sycl::memory_order>)
276 FETCH_PROP(atomic_fence_order_capabilities, std::vector<sycl::memory_order>)
277 FETCH_PROP(atomic_memory_scope_capabilities, std::vector<sycl::memory_scope>)
278 FETCH_PROP(atomic_fence_scope_capabilities, std::vector<sycl::memory_scope>)
280 FETCH_PROP(profiling_timer_resolution,
size_t)
282 FETCH_PROP(execution_capabilities, std::vector<sycl::info::execution_capability>)
289#ifdef SYCL_COMP_INTEL_LLVM
294#ifdef SYCL_COMP_INTEL_LLVM
297 FETCH_PROP(partition_max_sub_devices, uint32_t)
298 FETCH_PROP(partition_properties, std::vector<sycl::info::partition_property>)
299 FETCH_PROP(partition_affinity_domains, std::vector<sycl::info::partition_affinity_domain>)
300 FETCH_PROP(partition_type_property, sycl::info::partition_property)
301 FETCH_PROP(partition_type_affinity_domain, sycl::info::partition_affinity_domain)
311 global_mem_size = {*physmem};
317 if (*mem_base_addr_align && mem_base_addr_align == 8) {
320 "mem_base_addr_align for is {} bits. I will assume that this is an "
321 "issue and default to 64 bits (8 bytes) instead.",
322 *mem_base_addr_align));
323 mem_base_addr_align = CHAR_BIT * 8;
327 u32 default_work_group_size = 1;
328 if (!sub_group_sizes) {
329 sub_group_sizes = std::vector<size_t>{default_work_group_size};
332 "cannot fetch sub_group_sizes, defaulting to {}", default_work_group_size));
337 size_t max_alloc_host = ((physmem) ? *physmem :
i64_max);
338 if (SHAM_MAX_ALLOC_SIZE) {
340 const auto max_alloc = std::stoull(SHAM_MAX_ALLOC_SIZE.value());
341 max_alloc_dev = max_alloc;
342 max_alloc_host = max_alloc;
343 }
catch (
const std::exception &e) {
346 "Could not parse SHAM_MAX_ALLOC_SIZE value '{}'. Error: {}. "
347 "Ignoring override.",
348 SHAM_MAX_ALLOC_SIZE.value(),
358 dev.get_platform().get_info<sycl::info::platform::name>(),
369 default_work_group_size,
374#if defined(SYCL_EXT_INTEL_DEVICE_INFO) && SYCL_EXT_INTEL_DEVICE_INFO >= 5
375 FETCH_PROPN_FULL(sycl::ext::intel::info::device::pci_address, std::string, pci_address)