关于在ubuntu上源码安装TensorFLow-1.7.0-cuda9.1-cudnn7.1.2过程中问题解决方案

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源码安装的教程地址:

其中第二篇为官方的教程,官方教程中有相关的步骤以及常见编译遇到的问题,强烈推荐。

其中我遇到的问题是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的时候有一些配置文件没有正确进行配置,也就是一些文件找不到?找不到并不是意味着不在,而是没有通过正确的路径来找。

依次执行以下命令(软连接):

  1. sudo ln -s /usr/local/cuda-9.1/lib64/libcublas.so.9.1 /usr/lib/libcublas.so.9.1
  2. sudo ln -s /usr/local/cuda-9.1/lib64/libcusolver.so.9.1 /usr/lib/libcusolver.so.9.1
  3. sudo ln -s /usr/local/cuda-9.1/lib64/libcudart.so.9.1 /usr/lib/libcudart.so.9.1
  4. sudo ln -s /usr/local/cuda-9.1/lib64/libcudnn.so.7 /usr/lib/libcudnn.so.7
  5. sudo ln -s /usr/local/cuda-9.1/lib64/libcufft.so.9.1 /usr/lib/libcufft.so.9.1
  6. sudo ln -s /usr/local/cuda-9.1/lib64/libcurand.so.9.1 /usr/lib/libcurand.so.9.1

将相应的文件和你的cuda路径进行软连接,这是默认安装路径,如果你的路径不一样,需要修改上面的代码!

软连接后就可以正常import TensorFlow了。cuda,cudnn正常工作。

本文来自:Oldpan博客,分享人工智能相关知识。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

浅谈Orabbix监控指标(r6笔记第27天)

对于Orabbix监控Oracle来说,它是提供了一个相对轻量级的客户端来综合监控多个数据库实例。从这一点来看,它的角色有点类似于工作中使用的SQLDevelo...

4439
来自专栏云计算认知升级

【腾讯云的1001种玩法】 十分钟轻松搞定云架构 · 负载均衡的几种均衡模式

视频内容 [fyckc.jpeg] 今天,我们来学习一下负载均衡的几种均衡模式。通过了解负载均衡的均衡模式,我们可以更好的利用负载均衡来为我们的应用服务。 ...

6086
来自专栏hotqin888的专栏

ONLYOFFICE 开发相关 总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1922
来自专栏Petrichor的专栏

Tensorflow源码 目录树

很多博客中提到的 models/(位于根目录下,该目录下存放这多个使用python实现的模型实例),我并没有看到。估计是最新版的Tensorflow源码取消了这...

2761
来自专栏用户2442861的专栏

python文件常用操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

1523
来自专栏杨建荣的学习笔记

数据迁移工具简单分析 (r2笔记59天)

exp/imp 对于数据结构的复制和同步,还是比较理想的工具。 在数据量比较小的情况下,这个工具的性能要远远好于datapump,而且重点推荐,他对于各种常用...

2875
来自专栏深度学习那些事儿

关于在ubuntu上源码安装TensorFLow-1.7.0-cuda9.1-cudnn7.1.2过程中问题解决方案

实验室服务器上装载的cuda版本是最新的9.1,和从官网下载下来的TensorFlow不匹配,因为官方的是通过cuda9.0进行编译的。因此,这篇文章讨论关于T...

2254
来自专栏C/C++基础

Linux命令(28)——tee命令

tee命令从标准输入读取数据后,将数据重定向到给定的文件和标准输出。给定的文件可以有多个。

1221
来自专栏c++ tensorflow

Tensorflow c++实践(使用cmake vs2015 编译tensorflow源码)

写这篇文章的主要目的是为了总结这一个多月对tensorflow应用到c++语言上面走过的路。因为身边的人都少有使用c++实现tensorflow的使用,都是自己...

5.8K10
来自专栏一个爱瞎折腾的程序猿

express使用记录

2071

扫码关注云+社区

领取腾讯云代金券