Skip to content

dpclang fails to build with custom installed L0 in parallel to system installed one #23045

Description

@dvrogozh

With v7.0.1 on Linux (Ubuntu 24.04). Note that issue can't be reproduced on b73d26e (latest sycl branch head as of 8/27/2026) - I explain why in the #23045 (comment).

Consider that system has outdated system-wide installation of L0, for example, on PVC system with LTS 2350 driver set:

$ find /usr/lib/x86_64-linux-gnu/ -name libze_loader.so.1.*
/usr/lib/x86_64-linux-gnu/libze_loader.so.1.24.0
$ pkg-config --modversion level-zero
1.24.0

This version is too old to build dpclang. Thus user can opt-in to build dpclang against custom installation of L0, so he does:

git clone https://github.com/oneapi-src/level-zero.git && cd level-zero
git checkout v1.33.1
cmake -B _build -S . -G Ninja \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX=$HOME/_install
cmake --build _build
cmake --install _build

Note that user installs L0 into custom local directory $HOME/_install. In this case build of the dpclang will fail:

$ export PKG_CONFIG_PATH=$HOME/_install/lib/pkgconfig/
$ export LD_LIBRARY_PATH=$HOME/_install/lib:$LD_LIBRARY_PATH
$ cmake -B _build -S llvm -G Ninja \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \
            -DBUILD_SHARED_LIBS=ON \
            -DLLVM_BUILD_TOOLS=ON \
            -DLLVM_ENABLE_ASSERTIONS=ON \
            -DLLVM_ENABLE_DOXYGEN=OFF \
            -DLLVM_ENABLE_LLD=OFF \
            -DLLVM_ENABLE_PROJECTS='clang;sycl;llvm-spirv;opencl;xpti;xptifw;compiler-rt;libdevice;sycl-jit' \
            -DLLVM_ENABLE_RTTI=ON \
            -DLLVM_ENABLE_SPHINX=OFF \
            -DLLVM_ENABLE_ZSTD=ON \
            -DLLVM_EXTERNAL_PROJECTS='sycl;llvm-spirv;opencl;xpti;xptifw;compiler-rt;libdevice;sycl-jit' \
            -DLLVM_SPIRV_ENABLE_LIBSPIRV_DIS=OFF \
            -DLLVM_TARGETS_TO_BUILD='host;SPIRV' \
            -DSYCL_ENABLE_EXTENSION_JIT=ON \
            -DSYCL_ENABLE_MAJOR_RELEASE_PREVIEW_LIB=OFF \
            -DSYCL_ENABLE_WERROR=OFF \
            -DSYCL_ENABLE_XPTI_TRACING=ON \
            -DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR=$(pwd)/libdevice \
            -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=$(pwd)/llvm-spirv \
            -DLLVM_EXTERNAL_SYCL_JIT_SOURCE_DIR=$(pwd)/sycl-jit \
            -DLLVM_EXTERNAL_SYCL_SOURCE_DIR=$(pwd)/sycl \
            -DLLVM_EXTERNAL_XPTI_SOURCE_DIR=$(pwd)/xpti \
            -DLLVM_EXTERNAL_XPTIFW_SOURCE_DIR=$(pwd)/xptifw \
            -DSYCL_INCLUDE_TESTS=OFF \
            -DXPTI_ENABLE_WERROR=OFF
$ cmake --build _build

/usr/bin/c++ -DUR_ADAPTER_LEVEL_ZERO_V2 -DUR_ENABLE_SANITIZER -DUR_ENABLE_TRACING -DUR_STATIC_LEVEL_ZERO -DUR_VALIDATION_LAYER_SUPPORTED_VERSION=\"0\" -DUR_VERSION=\"0\" -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dur_adapter_level_zero_v2_EXPORTS -I/home/dvrogozh/git/intel-llvm/_build/unified-runtime/source/adapters/level_zero -I/home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero -I/home/dvrogozh/git/intel-llvm/_build/include -I/home/dvrogozh/git/intel-llvm/llvm/include -I/home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/../.. -I/home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/../../ur -I/home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/LevelZeroLoader-Headers -I/home/dvrogozh/git/intel-llvm/unified-runtime/include -I/home/dvrogozh/git/intel-llvm/unified-runtime/source/common -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/include -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/ravl -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/critnib -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/provider -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/memspaces -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/memtargets -I/home/dvrogozh/git/intel-llvm/_build/_deps/unified-memory-framework-src/src/uthash -I/home/dvrogozh/tmp/_install/lib/pkgconfig/../../include/level_zero -I/home/dvrogozh/git/intel-llvm/_build/content-exp-headers/level_zero/include -I/home/dvrogozh/git/intel-llvm/_build/content-exp-headers/level_zero/include/../.. -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-dangling-reference -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -Wno-error -O3 -DNDEBUG -std=c++17 -fPIC -UNDEBUG -Wall -Wpedantic -Wempty-body -Wformat -Wformat-security -Wunused-parameter -fstack-protector-strong -fvisibility=hidden -fcf-protection=full -fstack-clash-protection -fdiagnostics-color=always -MD -MT unified-runtime/source/adapters/level_zero/CMakeFiles/ur_adapter_level_zero_v2.dir/v2/graph.cpp.o -MF unified-runtime/source/adapters/level_zero/CMakeFiles/ur_adapter_level_zero_v2.dir/v2/graph.cpp.o.d -o unified-runtime/source/adapters/level_zero/CMakeFiles/ur_adapter_level_zero_v2.dir/v2/graph.cpp.o -c /home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/v2/graph.cpp
In file included from /home/dvrogozh/tmp/_install/lib/pkgconfig/../../include/level_zero/loader/ze_loader.h:16,
                 from /home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/v2/../common.hpp:28,
                 from /home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/v2/common.hpp:16,
                 from /home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/v2/graph.hpp:13,
                 from /home/dvrogozh/git/intel-llvm/unified-runtime/source/adapters/level_zero/v2/graph.cpp:11:
/home/dvrogozh/tmp/_install/lib/pkgconfig/../../include/level_zero/loader/../layers/zel_tracing_register_cb.h:874:5: error: ‘ze_validate_runtime_requirements_output_t’ does not name a type; did you mean ‘_ze_device_validate_runtime_requirements_params_t’?
  874 |     ze_validate_runtime_requirements_output_t** ppOut;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |     _ze_device_validate_runtime_requirements_params_t
/home/dvrogozh/tmp/_install/lib/pkgconfig/../../include/level_zero/loader/../layers/zel_tracing_register_cb.h:926:5: error: ‘ze_device_compiler_info_t’ does not name a type; did you mean ‘ze_device_properties_t’?
  926 |     ze_device_compiler_info_t* pparamName;
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
      |     ze_device_properties_t

Please, support this usage scenario. This usage comes from the pytorch CI where dpclang and PTI libraries have different requirements for the minimal L0 version and system level L0 is too old to be used by both. To handle this issue we need to build L0 on pytorch CI side and use it to further build dpclang, PTI and pytorch - that's where we step into issue. On pytorch side see:

CC: @sarnex, @dm-vodopyanov, @mschilling0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions