GPU环境配置指南(Ubuntu16.04+CUDA+CUDNN)

前言

这两天由于种种原因,反复重装系统并配置了深度学习开发环境,无意中便总结了一份环境配置指南出来,所幸再稍加整理,和大家分享出来。
本指南确认无误的环境是:
系统是Ubuntu16.04
GPU是NVIDIA GTX1070
CUDA安装8.0和9.0均可

一、重装系统、配置网络

这个就不必多说了,首先重装好系统
然后配置好网络:配置ip,网关等,确保可以上网即可。

二、安装必备工具:

根据自己的需求,安装一些必要工具

更换国内源
参考教程

更新
$ sudo apt-get update

安装vim
$ sudo apt-get install vim

安装ssh
$ sudo apt-get install openssh-server
运行ssh:
$ sudo service ssh start

安装传输工具rzsz
sudo apt-get install lrzsz

三、安装CUDA

为了安装nvidia驱动,我们首先需要禁用Ubuntu系统自带的驱动nouveau

测试nouveau是否正在运行,有输出则代表nouveau正在加载
$ lsmod | grep nouveau

将nouveau加入黑名单,禁用nouveau
$ sudo vi /etc/modprobe.d/blacklist.conf
加入下面的内容
blacklist nouveau
执行命令更新状态
$ sudo update-initramfs –u

重启,然后查看是否禁用成功
$ reboot
$ lsmod | grep nouveau
如果无任何输出,说明禁用成功(登陆过程中,如果发现字体变大,其实就说明禁用成功了)

禁用成功后准备安装CUDA,首先到官网下载好对应版本的安装文件

现在切换到命令行界面,按下Alt + Ctrl + F1

首先关闭图形界面
$ sudo service lightdm stop

如果安装了驱动,则删除已有的nvidia驱动
$ sudo apt-get remove --purge nvidia*

安装CUDA9.0(CUDA8.0的安装完全一致)
sudo sh cuda_9.0.176_384.81_linux.run
cuda_9.0.176_384.81_linux.run里面自带NVIDIA驱动384.81,按照提示默认安装即可。
不需要像网上的某些教程说的那样CUDA和驱动分开装,不确定的选项就按默认提示选择即可。

可能出现的错误:

  1. The driver installation is unable to locate the kernel source
    原因:内核版本过高
    解决方案1:参考这篇博客https://blog.csdn.net/lewif/article/details/79625151,(我没有试过,需要自行确认是否可行)
    解决方案2:重装系统,我当时就是这样暴力的解决问题的,简单有效。。。
  2. nouveau相关问题
    原因:禁用没有成功,请确认是否完全按照上面的介绍进行

可以通过以下命令确认安装是否成功,以及版本是否正确
显示显卡驱动信息命令
$nvidia-smi
查看NVIDIA驱动的版本
$ cat /proc/driver/nvidia/version
检查CUDA的版本
$ cat /usr/local/cuda/version.txt

一切顺利的话,恢复图形界面
$ sudo service lightdm start

设置环境变量
在/etc/profile结尾添加如下两句
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64

查看cuda是否安装成功
$ source /etc/profile
$ nvcc -V

2020/4/19 补充:
今天又装了个Ubuntu 18.04,又踩了些坑
发现18.04还是驱动,CUDA分开装比较简单
驱动也不需要像上面介绍的那样先禁用nouveau,再装新驱动,一行命令就能搞定:
$ sudo ubuntu-drivers autoinstall
详见How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux

四、安装cudnn

下载cudnn,
去官网下载cudnn,或者在网上下载,网上资源也很多
注意下载的cudnn的版本需要与CUDA的版本是对应的

安装cudnn
首先解压出名为cuda的目录,然后执行命令:
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

五、安装Anaconda

$ bash Anaconda相应版本.sh

六、安装tensorflow

安装tensorflow很简单,仅仅需要注意安装的版本是否合适!
确认安装的是GPU的版本,如果你有GPU的显卡
确认tensorflow版本与CUDA是否匹配
$ pip install tensorflow-gpu==1.6

注1:CUDA9.0 与 tensorflow1.6 以上是对应的,如果是CUDA8.0,建议装tensorflow1.2

在python中 import tensorflow as tf 测试安装是否成功

注2:如果无法拿到线上机root权限,上述的cudnn安装方法无法完成。
此时,import tensorflow 会报错:ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory
替代解决方案是将所需的libcudnn.so.7拷贝到anaconda的lib目录下,这样tendorflow也能找到对应的文件

七、安装opencv

自动下载安装opencv
$pip install opencv-python

或者手动下载whl文件安装:
$pip install opencv-python相应版本.whl

安装opencv后,import cv2进行测试

如果遇到了报缺少lib的错误,只需找到对应的lib,将文件拷贝到Anaconda路径/lib下即可

寻找lib的方式有两种:
1.如果你的其他机器并不会报错,那这台机器一定有你需要的lib文件,试试看/usr/lib64/或者其他地方有没有你想要的文件
2.去网上下载

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

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

相关文章

在多任务(RTOS)环境中使用看门狗

最近在SEGGER的博客上看到一篇有关在实时操作系统使用看门狗的文章。从一个失败的太空项目出发,分析了看门狗的作用及使用,自我感觉很有启发,特此翻译此文并推荐给各位同仁。为了阅读方便,有些航天领域名词本人添加了注释&#xf…

天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享

天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享 一、前言 竞赛页面 团队名BugFlow,最终排名35/2157 虽然成绩一般,但是作为一支目标检测领域的新手队伍,仅仅有一块1070显卡,从零开始拿到这个排名,也算有一…

tensorflow 如何获取模型中想要的张量

当我们想要改造或者利用某一预训练模型来完成一些其它任务时,一个常用且必备的操作是从指定模型中获取到我们感兴趣的张量(tensor)。 例如我想使用一个已经训练好的CNN模型中间的某一层的结果作为特征向量来完成另一个相关任务,就…

信息摘要算法之三:SHA256算法分析与实现

前面一篇中我们分析了SHA的原理,并且以SHA1为例实现了相关的算法,在这一片中我们将进一步分析SHA2并实现之。 1、SHA简述 前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-…

focal loss的几种实现版本(Keras/Tensorflow)

起源于在工作中使用focal loss遇到的一个bug,我仔细的学习多个靠谱的focal loss讲解及实现版本 通过测试,我发现了这样一个奇怪的现象,几乎每个版本的focal loss实现对同样的输入计算出的loss都是不同的。 通过仔细的比对和思考&#xff0c…

基于ARM Cortex-M和Eclipse的SWO单总线输出

最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关通过SWD的跟踪接口SWO获取ARM Cortex-M相关信息的文章,文章结构明晰,讲解透彻,本人深受启发,特意将其翻译过来供各位同仁参考。当然限于个人水平,有不当之处…

包管理工具conda极简教程

包管理工具conda极简教程 conda的作用 Anaconda是目前非常流行的一个python包管理器,自带很多流行的python库,包括numpy,pandas等,当然还有conda。而Conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本…

PID控制器开发笔记之九:基于前馈补偿的PID控制器的实现

对于一般的时滞系统来说,设定值的变动会产生较大的滞后才能反映在被控变量上,从而产生合理的调节。而前馈控制系统是根据扰动或给定值的变化按补偿原理来工作的控制系统,其特点是当扰动产生后,被控变量还未变化以前,根…

借助百度识图爬取数据集

背景 一个能够实际应用的深度学习模型,背后的数据集往往都花费了大量的人力财力,通过聘用标注团队对真实场景数据进行标注生产出来,大多数情况不太可能使用网络来源的图片。但在项目初期的demo阶段,或者某些特定的场合下&#xf…

通过printf从目标板到调试器的输出

最近在SEGGER的博客上看到Johannes Lask写的一篇关于在调试时使用printf函数从目标MCU输出信息到调试器的文章,自我感觉很有启发,特此翻译此文并推荐给各位同仁。当然限于个人水平,有不当之处恳请指正。原文网址:https://blog.seg…

小心使用tf.image.resize_images,填坑经验分享给你

上上周,我在一个项目上线前对模型进行测试时出现了问题,这个问题困扰了我近两周,终于找到了问题根源,做个简短总结分享给你,希望对大家有帮助。 问题描述: 线上线下测试结果不一致,且差异很大…

PID控制器开发笔记之十:步进式PID控制器的实现

对于一般的PID控制系统来说,当设定值发生较大的突变时,很容易产生超调而使系统不稳定。为了解决这种阶跃变化造成的不利影响,人们发明了步进式PID控制算法。 1、步进式PID的基本思想 所谓步进式PID算法,实际就是在设定值发生阶跃…

AutoML 与 Bayesian Optimization 概述

1. AutoML 概述 AutoML是指对于一个超参数优化任务(比如规定计算资源内,调整网络结构找到准确率最高的网络),尽量减少人为干预,使用某种学习机制,来调节这些超参数,使得目标问题达到最优。 这…

使用Eclipse进行Makefile项目

最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关在Eclipse中使用Makefile创建项目的文章,文章讲解清晰明了非常不错,所以呢没人将其翻译过来供各位同仁参考。当然限于个人水平,有不当之处恳请指正。原文网址:https://m…

Git commit 常用表情快速查询

git commit 的时候,添加表情符号可以更好的表明本次提交的性质,也更有趣。 常用表情符号如下: emoji emoji代码 commit说明 🎨 (调色板) :art: 改进代码结构/代码格式 ⚡️ (闪电) :zap: 提升性能 🐎 (赛马)…

C语言学习及应用笔记之一:C运算符优先级及使用问题

C语言中的运算符绝对是C语言学习和使用的一个难点,因为在2011版的标准中,C语言的运算符的数量超过40个,甚至比关键字的数量还要多。这些运算符有单目运算符、双目运算符以及三目运算符,又涉及到左结合和右结合的问题,真…

Docker用法整理

Docker教程推荐 两个不错的参考资料&#xff1a; https://yeasy.gitbooks.io/docker_practice/content/introduction/ https://www.cnblogs.com/bethal/p/5942369.html 镜像&#xff1a; 查看镜像 docker images ls 删除镜像 docker image rm <image id> 拉取镜像 …

使用FreeRTOS进行性能和运行时分析

在MCU on Eclipse网站上看到Erich Styger在2月25日发的博文&#xff0c;一篇关于使用FreeRTOS进行性能和运行分析的文章&#xff0c;本人觉得很有启发&#xff0c;特将其翻译过来以备参考。当然限于个人水平&#xff0c;有描述不当之处恳请指正。原文网址&#xff1a;https://m…

生成微信公众号对应二维码的两种简单方法

方法1 在浏览器中打开下面的链接 https://open.weixin.qq.com/qr/code?usernameName 其中Name替换为对应公众号的微信号 例如&#xff0c;我们打算生成公众号 AI算法联盟 的二维码 只需首先关注这个公众号 在其详细信息中&#xff0c;查找到微信号信息&#xff1a;AIReport…

在Amazon FreeRTOS V10中使用运行时统计信息

在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文&#xff0c;一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章&#xff0c;本人觉得很有启发&#xff0c;特将其翻译过来以备参考。原文网址&#xff1a;https://mcuoneclipse.com/2018/08/02/tutorial-using-…