Installare i driver GPU NVIDIA in VM serie N che eseguono Linux

Per usufruire delle funzionalità GPU delle VM serie N di Azure che eseguono Linux, installare i driver della scheda grafica NVIDIA supportati. Questo articolo descrive la procedura di installazione dei driver dopo la distribuzione di una macchina virtuale serie N. Le informazioni di configurazione dei driver sono disponibili anche per le VM Windows.

Per conoscere le specifiche, le capacità di archiviazione e i dettagli dei dischi delle macchine virtuali serie N, vedere Dimensioni delle macchine virtuali Linux GPU.

Driver e distribuzioni supportati

Istanze NV: driver NVIDIA GRID

Distribuzione Driver
Ubuntu 16.04 LTS

Red Hat Enterprise Linux 7.3

CentOS-based 7.3
NVIDIA GRID 4.3, driver branch R367

Istanze NC: driver NVIDIA Tesla

Distribuzione Driver
Ubuntu 16.04 LTS

Red Hat Enterprise Linux 7.3

CentOS-based 7.3
NVIDIA CUDA 8.0, driver branch R375

Avviso

L'installazione di software di terze parti in prodotti Red Hat può influenzare i termini di supporto di Red Hat. Vedere l'articolo della Knowledge base di Red Hat.

Installare i driver GRID per VM NV

Per installare i driver NVIDIA GRID nelle macchine virtuali NV, stabilire una connessione SSH a ogni macchina virtuale e seguire la procedura per la distribuzione di Linux.

Ubuntu 16.04 LTS

  1. Eseguire il comando lspci. Verificare che la scheda o le schede NVIDIA M60 siano visualizzate come dispositivi PCI.

  2. Installare gli aggiornamenti.

    sudo apt-get update
    
    sudo apt-get upgrade -y
    
    sudo apt-get dist-upgrade -y
    
    sudo apt-get install build-essential ubuntu-desktop -y
    
  3. Disabilitare il driver del kernel Nouveau, che è incompatibile con il driver NVIDIA. Nelle macchine virtuali NV usare solo il driver NVIDIA. A tale scopo, creare un file in /etc/modprobe.d denominato nouveau.conf con il contenuto seguente:

    blacklist nouveau
    
    blacklist lbm-nouveau
    
  4. Riavviare la macchina virtuale ed eseguire nuovamente la connessione. Uscire dal server X:

    sudo systemctl stop lightdm.service
    
  5. Scaricare e installare il driver GRID:

    wget -O NVIDIA-Linux-x86_64-367.106-grid.run https://go.microsoft.com/fwlink/?linkid=849941  
    
    chmod +x NVIDIA-Linux-x86_64-367.106-grid.run
    
    sudo ./NVIDIA-Linux-x86_64-367.106-grid.run
    
  6. Quando viene chiesto se si vuole eseguire l'utilità nvidia-xconfig per aggiornare il file di configurazione di X, selezionare Yes (Sì).

  7. Al termine dell'installazione, copiare /etc/nvidia/gridd.conf.template in un nuovo file gridd.conf nel percorso /etc/nvidia/

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Aggiungere quanto segue a /etc/nvidia/gridd.conf:

    IgnoreSP=TRUE
    
  9. Riavviare la VM e procedere a verificare l'installazione.

Sistema operativo Linux basato su CentOS 7.3 o Red Hat Enterprise 7.3

  1. Aggiornare il kernel e DKMS.

    sudo yum update
    
    sudo yum install kernel-devel
    
    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    
    sudo yum install dkms
    
  2. Disabilitare il driver del kernel Nouveau, che è incompatibile con il driver NVIDIA. Nelle macchine virtuali NV usare solo il driver NVIDIA. A tale scopo, creare un file in /etc/modprobe.d denominato nouveau.conf con il contenuto seguente:

    blacklist nouveau
    
    blacklist lbm-nouveau
    
  3. Riavviare la macchina virtuale e installare i servizi di integrazione di Linux più recenti per Hyper-V:

    wget http://download.microsoft.com/download/6/8/F/68FE11B8-FAA4-4F8D-8C7D-74DA7F2CFC8C/lis-rpms-4.2.2-2.tar.gz
    
    tar xvzf lis-rpms-4.2.2-2.tar.gz
    
    cd LISISO
    
    sudo ./install.sh
    
    sudo reboot
    
  4. Ristabilire la connessione alla macchina virtuale ed eseguire il comando lspci. Verificare che la scheda o le schede NVIDIA M60 siano visualizzate come dispositivi PCI.

  5. Scaricare e installare il driver GRID:

    wget -O NVIDIA-Linux-x86_64-367.106-grid.run https://go.microsoft.com/fwlink/?linkid=849941  
    
    chmod +x NVIDIA-Linux-x86_64-367.106-grid.run
    
    sudo ./NVIDIA-Linux-x86_64-367.106-grid.run
    
  6. Quando viene chiesto se si vuole eseguire l'utilità nvidia-xconfig per aggiornare il file di configurazione di X, selezionare Yes (Sì).

  7. Al termine dell'installazione, copiare /etc/nvidia/gridd.conf.template in un nuovo file gridd.conf nel percorso /etc/nvidia/

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. Aggiungere quanto segue a /etc/nvidia/gridd.conf:

    IgnoreSP=TRUE
    
  9. Riavviare la VM e procedere a verificare l'installazione.

Verificare l'installazione del driver

Per controllare lo stato del dispositivo GPU, eseguire una connessione SSH alla VM ed eseguire l'utilità della riga di comando nvidia-smi installata con il driver.

Verrà visualizzato un output simile al seguente:

Stato del dispositivo NVIDIA

Server X11

Se è necessario un server X11 per le connessioni remote a una macchina virtuale NV, è consigliabile usare x11vnc perché consente l'accelerazione hardware della grafica. Il BusID del dispositivo M60 deve essere aggiunto manualmente al file xconfig (etc/X11/xorg.conf in Ubuntu 16.04 LTS, /etc/X11/XF86config in CentOS 7.3 o Red Hat Enterprise Server 7.3). Aggiungere una sezione "Device" simile alla seguente:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "Tesla M60"
    BusID          "your-BusID:0:0:0"
EndSection

Aggiornare anche la sezione "Screen" per l'uso del dispositivo.

Per individuare il BusID, eseguire

/usr/bin/nvidia-smi --query-gpu=pci.bus_id --format=csv | tail -1 | cut -d ':' -f 1

Il BusID può cambiare quando una macchina virtuale viene riallocata o riavviata. Pertanto, è consigliabile usare uno script per aggiornare il BusID nella configurazione di X11 quando una macchina virtuale viene riavviata. ad esempio:

#!/bin/bash
BUSID=$((16#`/usr/bin/nvidia-smi --query-gpu=pci.bus_id --format=csv | tail -1 | cut -d ':' -f 1`))

if grep -Fxq "${BUSID}" /etc/X11/XF86Config; then     echo "BUSID is matching"; else   echo "BUSID changed to ${BUSID}" && sed -i '/BusID/c\    BusID          \"PCI:0@'${BUSID}':0:0:0\"' /etc/X11/XF86Config; fi

Questo file può essere richiamato come radice all'avvio mediante la creazione di una voce in /etc/rc.d/rc3.d.

Installare i driver CUDA per macchine virtuali NC

Ecco i passaggi per installare i driver NVIDIA nelle VM NC Linux dal Toolkit 8.0 di NVIDIA CUDA.

Gli sviluppatori C++ e C possono facoltativamente installare il toolkit completo per creare applicazioni con accelerazione GPU. Per altre informazioni, vedere la guida di installazione di CUDA.

Nota

I collegamenti ai download dei driver CUDA forniti qui sono quelli attivi al momento della pubblicazione. Per i driver CUDA più aggiornati, visitare il sito Web NVIDIA.

Per installare il toolkit di CUDA, eseguire una connessione SSH a ciascuna VM. Per verificare che nel sistema sia presente una GPU con supporto per core CUDA, eseguire il comando seguente:

lspci | grep -i NVIDIA

Verrà visualizzato un output simile all'esempio seguente (che rappresenta una scheda NVIDIA Tesla K80):

Output del comando Ispci

Quindi eseguire i comandi di installazione specifici per la distribuzione.

Ubuntu 16.04 LTS

  1. Scaricare e installare i driver CUDA.

    CUDA_REPO_PKG=cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
    
    wget -O /tmp/${CUDA_REPO_PKG} http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/${CUDA_REPO_PKG} 
    
    sudo dpkg -i /tmp/${CUDA_REPO_PKG}
    
    rm -f /tmp/${CUDA_REPO_PKG}
    
    sudo apt-get update
    
    sudo apt-get install cuda-drivers
    

    L'installazione può richiedere alcuni minuti.

  2. Per installare facoltativamente il toolkit di CUDA completo, digitare:

    sudo apt-get install cuda
    
  3. Riavviare la VM e procedere a verificare l'installazione.

Sistema operativo Linux basato su CentOS 7.3 o Red Hat Enterprise 7.3

  1. Ottenere gli aggiornamenti.

    sudo yum update
    
    sudo reboot
    
  2. Ristabilire la connessione alla macchina virtuale e installare i Linux Integration Services più recenti per Hyper-V.

    Importante

    Se è installata un'immagine HPC basata su CentOS in una macchina virtuale NC24r, andare al passaggio 3. Poiché i driver RDMA di Azure e Linux Integration Services sono pre-installati nell'immagine, non è necessario aggiornare i servizi LIS e gli aggiornamenti del kernel sono disabilitati per impostazione predefinita.

    wget http://download.microsoft.com/download/6/8/F/68FE11B8-FAA4-4F8D-8C7D-74DA7F2CFC8C/lis-rpms-4.2.1.tar.gz
    
    tar xvzf lis-rpms-4.2.1.tar.gz
    
    cd LISISO
    
    sudo ./install.sh
    
    sudo reboot
    
  3. Riconnettersi alla macchina virtuale e continuare l'installazione con i comandi seguenti:

    sudo yum install kernel-devel
    
    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    
    sudo yum install dkms
    
    CUDA_REPO_PKG=cuda-repo-rhel7-8.0.61-1.x86_64.rpm
    
    wget http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/${CUDA_REPO_PKG} -O /tmp/${CUDA_REPO_PKG}
    
    sudo rpm -ivh /tmp/${CUDA_REPO_PKG}
    
    rm -f /tmp/${CUDA_REPO_PKG}
    
    sudo yum install cuda-drivers
    

    L'installazione può richiedere alcuni minuti.

  4. Per installare facoltativamente il toolkit di CUDA completo, digitare:

    sudo yum install cuda
    
  5. Riavviare la VM e procedere a verificare l'installazione.

Verificare l'installazione del driver

Per controllare lo stato del dispositivo GPU, eseguire una connessione SSH alla VM ed eseguire l'utilità della riga di comando nvidia-smi installata con il driver.

Verrà visualizzato un output simile al seguente:

Stato del dispositivo NVIDIA

Aggiornamenti dei driver CUDA

È consigliabile aggiornare periodicamente i driver CUDA dopo la distribuzione.

Ubuntu 16.04 LTS

sudo apt-get update

sudo apt-get upgrade -y

sudo apt-get dist-upgrade -y

sudo apt-get install cuda-drivers

sudo reboot

Sistema operativo Linux basato su CentOS 7.3 o Red Hat Enterprise 7.3

sudo yum update

sudo reboot

Risoluzione dei problemi

  • Esiste un problema noto con i driver CUDA sulle macchine virtuali serie N di Azure che eseguono il kernel Linux 4.4.0-75 su Ubuntu 16.04 LTS. Se si usa una versione precedente del kernel, eseguire l'aggiornamento almeno alla versione 4.4.0-77.

Passaggi successivi