Skip to content

More meaningful info::device::version for Intel GPUs #10384

Open
@al42and

Description

@al42and

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, sycl::device::get_info<sycl::info::device::version> "Returns a backend-defined 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):

case UR_DEVICE_INFO_DRIVER_VERSION:
case UR_DEVICE_INFO_BACKEND_RUNTIME_VERSION:
return ReturnValue(Device->Platform->ZeDriverVersion.c_str());
case UR_DEVICE_INFO_VERSION:
return ReturnValue(Device->Platform->ZeDriverApiVersion.c_str());

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestspec extensionAll issues/PRs related to extensions specifications

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions