最近使用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
清楚的发现并没有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
的问题......
说明我们的软链接出问题了,需要重新建立连接!!!解决办法:
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
然后重启一下,大功告成!!!