Tensorflow(Keras)でGPUを使って計算する

1. nvidia-cuda-toolkitのインストール

sudo apt install nvidia-cuda-toolkit

libcuda v10.1がダウンロードされた

$ ls /usr/lib/x86_64-linux-gnu/libcuda*
/usr/lib/x86_64-linux-gnu/libcudart.so.10.1

環境変数に以下を追加

export PATH=/usr/lib/x86_64-linux-gnu${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

2. tensorflow-gpuのインストール

libcuda v10.1に対応するtensorflow-gpuをインストールする
バージョンは以下を参照。2.3.0を選択した。
stackoverflow.com
f:id:seinzumtode:20211230165837p:plain

pip uninstall tensorflow
pip install tensorflow==2.3.0

3. libcudnnのインストール

以下を参考に。
devmartin.com
CUDA10.1に対応するcuDNNの7系として v7.6.5 を選択。
RuntimeとDevの2つの.debファイルをダウンロードしてdpkg -i でインストールした。
f:id:seinzumtode:20211230165624p:plain


これでGPUが認識された

$ python -c "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.experimental.list_physical_devices('GPU')))"

2021-12-30 10:55:41.874428: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
2021-12-30 10:55:42.594539: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcuda.so.1
2021-12-30 10:55:42.616801: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-12-30 10:55:42.617204: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: NVIDIA GeForce GTX TITAN X computeCapability: 5.2
coreClock: 1.076GHz coreCount: 24 deviceMemorySize: 11.92GiB deviceMemoryBandwidth: 313.37GiB/s
2021-12-30 10:55:42.617250: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1
2021-12-30 10:55:42.618788: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcublas.so.10
2021-12-30 10:55:42.620496: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcufft.so.10
2021-12-30 10:55:42.621877: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcurand.so.10
2021-12-30 10:55:42.623091: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusolver.so.10
2021-12-30 10:55:42.623734: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcusparse.so.10
2021-12-30 10:55:42.626019: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudnn.so.7
2021-12-30 10:55:42.626163: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-12-30 10:55:42.626753: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:982] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-12-30 10:55:42.627117: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Adding visible gpu devices: 0
Num GPUs Available:  1