Issue
compute-runtime image is too large to act as a reasonable base image for GPU workloads:
$ docker images docker.io/intel/compute-runtime:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/intel/compute-runtime latest e1210a73ef24 3 weeks ago 973 MB
Because it has a lot of things that should go to a separate devel image, instead of them being on compute (+ media) driver runtime image.
Extra content: devel packages
Devel packages on the image:
$ docker run -it --rm docker.io/intel/compute-runtime bash -c "dpkg -l '*-dev' | grep ^ii"
ii dpkg-dev 1.22.6ubuntu6.6 all Debian package development tools
ii libc6-dev:amd64 2.39-0ubuntu8.7 amd64 GNU C Library: Development Libraries and Header Files
ii libcrypt-dev:amd64 1:4.4.36-4build1 amd64 libcrypt development files
ii libgcc-13-dev:amd64 13.3.0-6ubuntu2~24.04.1 amd64 GCC support library (development files)
ii libmetee-dev:amd64 6.2.1-1~24.04~ppa1 amd64 Intel(R) ME TEE Library - headers
ii libstdc++-13-dev:amd64 13.3.0-6ubuntu2~24.04.1 amd64 GNU Standard C++ Library v3 (development files)
ii libze-dev:amd64 1.28.2-1~24.04~ppa1 amd64 oneAPI Level Zero -- development files
ii linux-libc-dev:amd64 6.8.0-124.124 amd64 Linux Kernel Headers for development
ii systemd-dev 255.4-1ubuntu8.15 all systemd development files
Of those, Intel ones are IMHO fairly OK:
libze-dev: is explicit intel-gpu-compute metapackage dep, needs to match backend version, is smallish (2MB) & does not bring in anything extra
libmetee-dev: is explicit libigsc1 dep, small (1<MB) & does not bring in anything extra
But gcc, dpkg and stdc++ devel package definitely are not OK, see output of:
dpkg -s $(dpkg -l *-dev | awk '/^ii/{print $2}') | grep -e ^Package -e ^Depends -e ^Recommends -e Installed-Size.
Extra content: very large packages
Large packages for extra languages and built tools (at least ones marked with "***"):
$ docker run -it --rm docker.io/intel/compute-runtime awk '/^Package:/{name=$2} /^Installed-Size:/{print $2,name}' /var/lib/dpkg/status | sort -nr
123588 libigdfcl2
97334 libigc2
61333 gcc-13-x86-64-linux-gnu ***
57959 libze-intel-gpu1
55617 intel-opencl-icd
36493 cmake ***
35919 libicu74
33545 g++-13-x86-64-linux-gnu ***
30807 cpp-13-x86-64-linux-gnu ***
29333 libperl5.38t64 ***
21692 git ***
21662 libstdc++-13-dev ***
20418 iso-codes
19159 perl-modules-5.38 ***
18880 xpu-smi
16082 libgcc-13-dev ***
13431 libc6
13112 libc6-dev ***
11744 systemd
11549 binutils-x86-64-linux-gnu
10984 cmake-data ***
10791 libasan8
9024 libpython3.12-stdlib
8902 libtsan2
7927 python3.12-minimal
7913 perl-base ***
7507 linux-libc-dev ***
...
Issue
compute-runtimeimage is too large to act as a reasonable base image for GPU workloads:Because it has a lot of things that should go to a separate devel image, instead of them being on compute (+ media) driver runtime image.
Extra content: devel packages
Devel packages on the image:
Of those, Intel ones are IMHO fairly OK:
libze-dev: is explicitintel-gpu-computemetapackage dep, needs to match backend version, is smallish (2MB) & does not bring in anything extralibmetee-dev: is explicitlibigsc1dep, small (1<MB) & does not bring in anything extraBut
gcc,dpkgandstdc++devel package definitely are not OK, see output of:dpkg -s $(dpkg -l *-dev | awk '/^ii/{print $2}') | grep -e ^Package -e ^Depends -e ^Recommends -e Installed-Size.Extra content: very large packages
Large packages for extra languages and built tools (at least ones marked with "***"):