Skip to content

Commit 8fa9749

Browse files
authored
[CI] Switch to LTS2 for CICD tests (#2100)
Add test dockerfile and image build workflow, default use LTS2 driver, refer https://dgpu-docs.intel.com/releases/LTS-release-notes.html#release-2025-09-05 disable_build
1 parent fe324d3 commit 8fa9749

File tree

11 files changed

+330
-7
lines changed

11 files changed

+330
-7
lines changed

.ci/docker/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Docker images for GitHub CI and CD
2+
3+
This directory contains everything needed to build the Docker images
4+
that are used in our CI tests.
5+
6+
## Docker CI builds
7+
8+
* `pytorch/manylinux2_28-builder:xpu-main` -- can use pytorch CICD image directly
9+
10+
## Docker CI tests
11+
12+
If also use this for build, need install Intel® Deep Learning Essentials,
13+
refer to [Intel® Deep Learning Essentials](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html?packages=dl-essentials&dl-essentials-os=linux&dl-lin=offline)
14+
```bash
15+
# Build a specific image for tests
16+
docker build --build-arg UBUNTU_VERSION=22.04 --file ubuntu/Dockerfile --build-arg XPU_DRIVER_TYPE=LTS2 .
17+
```

.ci/docker/common/install_xpu.sh

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
#!/bin/bash
2+
set -xe
3+
# Script used in CI and CD pipeline
4+
5+
# Intel® software for general purpose GPU capabilities.
6+
# Refer to https://www.intel.com/content/www/us/en/developer/articles/tool/pytorch-prerequisites-for-intel-gpus.html
7+
8+
# Users should update to the latest version as it becomes available
9+
10+
function install_ubuntu() {
11+
. /etc/os-release
12+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
13+
if [[ ! " jammy " =~ " ${VERSION_CODENAME} " ]]; then
14+
echo "Ubuntu version ${VERSION_CODENAME} with ${XPU_DRIVER_TYPE} not supported"
15+
exit 1
16+
fi
17+
else
18+
if [[ ! " jammy noble " =~ " ${VERSION_CODENAME} " ]]; then
19+
echo "Ubuntu version ${VERSION_CODENAME} with ${XPU_DRIVER_TYPE} not supported"
20+
exit 1
21+
fi
22+
fi
23+
24+
apt-get update -y
25+
apt-get install -y gpg-agent wget
26+
# To add the online network package repository for the GPU Driver
27+
wget -qO - https://repositories.intel.com/gpu/intel-graphics.key \
28+
| gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg
29+
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] \
30+
https://repositories.intel.com/gpu/ubuntu ${VERSION_CODENAME}${XPU_DRIVER_VERSION} unified" \
31+
| tee /etc/apt/sources.list.d/intel-gpu-${VERSION_CODENAME}.list
32+
33+
# Update the packages list and repository index
34+
apt-get update
35+
36+
# The xpu-smi packages
37+
apt-get install -y flex bison xpu-smi
38+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
39+
# Compute and Media Runtimes
40+
apt-get install -y \
41+
intel-opencl-icd intel-level-zero-gpu level-zero \
42+
intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \
43+
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
44+
libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
45+
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo
46+
# Development Packages
47+
apt-get install -y libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
48+
else # rolling or lts2 driver
49+
if [ "${VERSION_CODENAME}" == "jammy" ];then
50+
apt-get install -y \
51+
intel-opencl-icd libze-intel-gpu1 libze1 \
52+
intel-media-va-driver-non-free libmfx-gen1 libvpl2 \
53+
libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
54+
libglapi-mesa libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
55+
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo intel-ocloc
56+
else
57+
apt-get install -y \
58+
intel-opencl-icd libze-intel-gpu1 libze1 \
59+
intel-media-va-driver-non-free libmfx-gen1 libvpl2 \
60+
libegl-mesa0 libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \
61+
libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \
62+
mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo intel-ocloc
63+
fi
64+
apt-get install -y libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev libze-dev
65+
fi
66+
67+
# Cleanup
68+
apt-get autoclean && apt-get clean
69+
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
70+
}
71+
72+
function install_rhel() {
73+
. /etc/os-release
74+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
75+
if [[ "${ID}" == "rhel" ]]; then
76+
if [[ ! " 8.8 8.10 9.2 9.4 9.5 " =~ " ${VERSION_ID} " ]]; then
77+
echo "RHEL version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
78+
exit 1
79+
fi
80+
elif [[ "${ID}" == "almalinux" ]]; then
81+
# Workaround for almalinux8 which used by quay.io/pypa/manylinux_2_28_x86_64
82+
VERSION_ID="8.8"
83+
fi
84+
elif [ "${XPU_DRIVER_TYPE,,}" == "lts2" ]; then
85+
if [[ "${ID}" == "rhel" ]]; then
86+
if [[ ! " 8.10 9.4 9.6 10.0 " =~ " ${VERSION_ID} " ]]; then
87+
echo "RHEL version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
88+
exit 1
89+
fi
90+
elif [[ "${ID}" == "almalinux" ]]; then
91+
# Workaround for almalinux8 which used by quay.io/pypa/manylinux_2_28_x86_64
92+
VERSION_ID="8.10"
93+
fi
94+
else # rolling driver
95+
if [[ "${ID}" == "rhel" ]]; then
96+
if [[ ! " 8.10 9.4 9.6 " =~ " ${VERSION_ID} " ]]; then
97+
echo "RHEL version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
98+
exit 1
99+
fi
100+
elif [[ "${ID}" == "almalinux" ]]; then
101+
# Workaround for almalinux8 which used by quay.io/pypa/manylinux_2_28_x86_64
102+
VERSION_ID="8.10"
103+
fi
104+
fi
105+
106+
dnf install -y 'dnf-command(config-manager)'
107+
# To add the online network package repository for the GPU Driver
108+
dnf config-manager --add-repo \
109+
https://repositories.intel.com/gpu/rhel/${VERSION_ID}${XPU_DRIVER_VERSION}/unified/intel-gpu-${VERSION_ID}.repo
110+
111+
# Install Intel Support Packages
112+
yum install -y ${XPU_PACKAGES}
113+
# The xpu-smi packages
114+
dnf install -y flex bison xpu-smi
115+
# Compute and Media Runtimes
116+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
117+
dnf install --skip-broken -y \
118+
intel-opencl intel-media libmfxgen1 libvpl2 \
119+
level-zero intel-level-zero-gpu mesa-dri-drivers mesa-vulkan-drivers \
120+
mesa-vdpau-drivers mesa-libEGL mesa-libgbm mesa-libGL \
121+
mesa-libxatracker libvpl-tools intel-metrics-discovery \
122+
intel-metrics-library intel-igc-core intel-igc-cm \
123+
libva libva-utils intel-gmmlib libmetee intel-gsc intel-ocloc
124+
else
125+
dnf install --skip-broken -y \
126+
intel-opencl intel-media libmfxgen1 libvpl2 \
127+
level-zero intel-level-zero-gpu mesa-dri-drivers mesa-vulkan-drivers \
128+
mesa-vdpau-drivers libdrm mesa-libEGL mesa-libgbm mesa-libGL \
129+
mesa-libxatracker libvpl-tools intel-metrics-discovery \
130+
intel-metrics-library intel-igc-core intel-igc-cm \
131+
libva libva-utils intel-gmmlib libmetee intel-gsc intel-ocloc
132+
fi
133+
# Development packages
134+
dnf install -y --refresh intel-igc-opencl-devel level-zero-devel intel-gsc-devel libmetee-devel
135+
dnf install --enablerepo epel -y hwinfo clinfo
136+
137+
# Cleanup
138+
dnf clean all
139+
rm -rf /var/cache/yum
140+
rm -rf /var/lib/yum/yumdb
141+
rm -rf /var/lib/yum/history
142+
}
143+
144+
function install_sles() {
145+
. /etc/os-release
146+
VERSION_SP=${VERSION_ID//./sp}
147+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
148+
if [[ ! " 15sp4 15sp5 15sp6 " =~ " ${VERSION_SP} " ]]; then
149+
echo "SLES version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
150+
exit
151+
fi
152+
elif [ "${XPU_DRIVER_TYPE,,}" == "lts2" ]; then
153+
if [[ ! " 15sp4 15sp5 15sp6 15sp7" =~ " ${VERSION_SP} " ]]; then
154+
echo "SLES version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
155+
exit
156+
fi
157+
else # rolling
158+
if [[ ! " 15sp4 15sp5 15sp6 " =~ " ${VERSION_SP} " ]]; then
159+
echo "SLES version ${VERSION_ID} with ${XPU_DRIVER_TYPE} not supported"
160+
exit
161+
fi
162+
fi
163+
164+
# To add the online network package repository for the GPU Driver
165+
zypper addrepo -f -r \
166+
https://repositories.intel.com/gpu/sles/${VERSION_SP}${XPU_DRIVER_VERSION}/unified/intel-gpu-${VERSION_SP}.repo
167+
rpm --import https://repositories.intel.com/gpu/intel-graphics.key
168+
169+
# The xpu-smi packages
170+
zypper install -y lsb-release flex bison xpu-smi
171+
# Compute and Media Runtimes
172+
zypper install -y \
173+
intel-level-zero-gpu level-zero intel-gsc intel-opencl intel-ocloc \
174+
intel-media-driver libigfxcmrt7 libvpl2 libvpl-tools libmfxgen1
175+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
176+
zypper install -y libmfx1
177+
fi
178+
# Development packages
179+
zypper install -y libigdfcl-devel intel-igc-cm libigfxcmrt-devel level-zero-devel
180+
zypper install -y clinfo libOpenCL1 libva-utils hwinfo
181+
182+
}
183+
184+
# Default use GPU driver rolling releases
185+
XPU_DRIVER_VERSION=""
186+
if [ "${XPU_DRIVER_TYPE,,}" == "lts" ]; then
187+
# Use GPU driver LTS releases
188+
XPU_DRIVER_VERSION="/lts/2350"
189+
elif [ "${XPU_DRIVER_TYPE,,}" == "lts2" ]; then
190+
# Use GPU driver LTS releases
191+
XPU_DRIVER_VERSION="/lts/2523"
192+
fi
193+
194+
# The installation depends on the base OS
195+
ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"')
196+
case "$ID" in
197+
ubuntu)
198+
install_ubuntu
199+
;;
200+
rhel|almalinux)
201+
install_rhel
202+
;;
203+
sles)
204+
install_sles
205+
;;
206+
*)
207+
echo "Unable to determine OS..."
208+
exit 1
209+
;;
210+
esac

.ci/docker/ubuntu/Dockerfile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
ARG UBUNTU_VERSION
2+
3+
FROM ubuntu:${UBUNTU_VERSION}
4+
5+
ENV DEBIAN_FRONTEND noninteractive
6+
7+
# install Intel GPU driver LTS2, refer to https://dgpu-docs.intel.com/driver/installation-lts2.html
8+
ARG XPU_DRIVER_TYPE
9+
ENV XPU_DRIVER_TYPE ${XPU_DRIVER_TYPE}
10+
11+
COPY ./common/install_xpu.sh install_xpu.sh
12+
RUN bash ./install_xpu.sh && rm -f install_xpu.sh
13+
14+
# install extra packages for pytorch benchmark
15+
RUN apt-get update && \
16+
apt-get install -y wget curl sudo git unzip zip gh numactl rsync jq && \
17+
apt-get install -y gcc g++ cmake libgl1 zlib1g-dev libglib2.0-dev && \
18+
apt-get install -y libnl-genl-3-200 && \
19+
apt-get autoclean && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
20+
21+
22+
USER jenkins
23+
CMD ["bash"]

.github/scripts/lintrunner.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if ! command -v lintrunner &> /dev/null; then
2424
fi
2525

2626
# Ignoring errors in one specific run
27-
export SHELLCHECK_OPTS="-e SC2154 -e SC2086 -e SC1091 -e SC2046"
27+
export SHELLCHECK_OPTS="-e SC2154 -e SC2086 -e SC1091 -e SC2046 -e SC2076"
2828

2929
# This has already been cached in the docker image
3030
lintrunner init 2> /dev/null

.github/workflows/_linux_accelerate.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ jobs:
9292
runs-on: ${{ needs.prepare.outputs.runner_id }}
9393
needs: prepare
9494
container:
95-
image: mengfeili/intel-pvc-driver:1146-1136
95+
image: intelgpu/ubuntu-22.04-lts2:2523.31
9696
volumes:
9797
- ${{ github.workspace }}:${{ github.workspace }}
9898
options: --device=/dev/mem --device=/dev/dri --group-add video --group-add ${{ needs.prepare.outputs.render_id }}

.github/workflows/_linux_e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ jobs:
7878
needs: runner
7979
timeout-minutes: 3600
8080
container:
81-
image: mengfeili/intel-pvc-driver:1146-1136
81+
image: intelgpu/ubuntu-22.04-lts2:2523.31
8282
volumes:
8383
- ${{ github.workspace }}:${{ github.workspace }}
8484
options: --device=/dev/mem --device=/dev/dri --group-add video --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --shm-size=8g

.github/workflows/_linux_op_benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
runs-on: ${{ needs.runner.outputs.runner_id }}
5454
timeout-minutes: 900
5555
container:
56-
image: mengfeili/intel-pvc-driver:1146-1136
56+
image: intelgpu/ubuntu-22.04-lts2:2523.31
5757
volumes:
5858
- ${{ github.workspace }}:${{ github.workspace }}
5959
options: --device=/dev/mem --device=/dev/dri --group-add video --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --shm-size=8g
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Linux Image for Tests
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
paths:
8+
- '.ci/docker/common/install_xpu.sh'
9+
- '.ci/docker/ubuntu/Dockerfile'
10+
- '.github/workflows/_linux_test_image.yml'
11+
workflow_call:
12+
inputs:
13+
runner:
14+
type: string
15+
default: 'ubuntu-24.04'
16+
description: Runner label
17+
driver:
18+
required: true
19+
type: string
20+
default: 'lts2'
21+
description: Driver version, lts, lts2 or rolling
22+
ubuntu:
23+
required: true
24+
type: string
25+
default: '22.04'
26+
description: Ubuntu version, 22.04 or 24.04
27+
tag:
28+
required: true
29+
type: string
30+
default: 'intelgpu/ubuntu-22.04-lts2:2523.31'
31+
description: Whether push image to docker hub or not
32+
push_to_hub:
33+
type: boolean
34+
default: false
35+
description: Whether push image to docker hub or not
36+
37+
permissions: read-all
38+
39+
defaults:
40+
run:
41+
shell: bash -xe {0}
42+
env:
43+
GH_TOKEN: ${{ github.token }}
44+
DOCKER_REGISTRY_AUTH_TOKEN: ${{ secrets.DOCKER_HUB_TOKEN }}
45+
46+
jobs:
47+
build-image:
48+
runs-on: ${{ inputs.runner != '' && inputs.runner || 'ubuntu-24.04' }}
49+
if: ${{ github.event.pull_request.draft == false }}
50+
steps:
51+
- name: Cleanup
52+
run: |
53+
if systemctl is-active --quiet docker; then
54+
echo "Docker daemon is running...";
55+
else
56+
echo "Starting docker deamon..." && sudo sh -c "systemctl start docker";
57+
fi
58+
docker system prune -af || true
59+
- name: Checkout torch-xpu-ops
60+
uses: actions/checkout@v4
61+
- name: Build image
62+
run: |
63+
cd .ci/docker
64+
docker build . -t ${{ inputs.tag != '' && inputs.tag || 'intelgpu/ubuntu-22.04-lts2:latest' }} \
65+
--build-arg UBUNTU_VERSION=${{ inputs.ubuntu != '' && inputs.ubuntu || '22.04' }} \
66+
--build-arg XPU_DRIVER_TYPE=${{ inputs.driver != '' && inputs.driver || 'lts2' }} \
67+
-f ubuntu/Dockerfile
68+
docker images
69+
- name: Push image
70+
if: ${{ inputs.push_to_hub }}
71+
run: |
72+
echo "$DOCKER_REGISTRY_AUTH_TOKEN" | docker login -u intelgpu --password-stdin
73+
docker push ${{ inputs.tag != '' && inputs.tag || 'intelgpu/ubuntu-22.04-lts2:latest' }}

.github/workflows/_linux_transformers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ jobs:
145145
needs: prepare
146146
runs-on: ${{ needs.prepare.outputs.runner_id }}
147147
container:
148-
image: mengfeili/intel-pvc-driver:1146-1136
148+
image: intelgpu/ubuntu-22.04-lts2:2523.31
149149
volumes:
150150
- ${{ github.workspace }}:${{ github.workspace }}
151151
options: --device=/dev/mem --device=/dev/dri --group-add video --group-add ${{ needs.prepare.outputs.render_id }}

.github/workflows/_linux_ut.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
if: ${{ ! contains(inputs.ut, 'distributed') }}
6262
runs-on: ${{ needs.runner.outputs.runner_id }}
6363
container:
64-
image: mengfeili/intel-pvc-driver:1146-1136
64+
image: intelgpu/ubuntu-22.04-lts2:2523.31
6565
volumes:
6666
- ${{ github.workspace }}:${{ github.workspace }}
6767
options: --device=/dev/mem --device=/dev/dri --group-add video --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --shm-size=8g

0 commit comments

Comments
 (0)