在GPU上使用Tensorflow出現Cannot assign a device for operation '': Operation was explicitly assigned to /job:ps/task:0/device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ]

最近使用GPU跑tensorflow出現了這個問題:Cannot assign a device for operation ' ': Operation was explicitly assigned to /job:ps/task:0/device:GPU:0 but available devices are [ /job:localhost/replica:0/task:0/cpu:0 ].大致意思就是我們將程序安排在GPU上跑,但是目前可用的設備僅有CPU!不應該啊,安裝的是GPU版本的tensorflow啊,而且也成功的跑了試驗程序??!到底是什么個情況,這時候最好的辦法就是去查看顯卡顯存的使用情況!

在終端輸入

nvidia-smi
屏幕截圖.png

清楚的發現并沒有python3.5的程序在使用!??!
在網上查原因應該時安裝CUDA時的環境變量沒配置好(還好之前沒去瞎折騰重裝CUDA),于是又重新配了一下環境變量:

sudo gedit /etc/profile在最后一行添加:


export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/:/usr/local/cuda/lib64:$LD_LIBRARY_PATH

export PATH=/usr/local/cuda-8.0/bin:/usr/local/cuda/bin:$PATH

保存后退出,并更新配置

sudo ldconfig

這時候出現libEGL.so.1 is not a symbolic link的問題......

說明我們的軟鏈接出問題了,需要重新建立連接?。。〗鉀Q辦法:


sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org

sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org

因為我本機的版本是libEGL.so.375.66


sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.66 /usr/lib/nvidia-375/libEGL.so.1

sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.66 /usr/lib32/nvidia-375/libEGL.so.1

然后重啟一下,大功告成!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容