在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

《在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 ]》 屏幕截图.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的问题……

说明我们的软链接出问题了,需要重新建立连接!!!解决办法:


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

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

    原文作者:Edwin_dl
    原文地址: https://www.jianshu.com/p/2fad8d3b567b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞