Ubuntu18.04 安装 TensorFlow (GPU)

2023-11-05

重新在台式机上学习深度学习,Ubuntu18.04 + Tensorflow-gpu + cuda8.0 + cuDNN6.0

一、准备工作(有一些不是必需的):

1.安装pip:

打开终端输入命令:sudo apt-get install python-pip python-dev

2.安装vim:

sudo apt-get install vim-gtk

在命令行下,输入命令:sudo vim /etc/vim/vimrc    必须加上sudo,否则你是没有权限编辑vimrc的。

在这个文件中,会有这么一句: syntax on   意思是语法高亮,如果您的被注释掉了,请“让它出来”。

请在您的VIM的最后一行,输入他们,可以让您的VIM变得更漂亮、舒服。

set nu                           // 在左侧行号

set tabstop                  //tab 长度设置为 4

set nobackup               //覆盖文件时不备份

set cursorline               //突出显示当前行

set ruler                       //在右下角显示光标位置的状态行

set autoindent             //自动缩进

然后 ESC :wq保存即可


二、ubuntu安装GPU显卡驱动

打开终端:sudo apt-get update

选择系统设置→软件更新→附加驱动→选择nvidia最新驱动→应用更改.(如果没有,去官网找对应的驱动安装即可)

验证安装成功:软件连找到 NVIDIA X Sever Settings


驱动安装成功!


三、安装Tensorflow依赖的编译工具bazel

1、安装bazel前,需先安装JDK8

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

安装完成后 验证java版本:java -version


2、安装bazel

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

sudo apt install curl

安装和更新Bazel

sudo apt-get update && sudo apt-get install bazel

sudo apt-get upgrade bazel 


三、安装cuda 8.0(先看本章 4、验证cuda8是否安装成功)

1、cuda 8.0 下载地址:https://developer.nvidia.com/cuda-80-ga2-download-archive


验证主机是否满足cuda8.0安装的要求

lspci | grep -i nvidia

uname -m && /etc/*release
gcc --version
uname -r
sudoapt-get install linux-headers-$(uname -r)

sudo sh cuda_8.0.27_linux.run

2、添加环境变量

cd ~

vim   .bashrc

末尾添加

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:/usr/local/cuda-8.0/extras/    CUPTI/lib64:$LD_LIBRARY_PATH

然后 source ~/.bashrc

3、nvcc -V

如果没有nvcc则安装 sudo apt install nvidia-cuda-toolkit

nvcc -V

nvidia-smi



4、验证cuda8是否安装成功:

进入NVIDIA_CUDA-8.0_Samples目录,执行:$ make

出现错误!!!


原因:由于cuda8.0不支持gcc 5.0以上的编译器,因此需要降级,把编译器版本降到4.8

5、g++/gcc降级到4.8(建议降级到4.9,我这里到4.9失败所以用4.8)

sudo apt-get -y update

sudo apt-get install -y gcc-4.9

sudo apt-get install -y g++-4.9

cd /usr/bin

sudo rm gcc

sudo ln -s gcc-4.8 gcc

sudo rm g++

sudo ln -s g++-4.8 g++

6、CUDA8.0安装成功测试

进入NVIDIA_CUDA-8.0_Samples目录,执行:$ sudo make

进入1_Utilities目录,执行:$ ./deviceQuery/deviceQuery ,结果如下:


执行:$ nvcc -V,结果如下:


验证CUDA8.0安装成功,demo也跑通了。


四、安装cuDNN6.0(因为5.1在编译步骤不通过)

下载地址6.0: https://developer.nvidia.com/rdp/cudnn-archive

打开文件所在文件夹,当前位置打开终端

tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz
sudo cp -P cuda/include/cudnn.h /usr/local/cuda-8.0/include
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64

sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*

配置环境变量;

sudo gedit ~/.bashrc

添加:

export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64”
export CUDA_HOME=/usr/local/cuda

export PATH="$CUDA_HOME/bin:$PATH"

再执行:source ~/.bashrc

配置完成!


五、Tensorflow(GPU)安装

方法一:pip 二进制文件安装

pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0-cp27-none-linux_x86_64.whl

方法二:原文件安装

1、安装TF依赖工具包

sudo apt-get install python-numpy swigpython-dev python-wheel

2、下载最新源码

sudo apt-get install git

git clone https://github.com/tensorflow/tensorflow

3、运行configure脚本配置环境信息

cd tensorflow

./configure

并不是默认选择Y就可以了,巨大部分是选择N,具体他有些选项不会出现,需要另外查询是不是需要选择y/n,计提问题具体分析,下面是我的选项。

twinkle@twinkle:~/tensorflow$ ./configure
WARNING: Running Bazel server needs to be killed, because the startup options are different.
You have bazel 0.14.1 installed.
Please specify the location of python. [Default is /usr/bin/python]: 


Found possible Python library paths:
  /usr/local/lib/python2.7/dist-packages
  /usr/lib/python2.7/dist-packages
Please input the desired Python library path to use.  Default is [/usr/local/lib/python2.7/dist-packages]
/usr/bin/python
Do you wish to build TensorFlow with jemalloc as malloc support? [Y/n]: n
No jemalloc as malloc support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: n
No Google Cloud Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: n
No Hadoop File System support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Amazon S3 File System support? [Y/n]: n
No Amazon S3 File System support will be enabled for TensorFlow.

Do you wish to build TensorFlow with Apache Kafka Platform support? [Y/n]: n
No Apache Kafka Platform support will be enabled for TensorFlow.

Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
No XLA JIT support will be enabled for TensorFlow.

Do you wish to build TensorFlow with GDR support? [y/N]: n
No GDR support will be enabled for TensorFlow.

Do you wish to build TensorFlow with VERBS support? [y/N]: n
No VERBS support will be enabled for TensorFlow.

Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
No OpenCL SYCL support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: y
CUDA support will be enabled for TensorFlow.

Please specify the CUDA SDK version you want to use. [Leave empty to default to CUDA 9.0]: 8


Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: 


Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7.0]: 6


Please specify the location where cuDNN 6 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:


Do you wish to build TensorFlow with TensorRT support? [y/N]: n
No TensorRT support will be enabled for TensorFlow.

Please specify the NCCL version you want to use. [Leave empty to default to NCCL 1.3]: 


Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 6.1]


Do you want to use clang as CUDA compiler? [y/N]: n
nvcc will be used as CUDA compiler.

Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: 


Do you wish to build TensorFlow with MPI support? [y/N]: n
No MPI support will be enabled for TensorFlow.

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: 


Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n
Not configuring the WORKSPACE for Android builds.

Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See tools/bazel.rc for more details.
	--config=mkl         	# Build with MKL support.
	--config=monolithic  	# Config for mostly static monolithic build.
Configuration finished

4、通过bazel来编译pip的安装包,然后通过pip安装

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda -k //tensorflow/tools/pip_package:build_pip_package

如果出现错误:

Cuda Configuration Error: Cannot find libdevice.10.bc under /usr/local/cuda-8.0
WARNING: Target pattern parsing failed.
ERROR: no such package '@local_config_cuda//crosstool': Traceback (most recent call last):

解决方案:将/usr/local/cuda-8.0/nvvm/libdevice/libdevice.compute_50.10.bc改为libdevice.10.bc,并复制一份至/usr/local/cuda-8.0/

再执行上面的命令,上面的过程比较耗时,结束后继续执行。

bazel-bin/tensorflow/tools/pip_package/build_pip_package/tmp/tensorflow_pkg

sudo pip install/tmp/tensorflow_pkg/tensorflow-1.2.0rc2-cp27-cp27mu-linux_x86_64.whl

第一个命令中 --config=cuda参数为对GPU的支持,如何不需要支持GPU,就不需要这个参数。

 5\测试:

import tensorflow as tf

a=tf.constant([1.0,2.0,3.0],shape=[3],name='a')

b=tf.constant([1.0,2.0,3.0],shape=[3],name='b')

c=a+b

sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))

print sess.run(c)



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04 安装 TensorFlow (GPU) 的相关文章

  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 将node.js +expressjs应用程序的NODE_ENV设置为ubuntu下的守护进程

    我按照这些说明让守护进程正常工作 http kevin vanzonneveld net techblog article run nodejs as a service on ubuntu karmic http kevin vanzon
  • ubuntu 的 CSS 更少(并且自动编译)? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试过 simples 但现在 l
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • 套接字发送调用被阻塞很长时间

    我每 10 秒在套接字上发送 2 个字节的应用程序数据 阻塞 但发送调用在下面的最后一个实例中被阻塞超过 40 秒 2012 06 13 12 02 46 653417 信息 发送前 2012 06 13 12 02 46 653457 信
  • 在嵌入式系统上将内核控制台发送到哪里?

    我正在开发一个嵌入式系统 该系统当前通过串行端口 1 上的控制台输出启动 Linux 使用启动加载程序中的控制台启动参数 然而 最终我们将使用这个串行端口 内核控制台输出的最佳解决方案是什么 dev null 能否以某种方式将其放在 pty
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • Tensorflow 数据集的数据预处理是针对整个数据集还是针对每次调用 iterator.next() 进行一次?

    您好 我现在正在研究tensorflow中的数据集API 我有一个关于执行数据预处理的dataset map 函数的问题 file name image1 jpg image2 jpg im dataset tf data Dataset
  • 由于 abi::cxx11 符号导致的链接问题?

    我们最近收到一份报告 因为GCC 5 1 libstdc 和双 ABI http gcc gnu org onlinedocs libstdc manual using dual abi html 它似乎Clang 不知道 GCC 内联名称
  • Keras如何在Relu激活函数中使用max_value

    keras activation py 中定义的 Relu 函数为 def relu x alpha 0 max value None return K relu x alpha alpha max value max value 它有一个
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • 如何在 TensorFlow 中访问原型中的值?

    我从tutorial https www tensorflow org extend tool developers 我们可以这样做 for node in tf get default graph as graph def node pr
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na

随机推荐

  • Linux MQTT 物联网通信

    目录 MQTT 报文 MQTT 简介 MQTT 协议 上 MQTT 通信基本原理 连接MQTT 服务端 MQTT 客户端连接服务端的两个步骤 CONNECT 请求报文 CONNACK 回复报文 断开连接 发布消息 订阅主题与取消订阅主题 P
  • Qt源码分析之QObject

    在分析源码之前 我们先来介绍下Pimpl机制 Pimpl机制介绍 Pimpl private implementation 字面意思是私有实现 具体实现是将类的 假设类A 私有数据和函数放入一个单独的类 假设类Pimpl 中 然后在类A的头
  • dubbo——管理员指南

    原文地址 http blog csdn net wilsonke article details 39935801 2014 10 09 18 36 3613人阅读 评论 0 收藏 举报 目录 管理员指南 安装手册 示例提供者安装 示例消费
  • FFT (快速傅里叶变换)

    FFT FFT FFT的全称是 Fast Fourier Transform 即快速傅里叶变换 傅里叶变换是复变函数的重要内容 傅里叶变换分为离散和连续傅里叶变换 傅里叶变换实现从时域到频域的转换 是信号与系统重要的分析工具 连续傅里叶变换
  • 设备管理 USB ID

    发现个USB ID站点 对于做设备管理识别的小伙伴特别实用 http www linux usb org usb ids 附录 List of USB ID s Maintained by Stephen J Gowdy
  • pytorch低版本找到并安装torch_geometric对应版本

    一 找到官网的安装命令 不同版本的torch geometric 对应的安装命令不完全一致 因此我们需要首先找到所需torch geometric版本的正确安装命令 然后再去找对应的版本 目前torch geometric官网上只有pyto
  • Win10环境下CPU+GPU版本基于YOLOv5的行人检测研究(包括Anaconda安装超详细)

    安装Anaconda 直达链接Anaconda 点击get started 点击Download Anaconda Installers 点击Download 然后保存执行文件即可 开始安装Anaconda 双击执行文件 Anaconda3
  • Java中的“+“运算符

    前言 前面已经对各类运算符有了一个总的认知 运算符用处很多 一 关于Java中的 运算符 1 当 两边确定都是数字的话一定是进行加法运算 2 当 两边的数据是字符串 1个 一定会进行字符串的连接运算 并且连接过后运算结果一 定 还是一个字符
  • 关于IP分片的一篇小论文

    关键字 IP分片 MTU MSS 引言 分片是分组交换的思想体现 也是IP协议解决的两个主要问题之一 在IP协议中的分片算法主要解决不同物理网络最大传输单元 MTU 的不同造成的传输问题 但是分组在传输过程中不断地分片和重组会带来很大的工作
  • 使用C语言操作环境变量

    获取环境变量内容 char getenv char name 参数 name欲获取的环境变量名称 返回值 环境变量值 NULL表示没有找到环境变量 设置环境变量 int putenv char string 参数 string环境变量字符串
  • linuxsed替换字符串后保存_字符串方法——replace()

    1 字符串方法 replace str replace old new max 参数说明 Parameters old 被替换的字符串 new 新字符串 替换原来的old字符串 max 可选参数 替换不超过max次 例子 Example s
  • 什么是抖动?什么叫抖动

    什么是抖动 什么叫抖动 抖动的定义是 数字信号的各个有效瞬时对其当时的理想位置的短期性偏离 这意味着抖动是不希望有的数字信号的相位调制 相位偏离的频率称为抖动频率 与抖动有密切关系的第二个参数称为漂移 把它定义为 数字信号的各个有效瞬间相对
  • [NOI Online #3 入门组 T3]买表【二进制优化dp背包】

    题目链接 很可惜的一点就是 我正赛的时候好像把a和k看反了 于是一直想不到如何做 打了个暴力分 现在想想 暴力分也错了 因为a和k真的很关键 使得最后300变成200分 人生第一场OI就这样草草结束 或许这就是OI选手的刺激所在吧 得亏我不
  • DDR工作原理

    DDR SDRAM全称为Double Data Rate SDRAM 中文名为 双倍数据流SDRAM DDR SDRAM在原有的SDRAM的基础上改进而来 也正因为如此 DDR能够凭借着转产成本优势来打败昔日的对手RDRAM 成为当今的主流
  • csdn找到自己关注的人和关注自己的人-2021最新

    前言 csdn找到自己关注的人和关注自己的人 2021最新 入口 https my csdn net my follow 点进入以后是这样的 就是没办法查找具体某个人
  • JDK、IDEA等安装详解

    第一章 计算机基础知识 1 2 计算机简介 计算机俗称电脑 是第二次世界战争时 美国国防部利用它来进行弹道计算 第一台通用计算机叫做 ENIAC 当时计算机是一个庞然大物 用了18000个电子管 占地170平方米 重达30吨 耗电功率约15
  • nginx七层代理和四层转发的理解

    先来理解一下osi七层模型 应用层 应用层是ISO七层模型的最高层 它直接与用户和应用程序交互 提供用户与网络的接口 它包括各种应用协议 如HTTP FTP SMTP等 用于实现特定应用的功能和通信 表示层 表示层负责数据的格式转换 加密和
  • Introduction of moving block bootstrap (MBB)algorithm

    Because we can not use usual bootstrap sampling method to get subsamples from time series dataset then the MBB was propo
  • 软件测试人员的职业晋升之路

    关于软件测试行业的职业发展方向 在网络上总能看到各种各样的问题 有关注零基础能不能入行的 有关注25岁入行晚不晚的 还有关注35岁后的职业发展方向的 在此过程中 看到很多行业大佬分享了自己的工作经验 也给出了很多自己的建议 要想在测试行业有
  • Ubuntu18.04 安装 TensorFlow (GPU)

    重新在台式机上学习深度学习 Ubuntu18 04 Tensorflow gpu cuda8 0 cuDNN6 0 一 准备工作 有一些不是必需的 1 安装pip 打开终端输入命令 sudo apt get install python p