web-dev-qa-db-fra.com

Nvidia-SMI ne peut pas communiquer avec le pilote NVIDIA

Description du problème

J'essaie de mettre en place une instance Centos-7 GPU (NVIDIA TESLA K80) sur Google Cloud, pour exécuter les travaux de CUDA.

Malheureusement, je ne peux pas sembler installer/configurer correctement les pilotes.

En effet, voici ce qui se passe lorsque vous essayez d'interagir avec nvidia-smi (Interface de gestion du système NVIDIA):

# nvidia-smi -pm 1
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

Même opération avec une méthode plus récente nvidia-persistenced:

# nvidia-persistenced
nvidia-persistenced failed to initialize. Check syslog for more details.

+ Je reçois l'erreur suivante dans Syslog (en utilisant la commande journalctl):

Failed to query NVIDIA devices. Please ensure that the NVIDIA device files (/dev/nvidia*) exist, and that user 0 has read and write permissions for those files.

En effet, aucun dispositif Nvidia n'est présent:

# ll /dev/nvidia*
ls: cannot access /dev/nvidia*: No such file or directory

Cependant, voici une preuve que le GPU est correctement connecté à l'instance:

# lshw -numeric -C display
  *-display UNCLAIMED       
       description: 3D controller
       product: GK210GL [Tesla K80] [10DE:102D]
       vendor: NVIDIA Corporation [10DE]
       physical id: 4
       bus info: pci@0000:00:04.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm cap_list
       configuration: latency=0
       resources: iomemory:40-3f iomemory:80-7f memory:fc000000-fcffffff memory:400000000-7ffffffff memory:800000000-801ffffff ioport:c000(size=128)

Processus d'installation que j'ai suivi

Création de l'instance Centos-7, après cette section de Google Cloud Docs :

gcloud compute instances create test-gpu-drivers \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family centos-7 --image-project centos-cloud \
    --maintenance-policy TERMINATE

Ensuite, le processus d'installation que j'ai suivi pour les pilotes et Cuda est inspiré par Google Cloud Documentation , mais avec les dernières versions à la place:

gcloud compute ssh test-gpu-drivers
Sudo su
yum -y update

# Reboot for kernel update to be taken into account
reboot

gcloud compute ssh test-gpu-drivers
Sudo su

# Install nvidia drivers repository, found here: https://www.nvidia.com/Download/index.aspx?lang=en-us
curl -J -O http://us.download.nvidia.com/tesla/410.72/nvidia-diag-driver-local-repo-rhel7-410.72-1.0-1.x86_64.rpm
yum -y install ./nvidia-diag-driver-local-repo-rhel7-410.72-1.0-1.x86_64.rpm

# Install CUDA repository, found here: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_Arch=x86_64&target_distro=CentOS&target_version=7&target_type=rpmlocal
curl -J -O https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.0.130-1.x86_64.rpm
yum -y install ./cuda-repo-rhel7-10.0.130-1.x86_64.rpm

# Install CUDA & drivers & dependencies
yum clean all
yum -y install cuda

nvidia-smi -pm 1

reboot

gcloud compute ssh test-gpu-drivers
Sudo su
nvidia-smi -pm 1

Logs complets ici .

(J'ai également essayé le script d'installation exacte du pilote GCE, sans moderniser les versions, mais sans chance aussi)

Environnement

  • Libération de distribution

    [root@test-gpu-drivers myuser]# cat /etc/*-release | head -n 1
    CentOS Linux release 7.6.1810 (Core) 
    
  • Libération du noyau

    [root@test-gpu-drivers myuser]# uname -r
    3.10.0-957.1.3.el7.x86_64
    

Je peux le faire fonctionner sur Ubuntu!

Pour analyser le problème, j'ai décidé d'essayer de faire la même chose sur Ubuntu 18.04 (LTS). Cette fois, je n'ai eu aucun problème.

Création d'instance:

gcloud compute instances create gpu-ubuntu-1804 \
    --machine-type n1-standard-2 \
    --boot-disk-size 250GB \
    --accelerator type=nvidia-tesla-k80,count=1 \
    --image-family ubuntu-1804-lts --image-project ubuntu-os-cloud \
    --maintenance-policy TERMINATE

Processus d'installation:

gcloud compute ssh gpu-ubuntu-1804
Sudo su
apt update
apt -y upgrade
reboot

gcloud compute ssh gpu-ubuntu-1804
Sudo su
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_AMD64.deb
apt -y install ./cuda-repo-ubuntu1804_10.0.130-1_AMD64.deb
rm cuda-repo-ubuntu1804_10.0.130-1_AMD64.deb
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
apt-get update
apt-get -y install cuda
nvidia-smi -pm 1

Journaux d'installation complètes disponibles ici .

Test:

# nvidia-smi -pm 1
Enabled persistence mode for GPU 00000000:00:04.0.
All done.
# ll /dev/nvidia*
crw-rw-rw- 1 root root 241,   0 Dec  4 14:01 /dev/nvidia-uvm
crw-rw-rw- 1 root root 195,   0 Dec  4 14:01 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Dec  4 14:01 /dev/nvidiactl

Une chose que j'ai remarquée est que sur l'installation d'Ubuntu d'emballage nvidia-dkms déclenche des trucs, que je n'ai pas vu sur Centos:

Setting up nvidia-dkms-410 (410.79-0ubuntu1) ...
update-initramfs: deferring update (trigger activated)

A modprobe blacklist file has been created at /etc/modprobe.d to prevent Nouveau
from loading. This can be reverted by deleting the following file:
/etc/modprobe.d/nvidia-graphics-drivers.conf

A new initrd image has also been created. To revert, please regenerate your
initrd by running the following command after deleting the modprobe.d file:
`/usr/sbin/initramfs -u`

*****************************************************************************
*** Reboot your computer and verify that the NVIDIA graphics driver can   ***
*** be loaded.                                                            ***
*****************************************************************************

Loading new nvidia-410.79 DKMS files...
Building for 4.15.0-1025-gcp
Building for architecture x86_64
Building initial module for 4.15.0-1025-gcp
Generating a 2048 bit RSA private key
.............................................................................................................+++
..........+++
writing new private key to '/var/lib/shim-signed/mok/MOK.priv'
-----
EFI variables are not supported on this system
/sys/firmware/efi/efivars not found, aborting.
Done.

nvidia:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-1025-gcp/updates/dkms/

nvidia-modeset.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-1025-gcp/updates/dkms/

nvidia-drm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-1025-gcp/updates/dkms/

nvidia-uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-1025-gcp/updates/dkms/

depmod...

DKMS: install completed.

Environnement

  • Libération de distribution

    root@gpu-ubuntu-1804:/home/elouan_keryell-even# cat /etc/*-release
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=18.04
    DISTRIB_CODENAME=bionic
    DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
    NAME="Ubuntu"
    VERSION="18.04.1 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.1 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    
  • Libération du noyau

    root@gpu-ubuntu-1804:/home/elouan_keryell-even# uname -r
    4.15.0-1025-gcp
    

Question

Est-ce que quelqu'un comprend ce qui ne va pas avec mon installation de pilotes Nvidia sur Centos 7?

3

Il y a 2 problèmes:

  • Centos utilise par défaut le pilote Open Source Nouveau, qui n'est pas compatible avec NVIDIA et doit être désactivé.
  • Les pilotes de Nvidia Repo semble ne pas fonctionner, car NVIDIA DKMS Module est nécessaire.

Pour faire ça :

  1. installer des paquets requis

    yum install kernel-devel epel-release dkms
    
  2. Éditer /etc/default/grub et ajouter nouveau.modeset=0 dans GRUB_CMDLINE_LINUX

  3. Regen GRUB config pour appliquer des modifications:

    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    
  4. Redémarrez pour les modifications à prendre effet.

  5. Ensuite, installez ce pilote directement: http://fr.download.nvidia.com/tesla/410.79/nvidia-linux-x86_64-410.79.Run

Après cela, NVIDIA-SMI devrait fonctionner

2
btapia

Ce problème a été signalé à Google et il est en cours de fonctionnement ici

0
Adebisi