サイトアイコン sciencompass

TensorFlowでGPUが使えることの確認

Pexels / Pixabay

TensorFlowをインストールしたのはいいけれど、ちゃんとGPUが使われているのかどうか、気になって確認してみました。

私の環境

OS:Windows 10
CPU: core i7
GPU: GeForce GTX 1660 SUPER

Tensorflowのインストール

まずはTensorflowのインストールです。
pip install tensorflow==2.2
でバージョン2.2.0をインストールしました。
なぜか、最新バージョンはエラーが出てうまくインストールできなかったので、一つバージョンを落としてインストールしました。

CUDAドライバのインストール

NVIDIAのホームページからCUDAドライバをインストールします。
TensorFlow 2.1以上では、CUDAドライバのバージョン10.1が指定されているので、それをダウンロードしてインストールする。
Windows10用のファイルをダウンロードしました。お使いのOSに合わせて選択してください。

cuDNNのインストール

続いてcuDNNをインストールします。TensorFlow2.1以上ではバージョン7.6が指定されているので、それをダウンロードします。
ダウンロードしたzipファイルを解凍し、CUDA ツールキットをインストールしたディレクトリ、 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1にzipファイルの中身をコピーします。

環境変数の設定

システム環境変数に下記の二つを追加します。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin

パスの確認のため、下記のコマンドを実行します。

where cudnn64_7.dll

GPUが使われているかどうかの確認

最後にTensorFlowでGPUが使われているかどうか確認します。
コマンドプロンプトを起動、pythonと入力してpythonを起動します。

次の2行を実行します。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

リストの中に、”device_type:GPU”があればGPUが認識されています。

XLA_CPU, XLA_GPUは?

GPUが使われているかどうか確認した際に、XLA_CPU, XLA_GPUという名前が出てきます。これは何なのでしょうか。

XLAはAccelerated Linear Algebraの略で、線形代数の演算に特化したコンパイラです。TensorFlowのホームページによれば、XLAを使うことでTensorFlowの演算を最適化し、メモリ使用量、性能、サーバやモバイル環境での移植性の面での改善が期待できるとのことです。

ちなみに、XLA_GPUと出ていていても、device_type:GPUがなければ、GPUは認識されていませんので、ご注意を。

CUDA, cuDNNのバージョン確認

すでにCUDA, cuDNNをインストール済みで、どのバージョンが入っているのか確認したいときは次のように確認できます。

CUDA

コマンドプロンプトを起動し、”nvcc -V”と入力するだけで、バージョンを確認することができます。

cuDNN

CUDA ツールキットをインストールしたディレクトリ、 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDAに保存されているcudnn.hもしくはcudnn_version.hを開いて、確認します。
例えば、バージョン7.6.5の場合、
CUDNN_MAJOR = 7, CUDNN_MINOR = 6, CUDNN_PATCHLEVEL = 5と定義されています。

 

参考記事

CUDA、cuDNNのインストール

https://www.kkaneko.jp/tools/win/cudnn.html

CUDA、cuDNNのバージョン確認

http://tecsingularity.com/cuda/version_conf/

GPUが認識されているかどうかの確認

XLAについて

https://www.tensorflow.org/xla/architecture

XLA_GPUだけ表示されていてもだめっぽい

https://github.com/tensorflow/tensorflow/issues/30748

 

モバイルバージョンを終了