Ubuntu18.04安装cuDNN和Tensorflow的正确姿势

文章目录

  • Ubuntu18.04安装cuDNN和Tensorflow的正确姿势
    • 一、检查NVIDIA驱动是否安装成功
    • 二、检查CUDA是否安装成功
    • 三、安装cuDNN
      • 1. 确定版本
      • 2. 下载安装包
      • 3. 解压安装
      • 4. 安装libcupti
    • 四、安装Tensorflow
      • 1. 确定版本
      • 2. 安装pip
      • 3. 安装Tensorflow
      • 4. 检查是否正常运行
    • 五、错误解决
      • 1. so文件找不到的错误
      • 2. 安装Tensorflow时报错
      • 3. error: invalid command 'bdist_wheel'

Ubuntu18.04安装cuDNN和Tensorflow的正确姿势

本文章主要讲解 ubuntu 系统如何正确安装 cuDNNTensorflow

需要提前准备:

  • 一个安装好的Ubuntu 18.04
  • NVIDIA 驱动已经安装成功
  • CUDA已经安装成功

一、检查NVIDIA驱动是否安装成功

打开终端执行:

nvidia-smi
Wed Jul 10 11:49:26 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:42:00.0  On |                  N/A |
|  0%   42C    P8    17W / 300W |    309MiB / 11011MiB |      0%      Default |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1520      G   /usr/lib/xorg/Xorg                            18MiB |
|    0      1626      G   /usr/bin/gnome-shell                          79MiB |
|    0      7641      G   /usr/lib/xorg/Xorg                            95MiB |
|    0      7772      G   /usr/bin/gnome-shell                         113MiB |
+----------------------------------------------------------------------------

如果出现上面的结果说明成功。如果没有安装请参考这篇文章Linux安装NVIDIA显卡驱动的正确姿势或这篇文章Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡进行安装。

二、检查CUDA是否安装成功

关于 CUDA 的安装可以参考
Linux安装CUDA的正确姿势这篇文章。

打开终端执行:

nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168

说明CUDA的命令已经安装成功。接下来测试案例是否能够正常运行。

#编译并测试设备 deviceQuery:
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

如果这两个测试的最后结果都是Result = PASS,说明 CUDA 安装成功啦。

三、安装cuDNN

1. 确定版本

在安装之前需要参考与Tensorflow的支持关系,可以通过这个网址查看。

在这里插入图片描述

因为目前本地安装的环境如下:

  • Ubuntu 18.04
  • NVIDIA Driver 430.26
  • CUDA 10.1

所以推荐安装 cuDNN 7.6.0 版本,并配合 Tensorflow 1.13.0/1.14.0 都可以。

2. 下载安装包

下载地址可以在NVIDIA官网下载。要下载 cuDNN Library for Linux这项。

在这里插入图片描述

3. 解压安装

打开终端执行:

tar -zxvf cudnn-10.1-linux-x64-v7.6.0.64.tgz
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
sudo cp  cuda/include/cudnn.h /usr/local/cuda-10.1/include/# 为所有用户设置读取权限
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*

4. 安装libcupti

这是 NVIDIA CUDA 分析工具接口,此库提供高级分析支持。

打开终端执行:

sudo apt-get install libcupti-dev

四、安装Tensorflow

1. 确定版本

由于上一步我们选择安装了 cnDNN 7.6.0 并且是配合 CUDA 10.1,所以从这个网址我们可以得知,可以安装最高版本 Tensorflow 1.13.0。

2. 安装pip

大家可以根据实际情况进行选择是安装 pip 还是 pip3,本文以 pip3 为例子。

sudo apt-get install python3-dev python3-pip

此时 pip3 已经安装成功。

3. 安装Tensorflow

终端执行:

pip3 install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.12.0-cp36-cp36m-linux_x86_64.whl

关于下载的连接可以参考官方网址。

此步骤可能会很慢,如果有代理的可以提前设置好代理。

4. 检查是否正常运行

以下两个测试可以直接在终端内复制执行。

测试 1:

python3 -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

测试 2:

python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()"

如果以上两条返回的内容中都没有错误,代表Tensorflow安装成功。

五、错误解决

1. so文件找不到的错误

错误例子如下:

2019-07-10 11:26:57.200271: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Could not dlopen library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64::/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib64{LD_LIBRARY_PATH:+:/usr/local/cuda-10.1/lib64{LD_LIBRARY_PATH:+:/usr/local/cuda-10.1/lib64}}:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib

主要错误信息为Could not dlopen library 'libcublas.so.10.0'。造成这样的原因是链接文件不对造成的。

这种问题很好解决,下面我罗列一些常发生这样错误的so文件解决办法,首先大家要确定报错的so文件名称是什么,例如上面报错的是libcublas.so.10.0这个文件,那么就找到对应的libcublas库文件,然后在/usr/local/cuda-10.1/lib64/目录下创建一个bcublas.so.10.0连接文件即可。

一般缺失的so文件都在/usr/local/cuda-10.1/lib64/目录下,有一些特别的在/usr/lib/x86_64-linux-gnu/目录下。

  • libcudart
    sudo ln -s /usr/local/cuda-10.1/lib64/libcudart.so.10.1 /usr/local/cuda-10.1/lib64/libcudart.so.10.0
    
  • libcufft
    sudo ln -s /usr/local/cuda-10.1/lib64/libcufft.so.10.1.168 /usr/local/cuda-10.1/lib64/libcufft.so.10.0
    
  • libcurand
    sudo ln -s /usr/local/cuda-10.1/lib64/libcurand.so.10.1.168 /usr/local/cuda-10.1/lib64/libcurand.so.10.0
    
  • libcusolver
    sudo ln -s /usr/local/cuda-10.1/lib64/libcusolver.so.10.1.168 /usr/local/cuda-10.1/lib64/libcusolver.so.10.0
    
  • libcusparse
    sudo ln -s /usr/local/cuda-10.1/lib64/libcusparse.so.10.1.168 /usr/local/cuda-10.1/lib64/libcusparse.so.10.0
    
  • libcublas
    sudo ln -s /usr/lib/x86_64-linux-gnu/libcublas.so.10.2.0.168 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
    
    如果 /usr/lib/x86_64-linux-gnu/目录下没有libcublas库,可以在/usr/local/cuda10.1/targets/x86_64-linux/lib/查找libcublas库。

2. 安装Tensorflow时报错

python setup.py egg_info

如果错误如下:

    Complete output from command python setup.py egg_info:Traceback (most recent call last):File "<string>", line 1, in <module>ModuleNotFoundError: No module named 'setuptools'----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-szai5bvj/absl-py/

解决办法为安装setuptools

pip3 install --upgrade setuptools

然后重新安装Tensorfow。

3. error: invalid command ‘bdist_wheel’

如果遇到此错误:

pip3 install wheel

然后重新安装Tensorfow。


END

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

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

相关文章

HttpServletResponse应用 的 简单介绍

HttpServletResponse是专门用于HTTP协议的ServletResponse接口&#xff0c;它用于封装HTTP响应消息&#xff0c;允许操控HTTP协议相关数据&#xff0c;包括响应头和状态码&#xff0c;支持Cookies和session跟踪&#xff0c;HttpServletResponse也定义了一系列用于描述各种HTTP状…

移动站应该尝试百度MIP的五个原因

MIP 是什么&#xff1f;MIP 是百度在 2016 年提出的移动网页加速器项目。 MIP 能做什么&#xff1f;MIP 能帮助站长和网站开发者快速搭建移动端页面。 MIP 怎么加速&#xff1f;MIP 从前端渲染和页面网络传输两方面进行优化&#xff0c;杜绝页面渲染中的阻塞问题&#xff0c;…

Vim从理解到应用

1991 年&#xff0c;来自荷兰的一名工程师 Bram Moolenaar 为了在他的Amiga计算机上复制Vi的功能&#xff0c;正式发布 了Vim的第一个版本。在当时无论谁也没想到&#xff0c;这款软件未来能在技术圈爆发出那么大的威力&#xff0c;为千千万万的工程师节省了无数时间&#xff0…

如何用百度MIP快速搭建体验友好的移动页面

在读这篇文章之前&#xff0c;请确定你已经了解 MIP 定义及加速原理。如果不确定的话&#xff0c;可以到 MIP 官网了解。 改造前期准备和注意事项: 你可以选择直接将原先的移动站点直接改成 MIP 站&#xff0c;也可以单独再做一套 MIP 站点与移动站并存。 复杂的页面暂不建议…

JAVA知识基础(一):数据类型

在我们学习一门编程语言时&#xff0c;最先要了解的就是数据类型&#xff0c;而数据类型又都是抽象的概念&#xff0c;初学者理解起来比较困难&#xff0c;所以我们往往是先应用再理解&#xff0c;但是在本篇文章我决定用先理解再应用的方式尝试一下&#xff0c;试试效果。 1、…

百度MIP移动页面加速——不只是CDN

MIP 是用 CDN 做加速的么&#xff1f;准确答案是&#xff1a;是&#xff0c;但不只是。 MIP 全称 Mobile Instant Pages&#xff0c;移动网页加速器&#xff0c;是百度提出的页面加速解决方案。MIP 从前端渲染和页面网络传输两方面进行优化&#xff0c;杜绝页面渲染中的阻塞问…

JAVA知识基础(二):基本语法

本篇主要介绍JAVA的运算符、循环结构以及条件结构。 1、JAVA运算符 计算机的最基本用途之一就是执行数学运算&#xff0c;作为一门计算机语言的Java也提供了一套丰富的运算符来操纵变量。 JAVA运算符可以大致概括为几类&#xff1a;算术运算符、关系运算符、位运算符、逻辑运…

JAVA知识基础(三):修饰符

JAVA中根据修饰对象的不同可以分为类修饰符、方法修饰符、变量修饰符三类&#xff0c;其中每种修饰符又可以单独分成两类&#xff1a;访问修饰符和非访问修饰符。为了便于理解&#xff0c;本文以访问和非访问的角度展开。 1、访问修饰符 访问修饰符有四个&#xff1a;public、…

百度推出新技术 MIP,网页加载更快,广告呢?

MIP 项目在 2016 年年初正式发布&#xff0c;帮助移动页面加速&#xff08;原理&#xff09;。内测数据表明&#xff0c;MIP 页面在 1s 内加载完成。现在已经有十多家网站加入 MIP 项目&#xff0c;有更多的网站正在加入中。在MIP收到的反馈中&#xff0c;大部分都提到了广告的…

JAVA知识基础(四):深入理解static关键字

1、static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法。以致于即使没有创建对象&#xff0c;也能使用属性和调用方法&#xff01; static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方…

MIP改造常见问题二十问

在MIP推出后&#xff0c;我们收到了很多站长的疑问和顾虑。我们将所有疑问和顾虑归纳为以下二十个问题&#xff0c;希望对大家理解 MIP 有帮助。 1、MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何&#xff1f; 答&#xff1a;在原页面 MIP 化&#xff0c;不会影响其它搜…

Nginx(零):背景

我们今天开始对Nginx的学习&#xff0c;本来是打算第一篇就是基础知识介绍的&#xff0c;但是我感觉在学习一个新知识之前总应该知道&#xff0c;我们为什么要学习它&#xff0c;学习它的意义何在吧&#xff01;所以我加了背景这一篇作为Nginx开始学习的标志。 1、Nginx的诞生…

Nginx(一):概念基础

上一篇我们介绍了Nginx的背景&#xff0c;现在我们就要开始正式对Nginx的学习了。本篇我们将对Nginx的基本定义进行介绍&#xff0c;了解Nginx到底是什么。然后我们会介绍Nginx最基本的三个概念&#xff1a;反向代理、负载均衡、动静分离。 1、Nginx是什么 Nginx(“engine x”…

MIP 官方发布 v1稳定版本

近期&#xff0c;MIP 官方发布了 MIP 系列文件的全新 v1 版本&#xff0c;建议开发者尽快完成升级。 一、 我是开发者&#xff0c;如何升级版本&#xff1f; 对于 MIP 页面开发者来说&#xff0c;* 只需替换线上引用的 MIP 文件为 v1 版本 *&#xff0c;就可以完成升级。所有…

百度MIP页规范详解 —— canonical标签

百度 MIP 的规范要求必须添加强制性标签 canonical&#xff0c;不然 MIP 校验工具 会报错&#xff1a; 强制性标签 <link rel"/^(canonical)$/"> 缺失或错误 这个标签怎么写&#xff1f;又是干什么用的呢&#xff1f; ** 简单来说&#xff0c;canonical 标签…

Nginx(二):安装、配置、常用命令

1、Nginx在Linux操作系统中的安装 这里简单介绍一下nginx的安装了 1.1、前期准备 在安装nginx之前我们要提前准摆好它的编译工具以及库文件&#xff1a;zlib、poenssl。 还有有让Nginx支持Rewrite功能的PCRE. 安装的途径有很多可以参考&#xff1a;https://www.runoob.com/lin…

JAVA知识基础(五):深入理解final关键字

1.final 关键字 final关键字主要用在三个地方&#xff1a;变量、方法、类。 final修饰变量&#xff1a;final修饰一个类时&#xff0c;表明这个类不能被继承。final修饰方法&#xff1a;final修饰方法&#xff0c;方法不可以重写&#xff0c;但是可以被子类访问 【前提&#…

CMS模板应用调研问卷

截止目前&#xff0c;已经有数十家网站与我们合作&#xff0c;进行了MIP化改造&#xff0c;在搜索结果页也能看到“闪电标”的出现。除了改造方面的问题&#xff0c;MIP项目组被问到最多的就是&#xff1a;我用了wordpress&#xff0c;我用了织梦cms&#xff0c;怎么改MIP呢&am…

Nginx(三):反向代理

我们本篇将通过两个实例进行对Nginx反向代理的学习。 1、概念基础 反向代理&#xff0c;其实客户端对代理是无感知的&#xff0c;因为客户端不需要任何配置就是可以访问。我们只需要将请求发送到反向代理服务器上&#xff0c;有反向代理服务器去选择目标服务器获取数据后&…

VIP站长大会(北京站)常见问题解答

功能支持问题 1. react 能否和 MIP 结合使用&#xff0c;如果暂时不能以后是否有考虑&#xff1f;是否会和其他 JavaScript 框架 (比如 Angular ) 结合 ? 目前暂无计划支持。 2. MIP 页是否支持自定义 cookie? 实现 登录、统计、广告等功能 ? <mip-cookie>组件正在…