snapパッケージ・アプリで印刷できないときやってみたことTouchFocus™ すごい!

2019年08月29日

NVIDIA GPUのドライババージョンとDocker Imageの中のCUDAバージョンの関係について

Ubuntu 環境での備忘録.

NVIDIA の GPU を積んでいるとドライバのバージョンと CUDA のバージョンが揃わず難儀することが多い.
特に Docker イメージに何を使えば...みたいな話になる.
今回はそんな話.

ハマったのは TensorFlow Docker Image を使おうとした時でした.
ここにある Docker Image を GPU タグ付きで動かしたところどうやら GPU が見えていないということに気がついてしまいました.
というわけで tensorflow/tensorflow を確認すると...

ARG UBUNTU_VERSION=18.04
ARG ARCH=
ARG CUDA=10.0
FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base
# ARCH and CUDA are specified again because the FROM directive resets ARGs
# (but their default value is retained if set previously)
ARG ARCH
ARG CUDA
ARG CUDNN=7.6.2.24-1

という記述に.
つまり CUDA のバージョンは 10.0 でイメージがビルドされていたようです.

この時, マシンのホストの NVRM version は 395 で, 使える CUDA version は 9.2.
なので Dockerfile の CUDA を 9.2 でビルドするか, GPU のドライバを 10.0 が使えるものにバージョンアップするかの二択でした.

Dockerfile のリビルドは面倒だったので自分は後者を選択しました.
まず, 利用可能なドライバのバージョンをチェックします.

$ ubuntu-drivers devices
== /sys/devices/pci0000:16/0000:16:00.0/0000:17:00.0 ==
modalias : pci:v000010DEd00001B06sv00001043sd000085E5bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP102 [GeForce GTX 1080 Ti]
driver   : nvidia-driver-415 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-430 - third-party free recommended
driver   : nvidia-driver-390 - third-party free
driver   : xserver-xorg-video-nouveau - distro free builtin
今回は CUDA versin が 10.0 にしたかったので nvidia-driver-415 を選択し, apt install しました.
そしてちゃんとインストールできているかチェック.
$ nvidia-container-cli info
NVRM version:   415.27
CUDA version:   10.0

Device Index:   0
Device Minor:   0
Model:          GeForce GTX 1080 Ti
Brand:          GeForce
GPU UUID:       GPU-ae5034ee-e52e-37ad-d2b4-19d473f0aeb0
Bus Location:   00000000:17:00.0
Architecture:   6.1

Device Index:   1
Device Minor:   1
Model:          GeForce GTX 1080 Ti
Brand:          GeForce
GPU UUID:       GPU-210053a3-dbbf-dba5-dca5-5d7e15405c41
Bus Location:   00000000:65:00.0
Architecture:   6.1
どうやら目的が果たせる状況になったようです.
というわけで仕上げとして TensorFlow Docker Image を動かして GPU が使えるようになっているか確認です.

以下のキャプチャのように無事 GPU にアクセスできるようになりました.

Screenshot from 2019-08-29 17-49-27




このエントリーをはてなブックマークに追加
highfrontier at 17:57│Comments(0)linux | 対策

コメントする

このブログにコメントするにはログインが必要です。

snapパッケージ・アプリで印刷できないときやってみたことTouchFocus™ すごい!