最近使用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
然后重啟一下,大功告成!!!