CentOS StreamにCUDAとcuDNNを導入

こんにちは!エス・ワイ・シーの岡本です。

2021年末でサポートが終了してしまうCentOS 8ですが、今後はCentOS Streamを利用することになるかと思います。

今までのようなRHELのリビルドではなくアップストリームとなるので、これまでと同様に使用できるのか?という懸念があります。

そこで、CUDAやcuDNNの動作検証を行ってみました。

導入環境 

仮想基盤:ESX 7.0

GPU : Tesla T4(パススルー)

仮想OS:CentOS Stream(Linux stream 4.18.0-277.el8.x86_64)

GPUドライババージョン:460.32.03

CUDAバージョン:11.2.2-1

cuDNNバージョン:8.1.1

ドライバ等のバージョンアップにより、細かい手順が変更となるケースがありますので、導入手順は割愛します。

GPUドライバ
# nvidia-smi
Thu Mar 25 13:38:15 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            Off  | 00000000:13:00.0 Off |                    0 |
| N/A   55C    P8    10W /  70W |    140MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1924      G   /usr/libexec/Xorg                  63MiB |
|    0   N/A  N/A      2009      G   /usr/bin/gnome-shell               75MiB |
+-----------------------------------------------------------------------------+
CUDA
# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Feb_14_21:12:58_PST_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0
cuDNN
# ./mnistCUDNN
Executing: mnistCUDNN
cudnnGetVersion() : 8101 , CUDNN_VERSION from cudnn.h : 8101 (8.1.1)
Host compiler version : GCC 8.4.1

There are 1 CUDA capable devices on your machine :
device 0 : sms 40  Capabilities 7.5, SmClock 1590.0 Mhz, MemSize (Mb) 15109, MemClock 5001.0 Mhz, Ecc=1, boardGroupID=0
Using device 0

(省略)

Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 0.120640 time requiring 2450080 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.139296 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 0: 0.149440 time requiring 0 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 7: 0.161920 time requiring 1433120 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: 0.188224 time requiring 4656640 memory
^^^^ CUDNN_STATUS_SUCCESS for Algo 2: 0.231456 time requiring 0 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 6: -1.000000 time requiring 0 memory
^^^^ CUDNN_STATUS_NOT_SUPPORTED for Algo 3: -1.000000 time requiring 0 memory
Resulting weights from Softmax:
0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000714 0.0000000 0.0000000 0.0000000 0.0000000
Loading image data/five_28x28.pgm
Performing forward propagation ...
Resulting weights from Softmax:
0.0000000 0.0000008 0.0000000 0.0000002 0.0000000 1.0000000 0.0000154 0.0000000 0.0000012 0.0000006

Result of classification: 1 3 5

Test passed!

まあ予想通りではありますが、問題なく動作しました。

今後Stream向けのインストール手順変更が見つかれば、追記していきたいと思います。

ただ、CUDAやcuDNNはUbuntuに導入させて頂くケースも多くなっています。CentOSでなければ動作しないアプリが無い限り、CentOS Streamを無理に使用する必要はないかと思います。

逆に検証等では今まで通りゴリゴリ使えますので、臨機応変にOSを選択していきましょう!