`

Ubuntu16.04 源码安装GPU版tensorflow

阅读更多
2017年2月16日更新:
tensoflow 1.0 发布了,索性更新一下cuda和cudnn
结果就找不到设备了,显示无法加载 libcuda.so.1!!!
后来,运行cuda的deviceQuery例程,显示找不到cuda设备!!!原因是显卡驱动不兼容。。。。(我是通过系统设置更新的,降回到之前的驱动再重启就没问题了)
至于cuda的更新,官网下个.run安装包,运行“sudo sh cuda_8.0.61_375.26_linux.run”即可(More 页面可以通过+2200直接跳到最后)。

tensorflow1.0的编译很顺利,按照官网的命令顺序即可,只是,需要注意的是,bazel必须更新到0.4.4, 否则刚开始config就会有第三方依赖找不到之类的错误


这里只说一下遇到的坑
1、装完cuda后,运行测试示例,提示显卡驱动版本不对,找不到cuda设备,,重启就行了

2、装完了别忘了设置环境变量,
编辑或创建    ~/.bash_profile 文件,添加如下两行:(注意自行核对cuda安装目录)
引用
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda

不知道添加到 ~/.bash_profile 文件是不是只在命令行下有效?
在eclipse中运行时提示能够加载cuda,但是无法找到cudnn,最后将这两行也添加到了/etc/profile文件末尾,并重启后,,可以加载cudnn了

3、bazel的安装 可以采用apt-get方式,很简单
具体参见http://bazel.io/docs/install.htmlUsing Bazel custom API repository (recommended) 一节中的2、3步

bazel是google打类似make的构建工具,,说是速度快,,还真没看出来。。。。


4、由于众所周知的网络原因,,涉及github源码的安装可能需要多次重试
tensorflow也只能通过git clone下载,直接网页上下载.zip文件会缺少依赖的项目

5、编译中各种warning,忽略即可;编译时间很长。。。。

6、安装完成的tensorflow不在 python/dist-packages下,,这个和CPU版不同!!
可以通过which tensorboard查看tensorboard安装目录,,但是tensorflow安装到哪儿了还真不知道。。。。


7、cuda8和cudnn4 良好兼容 (gtx960m可以,但在gtx 1080上计算结果有问题)
注意: cudnn只在计算卷积时被调用!!! 计算全连接网络时根本不会调用cuDNN,也就不用管这部分是否正确安装了!!(但是必须安装)


8、提示找不到cuda头文件时
症状:undeclared inclusion(s) in rule '//tensorflow/core/kernels:depth_space_ops_gpu'
在tensorflow/third_party/gpus/crosstool中编辑CROSSTOOL.tpl,增加一行明确指定cuda位置的配置(估计时自动设置cuda版本时没设置对)
  cxx_builtin_include_directory: "/usr/local/cuda%{cuda_version}/include"
  cxx_builtin_include_directory: "/usr/local/cuda-8.0/include"


9、_objs/batchtospace_op_gpu/tensorflow/core/kernels/batchtospace_op_gpu.cu.pic.d (No such file or directory)
解决方案:
修改tensorflow/third_party/gpus/crosstool/CROSSTOOL
在每个cxx_flag: "-std=c++11"后增加一行:
cxx_flag: "-D_MWAITXINTRIN_H_INCLUDED"

参见:https://github.com/tensorflow/tensorflow/issues/2143


10、nvcc不支持gcc 5.4
症状:error -- unsupported GNU version! gcc versions later than 5.3 are not supported! 

解决方案:直接用双斜杠注释掉/usr/local/cuda/include/host_config.h中的对应行

参见(此教程还有theano,caffe配置):http://blog.csdn.net/hjimce/article/details/51999566


11、运行测试用例时结果出现NaN
bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu

据说可以不用管,可能只运行一个session时就没问题了

https://github.com/tensorflow/tensorflow/issues/2037

引用
Please try "--num_concurrent_sessi and "--num_concurrent_steps=1" for your experiments. If you don't see any exceptions with those, then everything is good.



12、No GPU kernel for XXX
这个不是bug,在自己的代码中去掉with tf.device('/gpu:0'):  这种显式指定gpu设备的语句即可(或者只对某些语句,比如卷积,显式指定gpu运行)。  原因时某些操作只能在CPU上执行。 
参见:http://stackoverflow.com/questions/37439299/no-gpu-kernel-for-an-int32-variable-op

13、重新安装tensorflow
先卸载原来的:
sudo pip uninstall tensorflow


具体可以参考以下几篇文章:
深度学习主机环境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0:http://www.tuicool.com/articles/JvUvQjZ

Ubuntu 16.04下安装Tensorflow(GPU)http://blog.sina.com.cn/s/blog_672f698e0102wavp.html


Nvidia GTX 1080 on Ubuntu 16.04 for Deep Learning http://yangcha.github.io/GTX-1080/

注意其中在安装cuda8时的  --override 选项
http://cn.soulmachine.me/2016-08-17-deep-learning-cuda-development-environment/

官方安装文档:https://www.tensorflow.org/versions/master/get_started/os_setup.html


此教程还有theano,caffe配置:http://blog.csdn.net/hjimce/article/details/51999566

别人编译好的GPU版的tensorflow:https://github.com/tensorflow/tensorflow/issues/4030

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics