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を選択していきましょう!