More meaningful info::device::version for Intel GPUs
- Dominant language
- LLVM
- Stars
- 1.5k
- Forks
- 854
- Avg merge
- 3d 17h
- Merged PRs (30d)
- 137
Description
**Is your feature request related to a problem? Please describe**
We want an easy way to check the architecture of the device: Gen11, Xe-HPC, Xe-HPG, and so on, to select the best kernels based on earlier empirical tuning.
[Per spec](https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#_device_information_descriptors), `sycl::device::get_info` "Returns a backend-defined [device](https://registry.khronos.org/SYCL/specs/sycl-2020/html/sycl-2020.html#device) version."
AMD and NVIDIA plugins use `sycl::info::device::version` field to return the device architecture (like `8.6` or `gfx90a`, respectively), which looks like a reasonable interpretation of the standard.
However, OpenCL and LevelZero backends return the API versions (`OpenCL 3.0 NEO` or `1.3`):
https://github.com/intel/llvm/blob/d430bef7a653e3eb9689a06d86c435155dec15c7/sycl/plugins/unified_runtime/ur/adapters/level_zero/device.cpp#L279-L283
This piece of information, IMO, better belongs in either `platform::version` or `device::backend_version` descriptors, while `device::version` should return something more device-specific.
**Describe the solution you would like**
Using `releaseAcronyms` or `deviceAcronyms` from the AOT compiler (https://github.com/intel/compute-runtime/blob/master/third_party/aot_config_headers/platforms.h) sounds like a good idea.
**Describe alternatives you have considered**
- A concatenation of family, release, and device, like `xe:xe-hpg:dg2-g10`.
- Hex value of `PRODUCT_CONFIG` (from the same file)
- Decoded value of `PRODUCT_CONFIG` (e.g., `11.0.0` for ICL / `0x02c00000`)
- PCIe device ID (was previously reported as part of the `device::name`)
Contributor guide
Assessment
This issue has not been assessed yet.