1#!/bin/bash 2set -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 10function install_ubuntu() { 11 . /etc/os-release 12 if [[ ! " jammy " =~ " ${VERSION_CODENAME} " ]]; then 13 echo "Ubuntu version ${VERSION_CODENAME} not supported" 14 exit 15 fi 16 17 apt-get update -y 18 apt-get install -y gpg-agent wget 19 # To add the online network package repository for the GPU Driver 20 wget -qO - https://repositories.intel.com/gpu/intel-graphics.key \ 21 | gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg 22 echo "deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] \ 23 https://repositories.intel.com/gpu/ubuntu ${VERSION_CODENAME}${XPU_DRIVER_VERSION} unified" \ 24 | tee /etc/apt/sources.list.d/intel-gpu-${VERSION_CODENAME}.list 25 # To add the online network network package repository for the Intel Support Packages 26 wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB \ 27 | gpg --dearmor > /usr/share/keyrings/intel-for-pytorch-gpu-dev-keyring.gpg 28 echo "deb [signed-by=/usr/share/keyrings/intel-for-pytorch-gpu-dev-keyring.gpg] \ 29 https://apt.repos.intel.com/intel-for-pytorch-gpu-dev all main" \ 30 | tee /etc/apt/sources.list.d/intel-for-pytorch-gpu-dev.list 31 32 # Update the packages list and repository index 33 apt-get update 34 35 # The xpu-smi packages 36 apt-get install -y flex bison xpu-smi 37 # Compute and Media Runtimes 38 apt-get install -y \ 39 intel-opencl-icd intel-level-zero-gpu level-zero \ 40 intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \ 41 libegl-mesa0 libegl1-mesa libegl1-mesa-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri \ 42 libglapi-mesa libgles2-mesa-dev libglx-mesa0 libigdgmm12 libxatracker2 mesa-va-drivers \ 43 mesa-vdpau-drivers mesa-vulkan-drivers va-driver-all vainfo hwinfo clinfo 44 # Development Packages 45 apt-get install -y libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev 46 # Install Intel Support Packages 47 if [ -n "$XPU_VERSION" ]; then 48 apt-get install -y intel-for-pytorch-gpu-dev-${XPU_VERSION} intel-pti-dev 49 else 50 apt-get install -y intel-for-pytorch-gpu-dev intel-pti-dev 51 fi 52 53 # Cleanup 54 apt-get autoclean && apt-get clean 55 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 56} 57 58function install_rhel() { 59 . /etc/os-release 60 if [[ "${ID}" == "rhel" ]]; then 61 if [[ ! " 8.6 8.8 8.9 9.0 9.2 9.3 " =~ " ${VERSION_ID} " ]]; then 62 echo "RHEL version ${VERSION_ID} not supported" 63 exit 64 fi 65 elif [[ "${ID}" == "almalinux" ]]; then 66 # Workaround for almalinux8 which used by quay.io/pypa/manylinux_2_28_x86_64 67 VERSION_ID="8.6" 68 fi 69 70 dnf install -y 'dnf-command(config-manager)' 71 # To add the online network package repository for the GPU Driver 72 dnf config-manager --add-repo \ 73 https://repositories.intel.com/gpu/rhel/${VERSION_ID}${XPU_DRIVER_VERSION}/unified/intel-gpu-${VERSION_ID}.repo 74 # To add the online network network package repository for the Intel Support Packages 75 tee > /etc/yum.repos.d/intel-for-pytorch-gpu-dev.repo << EOF 76[intel-for-pytorch-gpu-dev] 77name=Intel for Pytorch GPU dev repository 78baseurl=https://yum.repos.intel.com/intel-for-pytorch-gpu-dev 79enabled=1 80gpgcheck=1 81repo_gpgcheck=1 82gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB 83EOF 84 85 # The xpu-smi packages 86 dnf install -y xpu-smi 87 # Compute and Media Runtimes 88 dnf install --skip-broken -y \ 89 intel-opencl intel-media intel-mediasdk libmfxgen1 libvpl2\ 90 level-zero intel-level-zero-gpu mesa-dri-drivers mesa-vulkan-drivers \ 91 mesa-vdpau-drivers libdrm mesa-libEGL mesa-libgbm mesa-libGL \ 92 mesa-libxatracker libvpl-tools intel-metrics-discovery \ 93 intel-metrics-library intel-igc-core intel-igc-cm \ 94 libva libva-utils intel-gmmlib libmetee intel-gsc intel-ocloc 95 # Development packages 96 dnf install -y --refresh \ 97 intel-igc-opencl-devel level-zero-devel intel-gsc-devel libmetee-devel \ 98 level-zero-devel 99 # Install Intel Support Packages 100 yum install -y intel-for-pytorch-gpu-dev intel-pti-dev 101 102 # Cleanup 103 dnf clean all 104 rm -rf /var/cache/yum 105 rm -rf /var/lib/yum/yumdb 106 rm -rf /var/lib/yum/history 107} 108 109function install_sles() { 110 . /etc/os-release 111 VERSION_SP=${VERSION_ID//./sp} 112 if [[ ! " 15sp4 15sp5 " =~ " ${VERSION_SP} " ]]; then 113 echo "SLES version ${VERSION_ID} not supported" 114 exit 115 fi 116 117 # To add the online network package repository for the GPU Driver 118 zypper addrepo -f -r \ 119 https://repositories.intel.com/gpu/sles/${VERSION_SP}${XPU_DRIVER_VERSION}/unified/intel-gpu-${VERSION_SP}.repo 120 rpm --import https://repositories.intel.com/gpu/intel-graphics.key 121 # To add the online network network package repository for the Intel Support Packages 122 zypper addrepo https://yum.repos.intel.com/intel-for-pytorch-gpu-dev intel-for-pytorch-gpu-dev 123 rpm --import https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB 124 125 # The xpu-smi packages 126 zypper install -y lsb-release flex bison xpu-smi 127 # Compute and Media Runtimes 128 zypper install -y intel-level-zero-gpu level-zero intel-gsc intel-opencl intel-ocloc \ 129 intel-media-driver libigfxcmrt7 libvpl2 libvpl-tools libmfxgen1 libmfx1 130 # Development packages 131 zypper install -y libigdfcl-devel intel-igc-cm libigfxcmrt-devel level-zero-devel 132 133 # Install Intel Support Packages 134 zypper install -y intel-for-pytorch-gpu-dev intel-pti-dev 135 136} 137 138# Default use GPU driver LTS releases 139XPU_DRIVER_VERSION="/lts/2350" 140if [[ "${XPU_DRIVER_TYPE,,}" == "rolling" ]]; then 141 # Use GPU driver rolling releases 142 XPU_DRIVER_VERSION="" 143fi 144 145# The installation depends on the base OS 146ID=$(grep -oP '(?<=^ID=).+' /etc/os-release | tr -d '"') 147case "$ID" in 148 ubuntu) 149 install_ubuntu 150 ;; 151 rhel|almalinux) 152 install_rhel 153 ;; 154 sles) 155 install_sles 156 ;; 157 *) 158 echo "Unable to determine OS..." 159 exit 1 160 ;; 161esac 162