Intel® oneAPI DPC++/C++ Compiler
Talk to fellow users of Intel® oneAPI DPC++/C++ Compiler and companion tools like Intel® oneAPI DPC++ Library, Intel® DPC++ Compatibility Tool, and Intel® Distribution for GDB*
713 Discussions

Potential Bug in Execution Capability Reporting for Level Zero Devices

blinkfrog
New Contributor I
694 Views

Hello,

I have encountered a possible bug in the SYCL implementation regarding how execution capabilities are reported for Level Zero devices. According to the SYCL 2020 specification, all SYCL-compliant devices should support "info::execution_capability::exec_kernel". However, when querying this capability on Level Zero devices using oneAPI/DPC++, the capability is not reported, despite these devices being able to execute SYCL kernels.

Environment:

  • Operating System: Windows 11 Home 23H2
  • GPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz with Intel(R) UHD Graphics
  • oneAPI/DPC++ Version: 2024.2

Issue Description: The issue occurs when querying the execution capabilities of devices. The expected capability "exec_kernel" is not found in the list for devices using the Level Zero backend, which contradicts both the SYCL standard's requirements and the actual capabilities of these devices, as they can indeed execute kernels.

Attached is the simple reproducer.

Output of this reproducer on my system:

Device: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
Backend: OpenCL
Driver version: 2024.18.7.0.11_160000
Backend version: 3.0
Supports exec_kernel: Yes
------------------------------------------------------
Device: Intel(R) UHD Graphics
Backend: OpenCL
Driver version: 32.0.101.5972
Backend version: 3.0
Supports exec_kernel: Yes
------------------------------------------------------
Device: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz
Backend: OpenCL
Driver version: 2024.17.3.0.08_160000
Backend version: 3.0
Supports exec_kernel: Yes
------------------------------------------------------
Device: Intel(R) FPGA Emulation Device
Backend: OpenCL
Driver version: 2024.17.3.0.08_160000
Backend version: 1.2
Supports exec_kernel: Yes
------------------------------------------------------
Device: Intel(R) UHD Graphics
Backend: Level Zero
Driver version: 1.3.30398
Backend version: 1.3.30398
Supports exec_kernel: No
------------------------------------------------------

 Expected Behavior: Devices, which are capable of executing SYCL kernels, should report "info::execution_capability::exec_kernel" as supported.

Actual Behavior: Level Zero device does not list "exec_kernel" among their execution capabilities, despite being able to execute kernels (as proved in other tests).

I would appreciate your insights on whether this is an intended behavior or an oversight in the current implementation or drivers. Any guidance or fixes you could provide would be greatly appreciated.

Thank you for your assistance.

0 Kudos
1 Solution
Sravani_K_Intel
Moderator
451 Views

Hi @blinkfrog

 

This might not be a bug, from Table 25. Device information descriptors:

Returns a std::vector of the info::execution_capability describing the supported execution capabilities. *Note that this information is intended for OpenCL interoperability only* as SYCL only supports info::execution_capability::exec_kernel.

We do think a clarification is needed on this from the Khronos WG and have raised a PR for the same Clarify and deprecate "execution_capabilities" by gmlueck · Pull Request #625 · KhronosGroup/SYCL-Docs (github.com)

 

View solution in original post

0 Kudos
3 Replies
Alex_Y_Intel
Moderator
646 Views

Thanks for the detailed description and reproducer. I've escalated your issue to our internal team to investigate. 

0 Kudos
Sravani_K_Intel
Moderator
452 Views

Hi @blinkfrog

 

This might not be a bug, from Table 25. Device information descriptors:

Returns a std::vector of the info::execution_capability describing the supported execution capabilities. *Note that this information is intended for OpenCL interoperability only* as SYCL only supports info::execution_capability::exec_kernel.

We do think a clarification is needed on this from the Khronos WG and have raised a PR for the same Clarify and deprecate "execution_capabilities" by gmlueck · Pull Request #625 · KhronosGroup/SYCL-Docs (github.com)

 

0 Kudos
blinkfrog
New Contributor I
218 Views

Thank you very much for your reply. While there is no a definitive answer yet, I am accepting this as a solution and closing the topic. I've subscribed to get updates from that PR so I will get further information there as soon as it will be available.

 

I understand that there is ambiguilty in formulation of that clause in the standard, which leads to different treating it by different SYCL implementations. For example, AdaptiveCpp reports "info::execution_capability::exec_kernel" as supported for all backends I tested there, such as OpenMP, CUDA and HIP.

0 Kudos
Reply