Pycharm中啟動Tensorflow專案找不到libcudart.so.10.1

拍呀拍皮球發表於2022-05-09

一、開發環境

作業系統:Ubuntu 18.04 LTS

顯示卡:NVIDIA RTX 2080 Super

顯示卡驅動:專有驅動450.142.00

CUDA:10.2

PyCharm版本:2020.2.5

二、問題描述

最近在GitHub上閒逛,Git了一個YOLOv3目標檢測的專案。

Git下來並且配置好環境開始執行,發現TensorFlow找不到動態庫libcudart.so.10.1。

開始能夠想到的原因是我在本地安裝的CUDA版本是10.2,專案的Tensorflow版本是2.1.0,兩者可能不適配。

我首先嚐試在COCO資料集上執行模型訓練演算法,發現是可以執行的,只是訓練的速度實在有點慢。

看了下輸出資訊,發現TensorFlow沒有找到物理GPU。

我繼續在Pycharm的Python Console上面測試Tensorflow能否找到GPU:

import tensorflow as tf
print(tf.test.is_gpu_available())

結果顯示False,的確這裡的TensorFlow2.1.0沒有找到GPU。

於是我將原來的CUDA解除安裝,重新安裝了10.1版本,並且安裝了對應的cuDNN。

通過Anaconda建立了新的虛擬環境,安裝了Tensorflow2.1.0。

在新的虛擬環境下通過系統的Terminal開啟Python,測試了剛才的Python程式碼。

發現Tesorflow是可以找到物理GPU,但是接下來奇怪的事情發生了。

我在PyCharm裡配置了剛才的虛擬環境,然後開啟內建的Terminal,再次測試剛才的程式碼,發現Tensorflow又找不到物理GPU了!

到這裡我基本可以確定,問題一定在PyCharm上,而不是TensorFlow、CUDA、cuDNN的版本對應關係。

三、解決辦法

方法一:建立動態連線庫

在Pyharm內建的Terminal中輸入以下命令:

sudo ldconfig /usr/local/cuda/lib64

該命令等同於開啟檔案/etc/ld.so.conf.d/cuda.conf,在其中加入路徑/usr/local/cuda/lib64,然後輸入以下命令使得動態庫生效:

sudo ldconfig

不論採用哪一種,每次啟動Pyharm的時候都需要在Terminal中操作一遍。

方法二:在PyCharm中修改執行配置

File -> Settings -> Build, Execution, Deployment -> Console -> Python Console -> Environment -> Environment variables中,設定LD_LIBRARY_PATH=/usr/local/cuda-xx.x/lib64

四、原因分析

應該是我PyCharm專案所在目錄和CUDA的安裝目錄不在同一個硬碟(我的開發環境安裝了雙硬碟),導致PyCharm找不到CUDA的環境變數。

參考部落格:pycharm找不到libcudart.so.10.0

相關文章