web-dev-qa-db-ja.com

NVIDIA-SMIがNVIDIAドライバーと通信できない

問題の説明

CUDA作業を実行するために、centos-7 GPU(Nvidia Tesla K80)インスタンスをGoogle Cloudにセットアップしようとしています。

残念ながら、ドライバを適切にインストール/構成できないようです。

実際、nvidia-smi(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.

最近のメソッドnvidia-persistencedでの同じ操作:

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

+ Syslogに次のエラーが表示されます(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.

実際、nvidiaデバイスは存在しません。

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

ただし、GPUがインスタンスに正しく接続されていることの証明は次のとおりです。

# 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)

私がフォローしたインストールプロセス

Centos-7インスタンスの作成 Google Cloudドキュメントのこのセクション に従ってください:

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

次に、ドライバとCUDAのために私が従ったインストールプロセスは Google Cloudのドキュメント に触発されていますが、代わりに最新バージョンが使用されています。

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

完全なログ ここ

(私はバージョンをアップグレードせずに、正確なGCEドライバーインストールスクリプトも試しましたが、運もありませんでした)

環境

  • 配布リリース

    [root@test-gpu-drivers myuser]# cat /etc/*-release | head -n 1
    CentOS Linux release 7.6.1810 (Core) 
    
  • カーネルリリース

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

Ubuntuで動作させることができます!

問題を分析するために、私はUbuntu 18.04(LTS)で同じことを試すことにしました。今回は問題ありませんでした。

インスタンスの作成:

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

インストールプロセス:

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

利用可能な完全なインストールログ こちら

テスト:

# 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

私が気づいたことの1つは、Ubuntuでパッケージnvidia-dkmsをインストールすると、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.

環境

  • 配布リリース

    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
    
  • カーネルリリース

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

質問

Centos 7へのNVIDIAドライバーのインストールで何が問題になっているのか誰かが理解していますか?

3

2つの問題があります。

  • CentOSはデフォルトでnouveauオープンソースドライバーを使用しますが、これはnvidiaと互換性がなく、非アクティブ化する必要があります
  • Nvidia dkmsモジュールが必要なため、nvidia repoのドライバーが機能していないようです。

それを行うには:

  1. いくつかの必要なパッケージをインストールする

    yum install kernel-devel epel-release dkms
    
  2. 編集/etc/default/grubと追加nouveau.modeset=0GRUB_CMDLINE_LINUX

  3. 変更を適用するためにGRUB構成を再生成します。

    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    
  4. 再起動して変更を有効にします。

  5. 次に、このドライバーを直接インストールします。 http://fr.download.nvidia.com/tesla/410.79/NVIDIA-Linux-x86_64-410.79.run

その後、nvidia-smiが動作するはずです

2
btapia

この問題はGoogleに報告されており、現在作業中です ここ

0
Adebisi