Ubuntu 安装 CUDA 与 CUDNN GPU加速引擎
一、NVIDIA(英伟达)显卡驱动安装
sudo apt purge nvidia*
删除以前安装的NVIDIA驱动版本,重新安装。 1.1. 关闭系统自带驱动nouveau
注意!在安装NVIDIA驱动以前需要禁止系统自带显卡驱动nouveau:可以先通过指令lsmod | grep nouveau
查看nouveau驱动的启用情况,如果有输出表示nouveau驱动正在工作,如果没有内容输出则表示已经禁用了nouveau。
- 我的电脑有有输出,表示nouveau启动了,下面进行nouveau的禁用:
- 在终端输入
sudo gedit /etc/modprobe.d/blacklist.conf
弹出blacklist.conf文件:
- 在blacklist.conf文件末尾加上这两行,并保存:
blacklist nouveau
options nouveau modeset=0
- 然后在终端中输入:
sudo update-initramfs -u #应用更改
- 重启,就禁止了ubuntu20.04自带的nouveau显卡驱动了,接下来我们就可以安心的安装NVIDIA510.54版本的驱动程序了。
2.2. NVIDIA驱动安装
ubuntu20.04 安装NVIDIA驱动很容易,只只需要打开系统设置->软件和更新->附加驱动->选择NVIDIA驱动->应用更改。该界面会自动根据电脑上的GPU显示推荐的NVIDIA显卡驱动。
NVIDIA(英伟达)显卡驱动安装完成后,在终端输入nvidia-smi
输出如下图所示的结果就表示安装成功了。下图中绿色框内表明,安装的驱动支持的CUDA最高版本为11.4(注意这里需要重新启动电脑)。
二、安装CUDA
2.1. 下载与安装CUDA
如下图所示,这里以CUDA11.0.2为例,介绍ubuntu20.04系统上CUDA的安装。我们可以从NVIDIA官网CUDA下载页面,网址为https://developer.nvidia.com/cuda-toolkit-archive,点击CUDA Toolkit 11.0.2
下载相应版本的CUDA11.0.2。
在如下图所示的界面,以此选择Linux
→\to→x86_64
→\to→Ubuntu
→\to→20.04
。然后弹出三种安装方法,根据安装经验这里推荐采用runfile(local)
方法,即选择如下图中的红圈中的选项。这是由于CUDA的安装过程需要很多依赖库文件,CUDA的run
文件虽然比另外两种安装方法的文件大,但是它包含了所有的依赖库文件,所以采用相对来说很容易安装成功。
在安装CUDA11.0之前需要首先安装一些相互依赖的库文件:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
下面为安装CUDA11.0.2的Ubuntu安装指令:
wget https://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run
sudo sh cuda_11.0.2_450.51.05_linux.run
运行上面指令后,会弹出如下界面,点击Continue
,然后再输入accept
。
接着,如下图所示,在弹出的界面中通过Enter
键,取消Driver
和450.51.05
的安装,然后点击Install
,等待
2.2. 配置CUDA的环境变量
CUDA安装完成后,需要配置变量环境才能正常使用。首先在终端输入sudo gedit ~/.bashrc
打开如下图所示的.bashrc
文件。
然后,如下图所示在.bashrc
文件的最后添加以下CUDA环境变量配置信息(我从不同的文章中看到这里添加的信息不仅相同,目前还不太清楚具体含义,所以这里仅仅罗列出它们):
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64
或
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
注意:上面的CUDA环境变量配置方法有很多,本文的配置方法中的cuda不要指定具体的版本,主要是为了电脑中多个CUDA版本的切换。
最后,在终端输入source ~/.bashrc
或者重新启终端使之生效。这时,我们就可以在终端输入nvcc -V
查看CUDA的安装信息,如下图所示,至此CUDA安装成功。
2.3. CUDA测试
系统安装CUDA包括两个部分:NVIDIA CUDA GPU计算工具包和NVIDIA CUD示例包两个部分。
如下图所示,Ubuntu20.04系统会默认地将CUDA的NVIDIA GPU计算工具包安装到/usr/local/
文件夹下面,可以看到该文件夹下多了两个文件夹cuda
和cuda-11.0
。
对CUDA安装是否成功,需要进入NVIDIA CUDA示例包,其位于/home/liang/NVIDIA_CUDA-11.0_Samples
内,在该文件夹下打开终端,并输入make
。然后进入1_Utilities/deviceQuery
文件夹,并在终端执行./deviceQuery
命令,如下result=PASS
则表示安装成功。
三、cuDNN的安装与检测
3.1. cuDNN的安装
从NVIDIA官网的cudnn下载页面上下载与安装CUDA对应的cudnn,网址为https://developer.nvidia.com/rdp/cudnn-download。选择Ubuntu20.04系统下,CUDA11.0.2对应的CUDNN v8.0.5版本,如下图所示:
对下载的cudnn-11.0-linux-x64-v8.0.5.39.tgz
进行解压操作,得到一个文件夹cuda
,命令为:
tar -zxvf cudnn-11.0-linux-x64-v8.0.5.39.tgz
然后,使用下面两条指令复制cuda
文件夹下的文件到/usr/local/cuda-11.0/lib64/
和/usr/local/cuda-11.0/include/
中。
cp cuda/lib64/* /usr/local/cuda-11.0/lib64/
cp cuda/include/* /usr/local/cuda-11.0/include/
拷贝完成后,我们可以使用如下的命令查看CUDNN的信息:
cat /usr/local/cuda-11.0/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
3.2. CUDNN的检测
从NVIDIA官网的cudnn下载页面上下载三个.deb
格式的检测文件,如下图所示:
在终端输入如下命令安装下载的三个.deb
格式的检测文件:
dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb
dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb
dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb
通过上面三条指令,CUDNN的测试文件会自动安装在系统的/usr/src/cudnn_samples_v8
文件夹下,进入mnistCUDNN
下,执行命令make clean && make
。如果结果如下图所示,则表示CUDNN安装成功。
四、CUDA的卸载
进入到/usr/local/cuda-11.0/bin
目录下,而不是cuda
目录。然后打开终端,输入sudo ./cuda-uninstaller
。
输入命令后,弹出如下界面,通过回车键
选中三个选项,最后选中Done
。执行完下面指令后,上面的cuda
文件就删除了。
最后,在终端输入命令sudo rm -rf /usr/local/cuda-11.0
,就可以最终删除安装CUDA11.0和CUDNN v8.0.5了。
相关文章:
Ubuntu 安装 CUDA 与 CUDNN GPU加速引擎
一、NVIDIA(英伟达)显卡驱动安装 NVIDIA显卡驱动可以通过指令sudo apt purge nvidia*删除以前安装的NVIDIA驱动版本,重新安装。 1.1. 关闭系统自带驱动nouveau 注意!在安装NVIDIA驱动以前需要禁止系统自带显卡驱动nouveau…...
pdf文件太大如何处理?教你pdf压缩简单方法
PDF文件过大,是很多人在使用PDF文件时都遇到过的一个常见问题,过大的PDF文件不仅会占用大量的存储空间,还会影响文件传输和处理效率,下面给大家总结了几个方法,帮助大家解决PDF文件过大的问题。 方法一:嗨格…...
Nacos使用教程(二)——nacos注册中心(1)
文章目录 Nacos vs Eureka介绍架构设计Nacos架构Eureka架构 功能特性服务注册与发现配置管理健康检查 生态系统支持可用性与稳定性总结 Nacos中的CAP原则介绍CAP原则一致性(Consistency)可用性(Availability)分区容错性࿰…...
蓝桥杯2023年第十四届省赛真题-买瓜--C语言题解
目录 蓝桥杯2023年第十四届省赛真题-买瓜 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-买瓜 时间限制: 3s 内存限制: 320MB 提交: 796 解决: 69 题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个…...
R语言进行孟德尔随机化+meta分析(1)---meta分析基础
目前不少文章用到了孟德尔随机化meta分析,今天咱们也来介绍一下,孟德尔随机化meta其实主要就是meta分析的过程,提取了孟德尔随机化文章的结果,实质上就是个meta分析,不过多个孟德尔随机化随机化的结果合并更加加强了结…...
网络安全第一次作业
1、什么是防火墙 防火墙是一种网络安全系统,它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问,同时允许合法通信通过。 防火墙可以在硬件、软件或两者的组合中实现,并且可以配置为根…...
idea设置gradle
1、不选中 2、下面选specified location 指定gradle目录...
基于Elasticsearch的多文档检索 比如 商品(goods)、案例(cases)
概述 Elasticsearch多文档聚合检索 详细 记得把这几点描述好咯:需求(要做什么) 代码实现过程 项目文件结构截图 演示效果 应用场景 我们需要在五种不同的文档中检索数据。 比如 商品(goods)、案例(ca…...
9月18日,每日信息差
今天是2023年09月19日,以下是为您准备的11条信息差 第一、江苏无锡首次获得6000年前古人类DNA 第二、全球天然钻石价格暴跌。数据显示,国际钻石交易所钻石价格指数在2022年3月达到158的历史峰值,之后一路下跌到目前的110左右,创…...
基于FPGA实现FPDLINK III
功能概述 本模块主要包含FPDLINKIII/CML收发信号与HDMI/SDI/USB信号、千兆网络信号,支持客户按照按照指定功能定制 当前默认功能为FPD LINK III/CML转为HDMI/SDI/UVC信号 性能参数 名称 描述 供电接口 DC12V FPD LINK RX GM8914 FPD LINK TX GM8913 千兆网…...
[补题记录] Atcoder Beginner Contest 309(E)
URL:https://atcoder.jp/contests/abc309 目录 E Problem/题意 Thought/思路 解法一: 解法二: Code/代码 E Problem/题意 一个家庭有 N 个人,根节点为 1,给出 2 ~ N 的父节点。一共购买 M 次保险,每…...
【HarmonyOS】解决API6 WebView跳转外部浏览器问题、本地模拟器启动黑屏
【问题描述1】 HarmonyOS API6 Java开发中使用WebView组件,如果网页中有跳转链接,点击会跳转到手机系统浏览器。 【解决方案】 解决这个问题的方法就是给WebView这种自定义的WebAgent对象。具体代码如下: WebConfig webConfigthis.webView…...
给出三个整数,判断大小
7-2 比较大小 给出三个整数,判断大小。 输入格式: 给出三个整数a,b,c 输出格式: 在一行中依次从小到大的顺序输出,两数之间有一个空格,无多余空格。 输入样例: 在这里给出一组输入。例如: 2 1 5 输出样例: 在这里给出相应的输…...
优化软件系统,解决死锁问题,提升稳定性与性能 redis排队下单
项目背景: 随着用户数量的不断增加,我们的速卖通小管家软件系统面临了一个日益严重的问题:在从存储区提供程序的数据读取器中进行读取时,频繁出现错误。系统报告了一个内部异常: 异常信息如下: 从存储区提供程序的数…...
MyBatisPlus 底层用 json 存储,Java 仍然使用 对象操作
PO 类的字段定义为一个对象,然后使用以下注解修饰 TableField(typeHandler JacksonTypeHandler.class) 当然 jsonTypeHandler 有多种可以选择...
发送验证码倒计时 防刷新重置!!!
需求:发送验证码,每60s可点击发送一次,倒计时中按钮不可点击,且刷新页面倒计时不会重置 可用以下方式避免刷新页面时,倒计时重置 localStorage本地缓存方式 思路: 1.记录倒计时的时间 2.页面加载时&…...
OpenCV项目开发实战--forEach的并行像素访问与其它方法的性能比较
在本教程中,我们将比较Mat 类的forEach方法与 OpenCV 中访问和转换像素值的其他方法的性能。我们将展示forEach如何比简单地使用at方法甚至有效地使用指针算术快得多。 OpenCV 内部有一些隐藏的宝石,有时并不为人所知。这些隐藏的宝石之一是Mat 类的forEach方法,它利用计算…...
cv::Mat 的常见操作方法
cv::Mat是OpenCV库中用于处理图像和矩阵的主要数据结构。以下是一些常见的cv::Mat操作方法: 创建和初始化 cv::Mat::Mat(): 创建一个空的cv::Mat对象。cv::Mat::Mat(int rows, int cols, int type): 创建一个指定行数、列数和数据类型的cv::Mat对象。cv::Mat::Mat(i…...
JVM——11.JVM小结
这篇文章我们来小结一下JVM JVM,即java虚拟机,是java代码运行时的环境。我们从底层往上层来说,分别是硬件部分,操作系统,JVM,jre,JDK,java代码。JVM是直接与操作系统打交道的。JVM也…...
月木学途开发 2.前台用户模块
概述 效果展 数据库设计 会员表 DROP TABLE IF EXISTS user_type; CREATE TABLE user_type (userTypeId int(11) NOT NULL AUTO_INCREMENT,userTypeName varchar(255) DEFAULT NULL,userTypeDesc varchar(255) DEFAULT NULL,PRIMARY KEY (userTypeId) ) ENGINEInnoDB AUTO_I…...
buuctf-ciscn_s_3
一、srop 参考文章-博客园-wudiiv11(作者)-BUUCTF-ciscn_2019_s_3 参考文章-博客园-z2yh(作者)-Srop 原理与利用方法 vlun函数中没有分配栈帧(指rsp没有增长,也没有压入父函数的rbp,这也导致…...
3D模型格式转换工具HOOPS Exchange协助Epic Games实现CAD数据轻松导入虚幻引擎
一、面临的挑战 Epic Games最为人所知的身份可能是广受欢迎的在线视频游戏Fortnite的开发商,但它也是虚幻引擎背后的团队,虚幻引擎是一种实时3D创作工具,为世界领先的游戏提供动力,并且也被电影电视、建筑、汽车、制造、模拟等领…...
Linux- inode vnode
什么是inode inode 是 UNIX 和 UNIX-like 操作系统中的一个关键概念。它代表了文件系统中文件或目录的元数据。每个文件和目录在文件系统中都有一个与之关联的 inode。这个数据结构存储了关于文件的所有信息,除了其名称和实际数据之外。 以下是 inode 中通常包含的…...
不来看看?通过Python实现贪吃蛇小游戏
🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《Python》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,这个专…...
C# linq初探 使用linq查询数组中元素
使用linq进行数组查询 输出数组中全部的偶数并升序输出结果 写法1: int[] numbers { 5, 10, 8, 3, 6, 12 }; //查询的数组var numqurey from num in numberswhere num % 2 0 //按照条件过滤orderby numselect num;foreach (var num in numqurey){Console.Writ…...
使用线程池进行任务处理
线程池 线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分…...
ES6之Map和Set有什么不同?
一、Map 1.定义 Map是ES6提供的一种新的数据结构,它是键值对的集合,类似于对象,但是键的范围不限于字符串,各种类型的值都可以当做键。 Object结构是“字符串-值”的对应,Map结构则是“值-值”的对应 2.代码示例 M…...
Java中的集合
Java中的集合分为单列集合和双列集合,单列集合顶级接口为Collection,双列集合顶级接口为Map。 Collection 的子接口有两个:List和Set。 List 接口的特点:元素可重复,有序(存取顺序)。 List 接…...
9.4.2servlet基础2
一.SmartTomcat 1.第一次使用需要进行配置. 二.异常处理 1.404:浏览器访问的资源,在服务器上不存在. a.检查请求的路径和服务器配置的是否一致(大小写,空格,标点符号). b. 确认webapp是否被正确加载(检查web.xml没有/目录错误/内容错误/名字拼写错误)(多多关注日志信息). 2…...
嵌入式学习 - 用电控制电
目录 前言: 1、继电器 2、二极管 3、三极管 3.1 特殊的三极管-mos管 3.2 npn类型三极管 3.3 pnp类型三极管 3.4 三极管的放大特性 3.5 mos管和三极管的区别 前言: 计算机的工作的核心原理:用电去控制电。 所有的电子元件都有数据手册…...
沈阳室内设计公司排名/seo快速排名优化方式
Hadoop2.7.3 Writable 序列化之二1. Hadoop序列化背景或原因2. Hadoop Writable机制3. 实验内容3.1 思路3.2 编写HadoopPerson类3.3 编写测试类4. 实验结果4.1 调用ser()序列化后文件内容如下4.1 调用反序列化方法deSer()结果如下1. Hadoop序列化背景或原因 Java序列化会附带额…...
vps设置网站访问用户权限/网络广告投放网站
为什么80%的码农都做不了架构师?>>> 首先登录oracle,进入jdk8下载页面: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 找到需要下载得版本,并获取下载链接地址:…...
营销型网站建设公司哪家好哪个好/上海seo推广服务
目录Flink组件source基于本地集合的source基于文件的 source基于网络套接字的 source自定义的 source自定义source尝试自定义MySQL数据源接入,四种不同模式继承SourceFunction继承RichSourceFunctiontransformmap传入Scala函数传入Java函数继承MapFunction继承RichM…...
在中国可以做国外的域名网站吗/汽车营销活动策划方案
【其它】Task: Talk about the poster of a performance on the Double【单选题】下列何项不属于吊车荷载?【单选题】有甲、乙、丙、丁四位同学,用螺旋测微计测量一根铜棒的直径,各人所得的结果表达如下,请问正确的结果表达是 (5.0分)【单选题】十进制数92转换为二进制数和十六…...
安徽六安彩礼一般给多少/百度 seo 工具
查接口找到的,分享给大家,希望对大家以后开发有用 火车车次查询-余票查询--Api接口 1.来自12306的火车车次数据 使用12306网站的接口,查询余票。此接口采集自这里。全国火车站代号字典,下载。火车票余票查询 http://dynamic.123…...
网站关于我们怎么做/百度大数据
定义函数function 函数名 {函数的功能体......}函数名(){函数的功能体......}如何调用函数函数名函数的使用规则?1)先定义后调用,可以只定义不调用2)定义放上…...