本文主要介绍了在Ubuntu中安装和卸载CUDA和CUDNN的实现。通过示例代码进行了非常详细的介绍,对于大家的学习或者工作都有一定的参考价值。有需要的朋友就跟着下面的边肖学习吧。
目录
前言安装显卡驱动程序卸载CUDA安装CUDA测试安装是否成功资源
前言
最近在学习如何在各种图形驱动版本中安装和使用PaddlePaddle,所以也在学习如何在Ubuntu中安装和卸载CUDA和CUDNN。在学习过程中,顺便记录下学习过程。供大家学习,也是为了加强记忆。本文以CUDA 8.0和CUDNN 7.05的卸载为例,以CUDA 10.0和CUDNN 7.4.2的安装为例。
安装显卡驱动
禁用nouveau驱动
sudo vim/etc/modprobe . d/black list . conf
在案文末尾增加:
黑名单新
选项新模式集=0
然后执行:
sudo更新-initramfs -u
重新启动后,执行以下命令。如果没有屏幕输出,禁用nouveau是成功的:
新希腊
下载驱动
:官网Lang=cn,根据自己的显卡下载相应版本的显卡驱动。比如我的显卡是RTX2070:
下载后,你会得到一个安装包。不同版本的文件名可能不同:
NVIDIA-Linux-x86_64-410.93.run
卸载旧驱动器
需要在命令界面中执行以下操作。执行以下快捷键进入命令界面并登录:
Ctrl-Alt F1
执行以下命令禁用X-Window服务,否则无法安装显卡驱动程序:
sudo服务灯dm停止
执行以下三个命令卸载原始显卡驱动程序:
sudo apt-get remove - purge nvidia*
sudo chmod x NVIDIA-Linux-x86 _ 64-410.93 . run
须藤。/NVIDIA-Linux-x86 _ 64-410.93 . run-卸载
安装新驱动
您可以通过直接执行驱动程序文件来安装新的驱动程序,这始终是默认设置:
须藤。/NVIDIA-Linux-x86 _ 64-410.93 . run
执行以下命令启动X-Window服务
sudo服务灯启动
最后,执行restart命令来重启系统:
重新启动
注意:在系统重启后重复登录的情况下,大多数情况下安装了错误版本的图形驱动程序。你需要下载你自己机器上安装的显卡版本。
卸载CUDA
为什么当初我要卸载CUDA?这是因为我换了显卡RTX2070,原来装的是CUDA 8.0和CUDNN 7.0.5,不能正常工作。我需要安装CUDA 10.0和CUDNN 7.4.2,所以要先卸载原来的CUDA。注意,下面的命令都是在root下操作的。
卸载cuda非常简单。一个命令就够了。主要执行的是CUDA自带的卸载脚本。读者应根据他们的CUDA版本找到卸载脚本:
sudo/usr/local/cuda-8.0/bin/uninstall _ cuda _ 8.0 . pl
卸载后,还有一些剩余的文件夹。之前装的是CUDA 8.0。可以一起删除:
sudo rm -rf /usr/local/cuda-8.0/
即使卸载了CUDA。
安装CUDA
安装的CUDA和CUDNN版本:
CUDA 10.0
CUDNN 7.4.2
接下来的安装步骤都在root下。
下载和安装CUDA
我们可以在官网下载页面:CUDA10,
下载与自己系统版本匹配的CUDA。页面如下:
下载完成后,授予文件执行权限:
chmod x cuda _ 10 . 0 . 130 _ 410.48 _ Linux . run
执行安装包并开始安装:/cuda _ 10 . 0 . 130 _ 410.48 _ Linux . run
安装后,您需要阅读说明。可以用Ctrl C直接读,也可以用空格键慢慢读。然后配置它。我在这里解释一下:
(你同意条款吗?您必须同意继续安装。)
接受/拒绝/退出:接受
(此处不要安装驱动,因为已经安装了最新的驱动,否则可能会安装旧版的显卡驱动,导致重复登录)
安装Linux-x86_64 410.48的NVIDIA加速图形驱动?
(y)es/(n)o/(q)uit: n
安装CUDA 10.0工具包?(不管有没有安装CUDA 10,这里都必须安装)
(y)es/(n)o/(q)uit: y
输入工具包位置(安装路径,使用默认,直接输入即可)
[默认为/usr/local/cuda-10.0 ]:
你想在/usr/local/cuda安装一个符号链接吗?(同意创建软链接)
(y)es/(n)o/(q)uit: y
安装CUDA 10.0示例?(不用安装测试,本身就有了)
(y)es/(n)o/(q)uit: n
在/usr/local/cuda-10.0中安装库达工具包.(开始安装)
安装完成之后,可以配置他们的环境变量,在vim ~/.bashrc的最后加上以下配置信息:
导出CUDA_HOME=/usr/local/cuda-10.0
导出LD _ LIBRARY _ PATH=$ { CUDA _ HOME }/lib 64
导出路径=${CUDA_HOME}/bin:${PATH}
最后使用命令来源~/。bashrc使它生效。
可以使用命令nvcc -V查看安装的版本信息:
测试@测试:~$ nvcc -V
nvcc:NVIDIA Cuda编译器驱动程序
版权所有(c) 2005-2018年英伟达公司
建于2018年8月25日星期六21时08分01秒
库达编译工具,10.0版,10.0.130版
测试安装是否成功
执行以下几条命令:
CD/usr/local/cuda-10.0/samples/1 _实用程序/设备查询
制造。/deviceQuery
正常情况下输出:/deviceQuery正在启动.
库达设备查询(运行时API)版本(库达特静态链接)
检测到一个支持库达的设备
设备0:“GeForce RTX 2070”
库达驱动程序版本/运行时版本10.0/10.0
库达功能主/次版本号:7.5
全局内存总量:7950兆字节(8335982592字节)
(36)多处理器,(64) CUDA内核/MP: 2304个库达内核
国家政治保卫局。参见OGPU最大时钟速率:1620兆赫(1.62千兆赫)
存储器时钟速率:7001兆赫
内存总线宽度:256位
L2缓存大小:4194304字节
最大纹理尺寸大小(x,y,z) 1D=(131072),2D=(131072,65536),3D=(16384,16384,16384)
最大分层1D纹理大小,(数量)层1D=(32768),2048层
最大分层2D纹理大小,(数字)层2D=(32768,32768),2048层
常量内存总量:65536字节
每个块的共享内存总量:49152字节
每个模块可用的寄存器总数:65536
经线尺寸:32
每个多处理器的最大线程数:1024
每个块的最大线程数:1024
螺纹块的最大尺寸(x,y,z): (1024,1024,64)
网格尺寸的最大尺寸(x,y,z): (2147483647,65535,65535)
最大内存间距:2147483647字节
纹理对齐:512字节
并发复制和内核执行:有3个复制引擎
内核的运行时间限制:是
集成国家政治保卫局。参见OGPU共享主机内存:否
支持主机页锁定内存映射:是
表面对齐要求:是
设备支持ECC:已禁用
设备支持统一寻址(UVA):是
设备支持计算抢占:是
支持协作内核启动:是
支持多设备合作内核启动:是
设备计算机与其外围设备互联标准域ID /总线ID /位置ID: 0/1/0
计算模式:
默认(多个主机线程可以同时使用* cudaSetDevice()和设备)
设备查询,CUDA驱动程序=CUDART,CUDA驱动程序版本=10.0,CUDA运行时版本=10.0,NumDevs=1
结果=通过
下载和安装CUDNN
进入到CUDNN的下载官网:https://开发者。英伟达。com/RDP/cud nn-下载,然点击[计]下载开始选择下载版本,当然在下载之前还有登录,选择版本界面如下,我们选择用于Linux操作系统的cuDNN库:
下载之后是一个压缩包,如下:
cud nn-10.0-Linux-x64-v 7。4 .2 .24 .tgz
然后对它进行解压,命令如下:
tar-zxvf cud nn-10.0-Linux-x64-V7。4 .2 .24 .tgz
解压之后可以得到以下文件:
cuda/include/cudnn.h
cuda/NVIDIA _ SLA _ cud nn _ support。文本文件(textfile)
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.4.2
cuda/lib64/libcudnn_static.a
使用以下两条命令复制这些文件到库达目录下:
CP cuda/lib 64/*/usr/local/cuda-10.0/lib 64/
CP cuda/include/*/usr/local/cuda-10.0/include/
拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:
cat/usr/local/cuda/include/cud nn。h | grep cud nn _ MAJOR-A 2
测试安装结果
到这里就已经完成了CUDA 10和CUDNN 7.4.2的安装。可以安装对应的Pytorch的国家政治保卫局。参见国家政治保卫局版本测试是否可以正常使用了。安装如下:
pip 3安装https://下载。py火炬。org/whl/Cu 100/torch-1。0 .0-cp35-cp35m-Linux _ x86 _ 64。whl
pip3安装火炬视觉
然后使用以下的程序测试安装情况:
进口火炬
将torch.nn作为神经网络导入
导入火炬. nn .功能为F
将火炬. optim作为使最优化导入
将火炬.后端. cudnn导入为cudnn
从火炬视觉导入数据集、转换
类网(nn .模块):
def __init__(self):
超级(净,自)。__init__()
self.conv1=nn .Conv2d(1,10,kernel_size=5)
self.conv2=nn .Conv2d(10,20,kernel_size=5)
self.conv2_drop=nn .Dropout2d()
self.fc1=nn .线性(320,50)
self.fc2=nn .线性(50,10)
向前定义(自身,x):
x=f . relu(f . max _ pool 2d(self。con v1(x),2))
x=f . relu(f . max _ pool 2d(self。con v2 _ drop(self。con v2(x)),2))
x=x.view(-1,320)
x=F.relu(self.fc1(x))
x=F。辍学(x,培训=自我培训)
x=self.fc2(x)
return F.log_softmax(x,dim=1)
定义训练(模型、设备、训练加载器、优化器、时期):
model.train()
对于batch_idx,枚举(火车_装载机)中的(数据,目标):
数据,目标=数据。到(设备),目标。到(设备)
optimizer.zero_grad()
输出=模型(数据)
loss=F.nll_loss(输出,目标)
loss.backward()
optimizer.step()
如果batch_idx % 10==0:
print( Train Epoch:{ }[{ }/{ }({:0f } %)] t损失:{:6f } .格式(
epoch,batch_idx * len(数据)、len(train_loader.dataset),
100.* batch_idx/len(train_loader),loss.item()))
def main():
cudnn.benchmark=True
火炬。手册_种子(1)
device=torch.device(cuda )
kwargs={num_workers: 1, pin_memory: True}
火车_装载机=火炬。utils。数据。数据加载器(
数据集MNIST(’./data ,训练=真,下载=真,
转换=转换。撰写([
转变ToTensor(),
转变。规格化((0.1307),(0.3081),)
])),
batch_size=64,shuffle=True,**kwargs)
model=Net().至(设备)
optimizer=optim .新加坡元(模型参数(),lr=0.01,动量=0.5)
对于范围(1,11)内的纪元:
训练(模型、设备、训练加载器、优化器、时期)
if __name__==__main__ :
主()
如果正常输出一下以下信息,证明已经安装成了:
训练历元:1 [0/60000 (0%)]损失:2.365850
训练时期:1 [640/60000 (1%)]损失:2.305295
列车运行时间:1 [1280/60000 (2%)]损失:2.301407
训练时期:1 [1920/60000 (3%)]损失:2.316538
训练时期:1 [2560/60000 (4%)]损失:2.255809
训练时期:1 [3200/60000 (5%)]损失:2.224511
训练时期:1 [3840/60000 (6%)]损失:2.216569
训练时期:1 [4480/60000 (7%)]损失:2.181396
参考资料
https://developer.nvidia.com
https://www.cnblogs.com/luofeel/p/8654964.html
到此这篇关于人的本质安装和卸载库达和CUDNN的实现的文章就介绍到这了,更多相关人的本质安装和卸载库达和CUDNN内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!