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,一经查实,立即删除!

相关文章

Vim从理解到应用

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

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

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

Nginx(一):概念基础

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

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

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

Nginx(三):反向代理

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

Nginx(四):负载均衡Load balancing

1、概念基础 Load balancing&#xff0c;即负载均衡&#xff0c;是一种计算机技术&#xff0c;用来在多个计算机&#xff08;计算机集群&#xff09;、网络连接、CPU、磁盘驱动器或其他资源中分配负载&#xff0c;以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避…

MIP开发教程(三) 使用MIP-CLI工具调试组件

一 . 在 mip-extensions 仓库中创建新的组件二 . 预览调试组件 三 . 在 MIP 页中引用自己编写的 MIP 组件 四 . 组件提交到 GitHub 仓库时需要进行校验 站长开发的非通用组件&#xff0c;使用 组件上线平台 提交&#xff0c;上线后代码位于 GitHub/mip-extension-platform 仓…

MIP开发教程(二) 使用MIP-CLI工具调试MIP网页

初始化 MIP 配置 新建一个 MIP 网页 编写 MIP 网页代码 校验 MIP 网页 调试 MIP 网页 1. 初始化 MIP 配置 首先在html目录下进行初始化 MIP 配置&#xff1a; $ mip init 此时会创建mip.config文件&#xff1a; 2. 新建一个 MIP 网页 在mip-project/html文件夹下输入如下…

Nginx(五):动静分离

1、概念基础 Nginx动静分离简单来说就是把动态请求和静态请求分开&#xff0c;不能理解成只是单纯的把动态页面静态页面的物理分离。严格意义上说应该是动态请求跟静态请求的分开&#xff0c;可以理解成使用Nginx处理静态页面&#xff0c;Tomcat处理动态页面。动静分离从目前实…

Nginx(六):配置nginx高可用集群

我们知道在我们使用nginx代理多态tomcat服务器时&#xff0c;如果某台tomcat服务器发生宕机&#xff0c;那么nginx的分配机制可以自动将其剔除。但是如果发生了nginx的宕机状况&#xff0c;又该如何解决呢。 1、配置高可用的集群 1.1、什么是高可用 高可用HA&#xff08;Hig…

MIP开发教程(一) MIP-CLI工具安装与环境部署

依赖安装 安装 MIP-CLI 创建开发文件结构 1. 依赖安装 MIP-CLI 使用 NPM 安装&#xff0c;依赖 node 环境&#xff1a; node 安装-windowsnode 安装-mac MIP-CLI 开发组件需要 git&#xff1a; git 安装-windowsgit 安装-mac 2. 安装 MIP-CLI MIP-CLI&#xff1a;mip 开…

向MIP开源项目提交Issues

Issues 是 GitHub 管理需求&#xff0c;讨论技术方案的方式&#xff0c;附&#xff1a;官方解释。MIP 是在 GitHub 上的开源项目&#xff0c;也使用 Issues 来做任务管理。 一、Issues 在 MIP 项目中的应用 MIP 项目中的 Issues 主要有两种用法&#xff1a; 1. * 记录 bug,…

Nginx(七):nginx原理解析

前面我们讲到了nginx的反向代理、负载均衡、动静分离以及高可用&#xff0c;本篇我们来了解一下nginx的原理&#xff0c;看一下nginx是怎么执行的。 1、mater和worker 2、worker是如何进行工作的 3、相关问题 3.1、一个 master 和多个 woker 有好处 &#xff08;1&#xff0…

MIP技术交流分享(3月9日)

3月9日上周四下午&#xff0c;MIP 团队工程师与去哪儿酒店云、众荟的 Web 前端工程师进行了一次面对面的技术交流。 在这次交流中&#xff0c;MIP 工程师主要分享了 MIP 技术原理&#xff0c;MIP 加速原理&#xff0c;以及 MIP 为开发者提供的工具集。去哪儿的工程师也提出了通…

SpringBoot基础篇(一):Spring Boot入门

我们今天开始对SpringBoot的学习&#xff0c;本篇主要是Spring Boot的入门部分。 1、SpringBoot简介 引用SpringBoot在百度百科中的含义&#xff1a; Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使…

SpringBoot番外篇(一):使用Spring Initializer快速创建Spring Boot项目(IDEA版)

IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目&#xff1b; 选择我们需要的模块&#xff1b;向导会联网创建Spring Boot项目&#xff1b; ps:需要联网 1、创建新项目时选择Spring Initializ&#xff0c;选择好java版本&#xff0c;点击next。r 2、填写项…

开发教程(四) MIP组件平台使用说明

组件审核平台用于上传 MIP 组件。经过自动校验之后&#xff0c;提交审核&#xff0c;通过审核的组件会定时推送到线上&#xff0c;供网站使用。 平台地址&#xff1a;https://www.mipengine.org/platform/ 1. 使用说明 MIP 组件审核平台用于提交开发完成的组件&#xff0c;如…

MIP 技术交流分享(3月15日)

3月15日下午&#xff0c;MIP 团队工程师与58赶集的 Web 前端工程师进行了一次面对面的技术交流。 在这次交流中&#xff0c;MIP 工程师主要分享了 MIP 技术原理&#xff0c;MIP 加速原理&#xff0c;以及 MIP 为开发者提供的工具集。 58赶集的工程师提出了以下问题&#xff1a…

Redis(零):背景

什么是NoSQL&#xff0c;什么是Redis&#xff0c;我们在了解这个系列之前&#xff0c;先来看一下Redis是从何而来&#xff1f;Why redis is needed? 1、单机MySQL年代 在最早的单机MySQL年代&#xff0c;存在着访问量小&#xff0c;单个数据库等特点。 但是特有着众多的缺…

Redis(二):Redis入门与性能测试

1、Redis概述 Redis是什么&#xff1a; Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 免费开源&#xf…