From 98b7d9c904035e8658129ec7a452c815ecfcd06c Mon Sep 17 00:00:00 2001 From: Tuomas Katila Date: Thu, 10 Apr 2025 22:19:19 +0300 Subject: [PATCH] gpu levelzero: update the components to support LunarLake Also install the igc-core components as they seem to be required. Sadly the container size will increase with little benefit. Signed-off-by: Tuomas Katila --- build/docker/intel-gpu-levelzero.Dockerfile | 28 +++++++++++------- .../intel-gpu-levelzero.Dockerfile.in | 29 ++++++++++++------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/build/docker/intel-gpu-levelzero.Dockerfile b/build/docker/intel-gpu-levelzero.Dockerfile index 64c6e365..91b701d2 100644 --- a/build/docker/intel-gpu-levelzero.Dockerfile +++ b/build/docker/intel-gpu-levelzero.Dockerfile @@ -24,7 +24,9 @@ ARG ROCKYLINUX=1 ARG BUILD_BASE=rockylinux:9 ARG FINAL_BASE_DYN=registry.access.redhat.com/ubi9/ubi-minimal:9.3 ### -FROM ${BUILD_BASE} AS builder +## Use the BUILD_BASE when either the a) golang-bookworm is updated to a newer glibc +## or b) the intel-igc-core libraries are fixed to not to demand a newer glibc +FROM ${FINAL_BASE_DYN} AS builder ARG DIR=/intel-device-plugins-for-kubernetes ENV CGO_CFLAGS="-pipe -fno-plt" ENV CGO_LDFLAGS="-fstack-protector-strong -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now,-z,noexecstack,-z,defs,-s,-w" @@ -38,14 +40,18 @@ ARG ROCKYLINUX ARG CGO_VERSION=1.24 RUN mkdir /runtime RUN if [ $ROCKYLINUX -eq 0 ]; then \ - apt-get update && apt-get install --no-install-recommends -y wget libc6-dev ca-certificates ocl-icd-libopencl1 && \ + apt-get update && apt-get install --no-install-recommends -y wget jq curl libc6-dev ocl-icd-libopencl1 gcc ca-certificates && \ + LATEST_GO=$(curl --no-progress-meter https://go.dev/dl/?mode=json | jq ".[] | select(.version | startswith(\"go${CGO_VERSION}\")).version" | tr -d "\"") && \ + wget -q https://go.dev/dl/$LATEST_GO.linux-amd64.tar.gz -O - | tar -xz -C /usr/local && \ cd /runtime && \ - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/intel-level-zero-gpu_1.3.30049.6_amd64.deb && \ - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/intel-opencl-icd_24.26.30049.6_amd64.deb && \ - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/libigdgmm12_22.3.20_amd64.deb && \ - wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.17.6/level-zero-devel_1.17.6+u22.04_amd64.deb && \ - wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.17.6/level-zero_1.17.6+u22.04_amd64.deb && \ - dpkg --ignore-depends=intel-igc-core,intel-igc-opencl -i *.deb && \ + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/intel-level-zero-gpu_1.6.32961.7_amd64.deb && \ + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/intel-opencl-icd_25.09.32961.7_amd64.deb && \ + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/libigdgmm12_22.6.0_amd64.deb && \ + wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.20.2/level-zero-devel_1.20.2+u22.04_amd64.deb && \ + wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.20.2/level-zero_1.20.2+u22.04_amd64.deb && \ + wget -q https://github.com/intel/intel-graphics-compiler/releases/download/v2.8.3/intel-igc-core-2_2.8.3+18762_amd64.deb && \ + wget -q https://github.com/intel/intel-graphics-compiler/releases/download/v2.8.3/intel-igc-opencl-2_2.8.3+18762_amd64.deb && \ + dpkg -i *.deb && \ rm -rf /var/lib/apt/lists/\*; \ else \ source /etc/os-release && dnf install -y gcc jq wget 'dnf-command(config-manager)' && \ @@ -61,7 +67,9 @@ ARG EP=/usr/local/bin/intel_gpu_levelzero ARG CMD WORKDIR ${DIR} COPY . . -RUN export PATH=$PATH:/usr/local/go/bin/ && cd cmd/${CMD} && \ +## Apply for the build phase as well as the license copy below the build. +ENV PATH=$PATH:/usr/local/go/bin/ +RUN cd cmd/${CMD} && \ GO111MODULE=on CGO_ENABLED=1 go install $CGOFLAGS --gcflags="$GCFLAGS" --asmflags="$ASMFLAGS" --ldflags="$LDFLAGS" RUN [ $ROCKYLINUX -eq 0 ] && install -D /go/bin/${CMD} /install_root${EP} || install -D /root/go/bin/${CMD} /install_root${EP} RUN install -D ${DIR}/LICENSE /install_root/licenses/intel-device-plugins-for-kubernetes/LICENSE \ @@ -76,7 +84,7 @@ COPY --from=builder /runtime /runtime RUN if [ $ROCKYLINUX -eq 0 ]; then \ apt-get update && apt-get install --no-install-recommends -y ocl-icd-libopencl1 && \ rm /runtime/level-zero-devel_*.deb && \ - cd /runtime && dpkg --ignore-depends=intel-igc-core,intel-igc-opencl -i *.deb && rm -rf /runtime && \ + cd /runtime && dpkg -i *.deb && rm -rf /runtime && \ rm "/lib/x86_64-linux-gnu/libze_validation"* && rm "/lib/x86_64-linux-gnu/libze_tracing_layer"*; \ else \ cp -a /runtime//*.so* /usr/lib64/ && cp -a /runtime/OpenCL /etc/ && cp -a /runtime/licenses/* /usr/share/licenses/; \ diff --git a/build/docker/templates/intel-gpu-levelzero.Dockerfile.in b/build/docker/templates/intel-gpu-levelzero.Dockerfile.in index f45dc68f..6a2daed0 100644 --- a/build/docker/templates/intel-gpu-levelzero.Dockerfile.in +++ b/build/docker/templates/intel-gpu-levelzero.Dockerfile.in @@ -12,7 +12,9 @@ ARG BUILD_BASE=rockylinux:9 ARG FINAL_BASE_DYN=registry.access.redhat.com/ubi9/ubi-minimal:9.3 ### -FROM ${BUILD_BASE} AS builder +## Use the BUILD_BASE when either the a) golang-bookworm is updated to a newer glibc +## or b) the intel-igc-core libraries are fixed to not to demand a newer glibc +FROM ${FINAL_BASE_DYN} AS builder ARG DIR=/intel-device-plugins-for-kubernetes @@ -31,14 +33,18 @@ ARG CGO_VERSION=1.24 RUN mkdir /runtime RUN if [ $ROCKYLINUX -eq 0 ]; then \N - apt-get update && apt-get install --no-install-recommends -y wget libc6-dev ca-certificates ocl-icd-libopencl1 && \N + apt-get update && apt-get install --no-install-recommends -y wget jq curl libc6-dev ocl-icd-libopencl1 gcc ca-certificates && \N + LATEST_GO=$(curl --no-progress-meter https://go.dev/dl/?mode=json | jq ".[] | select(.version | startswith(\"go${CGO_VERSION}\")).version" | tr -d "\"") && \N + wget -q https://go.dev/dl/$LATEST_GO.linux-amd64.tar.gz -O - | tar -xz -C /usr/local && \N cd /runtime && \N - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/intel-level-zero-gpu_1.3.30049.6_amd64.deb && \N - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/intel-opencl-icd_24.26.30049.6_amd64.deb && \N - wget -q https://github.com/intel/compute-runtime/releases/download/24.26.30049.6/libigdgmm12_22.3.20_amd64.deb && \N - wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.17.6/level-zero-devel_1.17.6+u22.04_amd64.deb && \N - wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.17.6/level-zero_1.17.6+u22.04_amd64.deb && \N - dpkg --ignore-depends=intel-igc-core,intel-igc-opencl -i *.deb && \N + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/intel-level-zero-gpu_1.6.32961.7_amd64.deb && \N + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/intel-opencl-icd_25.09.32961.7_amd64.deb && \N + wget -q https://github.com/intel/compute-runtime/releases/download/25.09.32961.7/libigdgmm12_22.6.0_amd64.deb && \N + wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.20.2/level-zero-devel_1.20.2+u22.04_amd64.deb && \N + wget -q https://github.com/oneapi-src/level-zero/releases/download/v1.20.2/level-zero_1.20.2+u22.04_amd64.deb && \N + wget -q https://github.com/intel/intel-graphics-compiler/releases/download/v2.8.3/intel-igc-core-2_2.8.3+18762_amd64.deb && \N + wget -q https://github.com/intel/intel-graphics-compiler/releases/download/v2.8.3/intel-igc-opencl-2_2.8.3+18762_amd64.deb && \N + dpkg -i *.deb && \N rm -rf /var/lib/apt/lists/\*; \N else \N source /etc/os-release && dnf install -y gcc jq wget 'dnf-command(config-manager)' && \N @@ -57,7 +63,10 @@ ARG CMD WORKDIR ${DIR} COPY . . -RUN export PATH=$PATH:/usr/local/go/bin/ && cd cmd/${CMD} && \N +## Apply for the build phase as well as the license copy below the build. +ENV PATH=$PATH:/usr/local/go/bin/ + +RUN cd cmd/${CMD} && \N GO111MODULE=on CGO_ENABLED=1 go install $CGOFLAGS --gcflags="$GCFLAGS" --asmflags="$ASMFLAGS" --ldflags="$LDFLAGS" RUN [ $ROCKYLINUX -eq 0 ] && install -D /go/bin/${CMD} /install_root${EP} || install -D /root/go/bin/${CMD} /install_root${EP} @@ -73,7 +82,7 @@ COPY --from=builder /runtime /runtime RUN if [ $ROCKYLINUX -eq 0 ]; then \N apt-get update && apt-get install --no-install-recommends -y ocl-icd-libopencl1 && \N rm /runtime/level-zero-devel_*.deb && \N - cd /runtime && dpkg --ignore-depends=intel-igc-core,intel-igc-opencl -i *.deb && rm -rf /runtime && \N + cd /runtime && dpkg -i *.deb && rm -rf /runtime && \N rm "/lib/x86_64-linux-gnu/libze_validation"* && rm "/lib/x86_64-linux-gnu/libze_tracing_layer"*; \N else \N cp -a /runtime//*.so* /usr/lib64/ && cp -a /runtime/OpenCL /etc/ && cp -a /runtime/licenses/* /usr/share/licenses/; \N