Skip to content

Updating binary dependencies

Tim Besard edited this page Nov 8, 2021 · 1 revision

This page documents how to update the binary dependencies oneAPI.jl relies on.

The major binary dependency oneAPI.jl relies on is NEO, or Intel's compute runtime for oneAPI, which implements the oneAPI interface for working with Intel GPUs. The corresponding Julia package is NEO_jll.jl. To update this package, look at the latest release and update the corresponding files on Yggdrasil.

Note that NEO depends on specific versions of IGC and gmmlib, and implements a specific version of the oneAPI interface. As such, you will probably have to update those dependencies before being able to update NEO.

IGC provides an LLVM-based compiler for targeting Intel hardware, and is packaged in Julia as libigc_jll. Again, look at the latest release and use the versions and hashes reported there to update the corresponding entries in Yggdrasil.

Take care to use the correct version hashes. Sometimes, the releases page uses outdated information, and you might have to look at IGC's CMake files to figure out which exact version is needed.

The oneAPI Level Zero repository provides a couple of things that are packaged separately in Julia: The oneAPI interface headers, as oneAPI_Level_Zero_Headers_jll.jl, and a loader library as oneAPI_Level_Zero_Loader_jll.jl. The split makes it possible to separately version in terms of API requirements and API implementation. It is also needed to be compatible with the oneAPI loader, which requires an implementation (e.g. NEO) to be loaded first, but if NEO_jll were to depend on a monolithic oneAPI_Level_Zero_jll (for API compatibility) the load order would be reversed.

To update these packages, update the corresponding files in Yggdrasil. Make sure you (separately!) bump the individual build_tarballs.jl, and not only the common.jl, to trigger the build process.

Clone this wiki locally