tensorflow源码编译教程_源码编译安装tensorflow 1.8

参考官方指南

基本要求

官网测试过的源代码配置如下:

image

也就是说,按照这个版本安装的话不应该再产生版本的问题了。

我的配置

ubuntu 16

python 2.7

nccl 2.3

gcc 4.8.5

cuda 7.1.4

cudnn 9.0 (具体是9.0.176但是在./configure的那里不用输这么仔细,具体原因下面会说)

安装bazel 0.10

从源码编译安装

官方的【安装步骤】,我试了没用,查到【这个博客】才发现缺乏如下步骤。

应该要使用,./compile.sh编译,要等待几分钟。

image

编译后,最终生成的二进制文件bazel在当前目录的output/bazel下面

由于

image

把这个文件移动到venv/bin/bazel下面.

note:

安装version10的时候用这个方法没问题,我卸载干净之后用apt-get安装version21使用的是apt-get,官网有教程,行得通。

bazel版本问题

尝试bazel 0.21版本,产生如下报错:

ERROR: Config value cuda is not defined in any .rc file。

最后发现tf1.8的构建版本时使用了bazel 0.10,所以果断换成了bazel 0.10

bazel路径问题

如果没有进入虚拟环境之前可以使用bazel命令但是进入虚拟环境之后不行,提示没有这个文件,则:(把外部环境的bazel加入路径)

export PATH=/root/bin/:$PATH

此时再输入bazel就可以找到啦。

卸载bazel,重新安装

卸载参考:https://github.com/bazelbuild/bazel/issues/962

卸载完毕还是没法删除bazel.0.10,是因为虚拟环境下venv/bin/bazel存在。删除这个文件之后,终于显示删除成功。

安装nccl 2.3

因为无法登陆英伟达官方网站,所有采用giuthub的方式下载,按照build,install执行命令。

NCCL-SLA.txt不存在的问题

编译Tensorflow

按照官网的说明,我需要的是r1.8版本的,切换分支就可以了。

./configure 文件的配置

这一步也有挺多的坑

除了cuda,剩下的都选择n.

gpu的compute capability查询方法:nvidia-smi 查看最上面显示的是什么型号的gpu.

image

可以看到,我的四块gpu都是GeForce GTX 108...,然后在【英伟达给出的官网】上查询得知计算能力是6.1

nccl路径

安装完之后命令行会提示你路径。

gcc版本,我修改为gcc-4.8

cuda,cudnn版本

都不用输那么仔细的版本,因为可以看到./configure的输出如下:

exec env –

CUDA_TOOLKIT_PATH=/usr/local/cuda

CUDNN_INSTALL_PATH=/usr/lib/x86_64-linux-gnu

GCC_HOST_COMPILER_PATH=/usr/bin/gcc-4.8

LD_LIBRARY_PATH=:/usr/local/cuda/extras/CUPTI/lib64

NCCL_INSTALL_PATH=/data/lirong/py2/nccl/nccl/build

PATH=/root/bin/:/data/lirong/py2/venv_python2.7/bin/:/data/lirong/py2/venv_python2.7/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:

/sbin:/bin:/usr/games:/usr/local/games:/usr/local/cuda/bin

PYTHON_BIN_PATH=/data/lirong/py2/venv_python2.7/bin//python

PYTHON_LIB_PATH=/data/lirong/py2/venv_python2.7/lib/python2.7/site-packages

TF_CUDA_CLANG=0

TF_CUDA_COMPUTE_CAPABILITIES=6.1

TF_CUDA_VERSION=9.0

TF_CUDNN_VERSION=7

TF_NCCL_VERSION=2

TF_NEED_CUDA=1

TF_NEED_OPENCL_SYCL=0 \

bazel build这一步踩了很多的坑,成功之后。

image

然后按照官网的步骤没出错。

最后需要重新打开一次命令行窗口,再次import tensorflow。

image

安装成功

踩过的坑

bazel build编译的时候,如果遇到各种问题。command会提示Use --verbose_failures to see the command lines of failed build steps.,我之前一直没有注意,直到加了--verbose_failures这个条命令:

bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package --verbose_failures

试过,才发现完整的报错,然后很快google一下就解决了。

issue 1

报错

AttributeError: 'int' object attribute '__doc__' is read-only

Target //tensorflow/tools/pip_package:build_pip_package failed to build

...

ERROR: /data/lirong/py2/tensorflow/tensorflow/tools/api/generator/BUILD:27:1: Executing genrule //tensorflow/tools/api/generator:python_api_gen

failed (Exit 1)

解决

pip uninstall enum

apt-get install python-enum34

重新编译之后还会会报错,但是报的是issue 2了

issue 2

错误提示

ImportError: No module named enum

Target //tensorflow/tools/pip_package:build_pip_package failed to build

解决方法

pip uninstall enum

pip install enum34

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html2canvas关于图片不能正常截取

问题 首先说说遇到了什么问题。首先有这么一个需求。需要前端根据后端传过来数据,动态的生成图片。图片中的文案、背景图片、用户头像全部都是通过后端的接口获取。但是使用 html2canvas 生成的canvas有些图片成功的在canvas里生成了。但是有些图片无论如何都显示不…

tortoise清理本地分支_本地:延庆运污水环卫抽化粪池

北京兴百荣清洁公司是清理排水管道的技术服务中心。提供下水道疏通,化粪池清理,抽污水,化粪池清掏,管道清淤,下水道清洗,化粪池清理,抽粪,管道疏通,雨水管道清理&#xf…

C++矩阵优化算法

写在前面的话:此矩阵优化算法并非原创,笔者只是转述了一种智慧。 在C中,定义一个矩阵通常是这样的: class MyMatrix { ........ public: ........ float data[50000]; } 这里为了方便说明问题,使用固定大小的数…

win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程

由于工作需要,今天要在电脑上安装SQL Server 2005。以往的项目都是使用Oracle,MS的数据库还真的没怎么用过,安装Oracle已经轻车熟路,但装SQL Server好像还有点小麻烦,所以记录下来,以留备用。 ------------…

tensorflow中的Supervisor

tf.train.Supervisor()可以帮我们简化一些事情,可以保存模型参数和Summary,它有以下的作用: 1)自动去checkpoint加载数据或初始化数据 ,因此我们就不需要手动初始化或者从checkpoint中加载数据 2)自身有一个…

jaxb 解析list元素_JAXB和根元素

jaxb 解析list元素XmlRootElement是人们习惯于与JAXB(JSR-222)一起使用的注释。 目的是将根元素与类唯一关联。 由于JAXB类映射到复杂类型,因此一个类有可能对应于多个根元素。 在这种情况下,无法使用XmlRootElement ,…

抓娃娃机爪不动怎么办_黄子韬吃娃娃菜能把临时牙咬断?种植牙到底结实不结实?...

黄子韬的临时牙上热搜了,最高排名热搜榜第四位。有关牙齿的事儿瞬间让我这个口腔医生来了八卦之心,在看了后面的各种评论之后,我大概梳理清楚这到底是怎么回事了:小时候因为调皮所以摔断了门牙,前些日子门牙做了种植牙…

从SVN迁移到Git(包括SVN历史纪录)【最系统的讲解】

从SVN迁移到git有很多方法,最简单的就是使用git包自带的git svn命令(git v1.7及以上)。除此之外还有一些第三方的专门的转换工具如http://www.subgit.com/,https://www.atlassian.com/git/tutorials/migrating-overview/等。但是由…

反射的应用

class Teacher:OPERATE_DIC [(创建课程, create_course),(创造学生, create_student),(创建课程, create_course),(查看学生信息, check_student_info),]def __init__(self, name):self.name namedef create_course(self):print(创建课程)def create_student(self):print(创建…

抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

本文作者:喜哥(张佳)易灵微课《数据分析-认知与实践》讲师新榜数据分析师人人都是产品经理、华尔街见闻专栏作家简书科技类优秀作者本文首发自公众号喜新(noyanjiu),如需转载请注明出处这次是26W条数据,应该…

SQL SERVER 数据库主键和外键的思考

SQL SERVER 数据库主键和外键的思考 什么是主键: 主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建…

在Gradle 2.13中更好地处理“在插件Y上找不到属性X”

您可能从未听说过的服务缺少用户名,密码或令牌? 这通常发生在您尝试执行任何操作(例如仅构建项目)时,不仅发生在使用给定的插件(例如在线代码覆盖工具)时。 我不想修改我的环境,而只…

2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

问题 C: 磨刀 时间限制: 1 Sec 内存限制: 128 MB提交: 190 解决: 39[提交] [状态] [讨论版] [命题人:admin]题目描述 磨刀是一个讲究的工作,只能在n℃下进行,所以我们首先要做的就是把刀的表面温度提升到n℃。处理刀身温度有两种方式:1.淬火…

统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录

1. 背景多个业务线的应用出现LongGC告警最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 知识回顾2.1 JVM堆内存划分新生代(Young Generation)新生代内被划分为三个区:Eden,from survivor,to survivor…

用JDBC直连方式访问SQL Server 2005详解

用JDBC直连方式访问SQL Server 2005详解 1.安装JDK,配置其环境变量:(笔者所用版本为1.6版) (1)从官方网http://java.sun.com/jdk下载安装文件。 (2)安装下载下来的安装包,按照提示安装成…

string类有可以调换方向的函数吗_深度剖析C++中的inline函数

点蓝色字关注“CurryCoder”微信公众号:CurryCoder的程序人生 怕什么真理无穷,进一寸有一寸的欢喜1.inline函数的爱恨两难内联函数比宏优点好很多,详细原因请参见尽量以const、enum、inline替换#define 。调用内联函数不需要承受函数调用所导…

javafx基础教程_JavaFX教程–基础

javafx基础教程JavaFX似乎正在RIA领域获得发展。 有了正确的工具和开发支持,它肯定会成为下一个最佳技术“物”的代价。 我没有在这里写任何JavaFX评论,因为有很多技术评论可能对它进行了广泛的评论,但是,我将编写一个简单的教程&…

prepareStatement与Statement的区别

prepareStatement与Statement的区别 1:创建时的区别: Statement stmcon.createStatement(); PreparedStatement pstmcon.prepareStatement(sql); 执行的时候: stm.execute(sql); pstm.execute(); 2: pstm一旦绑定了SQL,此pstm就不能执行其他的S…

什么是Spring Boot以及为什么它是用于创建微服务的首选框架

为什么要使用Spring Boot创建微服务? Spring Boot是Java领域众所周知的首选框架,用于创建Micro Services。 使用Spring引导框架,可以非常轻松地创建Java应用程序。 现在,我们将看到Spring启动框架的一些功能,这使其成为…

嵌入式开发有年龄限制吗_什么?!考教资有年龄限制了?2020年我还能考吗?...

近几年教师资格证越来越火爆越来越多的人都想报考,却又担心年龄问题,那么考教师资格证有年龄限制吗?下面小编就给大家解答一下这个问题:报考教师资格证是没有年龄限制的,只有学历限制。报考幼师教师资格证的考生必须是…