<目次>
(1) Tensorflowで「Could not load dynamic library ‘cudart64_110.dll’」が出る原因と対処
(1-1) 事象
(1-2) 原因
(1-3) 対策
(1-4) 参考:CUDAとは?
(1) Tensorflowで「Could not load dynamic library ‘cudart64_110.dll’」が出る原因と対処
(1-1) 事象
「pip install tensorflow」を実行後、下記の簡単なコードを疎通しようとした所、後述のメッセージが発生
import tensorflow as tf
def main():
print("Hello")
if __name__ == "__main__":
main()
(警告/エラーメッセージ)
YYYY-MM-DD 21:04:26.061014: W_tensorflow_stream_executor_platform_default_dso_loader_cc_64] Could_not_load_dynamic library_cudart64_110_dll'; dlerror: cudart64_110.dll not found
YYYY-MM-DD 21:04:26.061295: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
(図111)
(1-2) 原因
・バージョン2.1以降のTensorflow(以降TF)は、pipからダウンロードできる標準のtensorflowパッケージにはCPU版とGPU版の両方が含まれるようになっています。
・①バージョン2.1より前のTFの場合
CUDAライブラリを探して見つからない場合は「エラーと例外」を出力します。
・②バージョン2.1以降のTFの場合
正しいCUDAのバージョンを動的に探し、見つからない場合は「警告」を出力し、CPUのみのモードに戻ります。
⇒今回のケースはこちらに該当します。
※メッセージの中で出る「W」は警告(Warning)、「E」はエラー(Error)、「F」は致命的なエラー(Fatal Error)の意味
(1-3) 対策
●(ケース1)GPUアクセラレータを使わない場合
・ご自身のマシンが「CUDAが有効化されたGPU」を搭載していない場合や、「GPUアクセラレーション」(計算量の多いタスクをCPU⇒GPUにシフトして加速)が不要な場合
どうしても警告を消したい場合はTFのログレベルを変更して「警告を抑制」する事も可能ですが、全ての警告を止めてしまうため、余り推奨ではありません。
・ログレベルの変更は、以下のコードを利用して実施可能です。
(例)
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
(図131)
●(ケース2)GPUアクセラレータを使う場合
・一方で、TFを導入して「GPUアクセラレーション」をしたい場合、まずはご自身のCUDAのインストールを確認してみるのが第一ステップとなります(例:Tensorflow 2.1はCUDA 10.1を使用)
・ここでは詳しくは紹介しませんが、もしCUDAを導入する場合、ざっくり以下のような手順になります。
(手順概要)
・①GPUドライバーのインストール
↓
・②CUDAのインストール
↓
・③cuDNNのインストール
→NVIDIA開発者プログラムへのサインアップが必要
→適当な場所に解凍し、binフォルダをパスに追加
↓
・④tensorflowのインストール
↓
・⑤PCの再起動
(1-4) 参考:CUDAとは?
・Compute Unified Architectureの略。
・GPU向けの、並列コンピューティングプラットフォーム(開発・実行環境)である
・GPUはCPUよりも断然多くのコアを搭載しており、大量のタスクを並列実行できる(CPUは逐次実行)
・NVIDIA社が自社製のGPU向けに開発・提供している。
(参考)
>目次にもどる