Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wolfram77/ac0388a5409fa3871b609e5abf6d2967 to your computer and use it in GitHub Desktop.
Save wolfram77/ac0388a5409fa3871b609e5abf6d2967 to your computer and use it in GitHub Desktop.
Introduction to Level Zero API for Heterogeneous Programming : NOTES

Highlighted notes on:
Introduction to Level Zero API for Heterogeneous Programming by Juan Fumero
While doing research work with Prof. Dip Sankar Banerjee, Prof. Kishore Kothapalli.

Level-Zero appears quite similar to CUDA, but is very verbose. AS Juan has said, it is quite similar to OpenCL and Vulkan. It has command queues to commands to device for compute or copy. Shared memory (unified memory in CUDA) is used. Synchronization is done with events and fences (need to read what fences are). You can take an OpenCL kernel, compile with clang to SPIRV (used by Vulkan too) and load it up and build to native, and submit in a command list. Similar to CUDA, synchronize is needed to wait for kernel to complete as execution is asynchronous (its just submit to queue).

Like OpenCL, Level-Zero assumes multiple drivers, and devices, queues. Some picking needed for these (atleast for queues=compute).

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment