TensorFlow1.7.0-cuda9.1-cudnn7.1.2-linux86-64.cp36的安装包地址:https://space.oldpan.me/d/8018f162a3b2477e9b8b/
前言
实验室服务器上装载的cuda版本是最新的9.1,和从官网下载下来的TensorFlow不匹配,因为官方的是通过cuda9.0进行编译的。因此,这篇文章讨论关于Tensorflow源码安装的一些心得和过程,讨论安装Tensorflow版本兼容问题和cuda版本选择问题,最终实现在ubuntu16.04下通过源码安装TensorFlow-1.7.0,可以在cuda-9.1-cudnn7.1.2环境下正常工作。
过程详解
安装方法
安装TensorFlow的方法有很多,大多数人选择whl包安装,也就是从官网下载编译好的whl包并进行下载,通过pip命令下载并安装。这种方法是最为适用和最为普通的,一般来说只要按照正常操作安装和使用TensorFlow-CPU版是没问题的。但是——好吧,为什么要安装cuda9.1呢?为什么不用cuda9.0呢?很无奈啊,有新的当然用新的,但这也导致了不兼容的问题,到目前为止,官网编译好的安装包并不支持cuda9.1,因此我们需要自己进行编译。
也就是我们选择第二条路,源码安装的方法。
源码安装
源码安装比起直接用whl包来安装稍微复杂一些,安装教程很多地方都写了出来,我这里也不赘述了,
下面是TensorFlow源码安装的教程地址:
- http://www.python36.com/install-tensorflow141-gpu/
- https://www.tensorflow.org/install/install_sources#common_installation_problems
其中第二篇为官方的教程,官方教程中有相关的步骤以及常见编译遇到的问题,强烈推荐。
其中我遇到的问题是bazel编译工具版本问题,现在从ppa上apt-get进行下载都是0.12.0 stable版本,用这个版本对TensorFlow进行编译时会出现编译错误的,换成0.11.1版本就好了。在第一篇教程中有详细的安装步骤。
遇到的问题
我安装上面的教程上面的步骤编译好TensorFlow包之后,编译成功了,使用我的cuda9.1和cudnn7.1.2,但是在安装我编译好的whl之后还是不能用。
出现了以下问题:ImportError: libcublas.so.9.1: cannot open shared object file: No such file or directory
要注意,这个问题与你的编译文件无关,你系统是cuda9.1你安装的TensorFlow是cuda9.1,但上面的问题还是出现,那么说明你在安装cuda9.1的时候有一些配置文件没有正确进行配置,也就是一些文件找不到?找不到并不是意味着不在,而是没有通过正确的路径来找。
依次执行以下命令(软连接):
sudo ln -s /usr/local/cuda-9.1/lib64/libcublas.so.9.1 /usr/lib/libcublas.so.9.1 sudo ln -s /usr/local/cuda-9.1/lib64/libcusolver.so.9.1 /usr/lib/libcusolver.so.9.1 sudo ln -s /usr/local/cuda-9.1/lib64/libcudart.so.9.1 /usr/lib/libcudart.so.9.1 sudo ln -s /usr/local/cuda-9.1/lib64/libcudnn.so.7 /usr/lib/libcudnn.so.7 sudo ln -s /usr/local/cuda-9.1/lib64/libcufft.so.9.1 /usr/lib/libcufft.so.9.1 sudo ln -s /usr/local/cuda-9.1/lib64/libcurand.so.9.1 /usr/lib/libcurand.so.9.1
将相应的文件和你的cuda路径进行软连接,这是默认安装路径,如果你的路径不一样,需要修改上面的代码!
软连接后就可以正常import TensorFlow了。cuda,cudnn正常工作。