Windows11 WSL2 Ubuntu Python

cuDNN インストール確認

ここまで WSL2 Ubuntu Python GPU 環境構築を続け cuDNN のインストールまで完了しました。
引き続き cuDNN がうまくインストールされたか確認します。
libcudnn8-samples をインストールしましたので CuDNN のサンプルプログラムが /usr/src にダウンロードされていますので、動作確認に使用します。
yamada@yama:~$ cp -r /usr/src/cudnn_samples_v8 .
-r オプションがついていますので cudnn_samples_v8 ディレクトリを
移動先が「.」になっていますのでカレントディレクトリにコピーします。
yamada@yama:~$ cd cudnn_samples_v8/RNN
カレントディレクトリを cudnn_samples_v8/RNN に変更しました。
yamada@yama:~/cudnn_samples_v8/RNN$ make
make コマンドを実行すると
cudnn_samples_v8/RNN/Makefile
を読み込み指定したターゲットを実行します。
各ターゲットがエラー無く以下のように実行できれば ok です。

  
CUDA_VERSION is 12020
Linking agains cublasLt = true
CUDA VERSION: 12020
TARGET ARCH: x86_64
TARGET OS: linux
SMS: 50 53 60 61 62 70 72 75 80 86 87 90
g++ -I/usr/local/cuda/include
-I/usr/local/cuda/include -I.
-o fp16_emu.o -c fp16_emu.cpp
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include
-I/usr/local/cuda/include -I. -ccbin
g++ -m64 -gencode arch=compute_50,code=sm_50
 -gencode arch=compute_53,code=sm_53
 -gencode arch=compute_60,code=sm_60
 -gencode arch=compute_61,code=sm_61
 -gencode arch=compute_62,code=sm_62
 -gencode arch=compute_70,code=sm_70
 -gencode arch=compute_72,code=sm_72
 -gencode arch=compute_75,code=sm_75
 -gencode arch=compute_80,code=sm_80
 -gencode arch=compute_86,code=sm_86
 -gencode arch=compute_87,code=sm_87
 -gencode arch=compute_90,code=sm_90
 -gencode arch=compute_90,code=compute_90
-o RNN_example.o -c RNN_example.cu
/usr/local/cuda/bin/nvcc -ccbin
g++ -m64 -gencode arch=compute_50,code=sm_50
 -gencode arch=compute_53,code=sm_53
 -gencode arch=compute_60,code=sm_60
 -gencode arch=compute_61,code=sm_61
 -gencode arch=compute_62,code=sm_62
 -gencode arch=compute_70,code=sm_70
 -gencode arch=compute_72,code=sm_72
 -gencode arch=compute_75,code=sm_75
 -gencode arch=compute_80,code=sm_80
 -gencode arch=compute_86,code=sm_86
 -gencode arch=compute_87,code=sm_87
 -gencode arch=compute_90,code=sm_90
 -gencode arch=compute_90,code=compute_90
-o RNN fp16_emu.o RNN_example.o 
-I/usr/local/cuda/include
-I/usr/local/cuda/include -I.
-L/usr/local/cuda/lib64
-L/usr/local/cuda/lib64 
-L/usr/local/cuda/lib64 
-lcublasLt 
-L. -lcublas -lcudnn -lcudart -lstdc++ -lm

GPU の使用状況確認

nvidia-smi コマンドを使って GPU の使用状況を確認します。
確認できる内容は次の通りです。
GPU の種類 (GPU Name)
Nvidia ドライバのバージョン (Driver Version)
CUDA のバージョン (CUDA Version)
GPU のファンの回転率 (Fan)
GPU の温度 (Temp)
電源使用量 (Pwr:Usage/Cap)
GPU 利用率 (GPU-Util)

 
yamada@yama:~$ nvidia-smi
Sun Jul 16 16:26:58 2023 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.54.06 Driver Version: 536.40 CUDA Version: 12.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 NVIDIA GeForce GTX 1650 On | 00000000:01:00.0 On | N/A | | 32% 53C P0 N/A / 75W | 642MiB / 4096MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 442 G /Xwayland N/A | +---------------------------------------------------------------------------------------+

これで cuDNN のインストールの確認ができました。
引き続きさらに GPU 環境を構築していきます。


Miniconda と TensorFlow の関係

ここから Miniconda の仮想環境のなかに TensorFlow を構築して行きます。
そもそもなぜ Miniconda が必要なのでしょうか。
私の PC が
12th Gen Intel(R) Core(TM) i7-12700
だからです。
一見して最新の CPU のように見えるのですが…
AVX は、米インテル(Intel)社の CPU(マイクロプロセッサ/MPU)に実装された拡張命令セットの一つで 複数のデータに一度に同じ演算を行う SIMD 方式の処理を実行するためのもの。
2011年に登場した Sandy Bridgeマイクロアーキテクチャ製品以降に搭載されています。
AVX は第2世代の Core-i シリーズである Sandy Bride(2011)からサポートしており 浮動小数点演算に関してはここから AVX 命令が使えます。
AMD では Zen4 で AVX-512 に正式対応。
しかし、インテルはその後に BIOS アップデートで AVX-512 自体を無効にし さらには2022年以降の出荷ロット(私の PC はこれに該当)は物理的に無効化を施すなど 「一般向け CPU では使わせない」意向を示しています。
また第13世代ではデフォルトで AVX-512 に対応しないことが発表されています。
普通に tensorflow パッケージをインストールため
$ sudo pip3 install tensorflow-cpu
あるいは
$ pip3 install tensorflow-cpu
とすると この tensorflow パッケージは AVX 命令を使用するため、私の PC では実行できず
Illegal instruction (コアダンプ)
となってしまいます。
これを回避するために conda 仮想環境を構築し AVX 命令を使用しない tensorflow パッケージをインストールします。
Miniconda のインストールについては WSL2 Ubuntu Python 概要
を見てください。

引き続き、Miniconda の仮想環境のなかに TensorFlow を構築して行きます。
TensorFlow インストール版数を確認します。


  • TensorFlow インストール版数確認 に進む
  • cuDNN 概要 に戻る
  • CUDA Toolkit のインストール に戻る
  • WSL2 Ubuntu Python GPU 環境 に戻る
  • WSL2 Ubuntu Python 概要 に戻る
  • 70VPS に戻る