Ubuntu安装和卸载CUDA和CUDNN的实现
<div id="navCategory"><p>
<b>目录</b></p>
<ul class="first_class_ul">
<li>
前言
</li>
<li>
安装显卡驱动
</li>
<li>
卸载CUDA
</li>
<li>
安装CUDA
</li>
<li>
测试安装是否成功
</li>
<li>
参考资料
</li>
</ul>
</div>
<p class="maodian">
</p>
<h3>
前言</h3>
<p>
</p>
<p>
最近在学习PaddlePaddle在各个显卡驱动版本的安装和使用,所以同时也学习如何在Ubuntu安装和卸载CUDA和CUDNN,在学习过程中,顺便记录学习过程。在供大家学习的同时,也在加强自己的记忆。本文章以卸载CUDA 8.0 和 CUDNN 7.05 为例,以安装CUDA 10.0 和 CUDNN 7.4.2 为例。</p>
<p class="maodian">
</p>
<h3>
安装显卡驱动</h3>
<p>
</p>
<p>
<strong>禁用nouveau驱动</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_425301">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">vim </code><code class="bash plain">/etc/modprobe</code><code class="bash plain">.d</code><code class="bash plain">/blacklist</code><code class="bash plain">.conf</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
在文本最后添加:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_812721">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">blacklist nouveau</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">options nouveau modeset=0</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后执行:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_320526">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">update-initramfs -u</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
重启后,执行以下命令,如果没有屏幕输出,说明禁用nouveau成功:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_441494">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">lsmod | </code><code class="bash functions">grep</code> <code class="bash plain">nouveau</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>下载驱动</strong></p>
<p>
官网下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn,根据自己显卡的情况下载对应版本的显卡驱动,比如笔者的显卡是RTX2070:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="Ubuntu安装和卸载CUDA和CUDNN的实现" alt="Ubuntu安装和卸载CUDA和CUDNN的实现" src="https://zhuji.jb51.net/uploads/img/202305/8d98fd033d9f89bb7d508ec765b8cc1c.jpg"></p>
<p>
下载完成之后会得到一个安装包,不同版本文件名可能不一样:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_193643">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">NVIDIA-Linux-x86_64-410.93.run</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
卸载旧驱动</p>
<p>
以下操作都需要在命令界面操作,执行以下快捷键进入命令界面,并登录:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_871686">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">Ctrl-Alt+F1</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行以下命令禁用X-Window服务,否则无法安装显卡驱动:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_652950">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">service lightdm stop</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行以下三条命令卸载原有显卡驱动:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_363788">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get remove --purge nvidia*</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">sudo</code> <code class="bash functions">chmod</code> <code class="bash plain">+x NVIDIA-Linux-x86_64-410.93.run</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">.</code><code class="bash plain">/NVIDIA-Linux-x86_64-410</code><code class="bash plain">.93.run --uninstall</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>安装新驱动</strong></p>
<p>
直接执行驱动文件即可安装新驱动,一直默认即可:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_248418">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">.</code><code class="bash plain">/NVIDIA-Linux-x86_64-410</code><code class="bash plain">.93.run</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行以下命令启动X-Window服务</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_781072">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">service lightdm start</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
最后执行重启命令,重启系统即可:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_463222">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">reboot</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
注意: 如果系统重启之后出现重复登录的情况,多数情况下都是安装了错误版本的显卡驱动。需要下载对应本身机器安装的显卡版本。</p>
<p class="maodian">
</p>
<h3>
卸载CUDA</h3>
<p>
</p>
<p>
为什么一开始我就要卸载CUDA呢,这是因为笔者是换了显卡RTX2070,原本就安装了CUDA 8.0 和 CUDNN 7.0.5不能够正常使用,笔者需要安装CUDA 10.0 和 CUDNN 7.4.2,所以要先卸载原来的CUDA。注意以下的命令都是在root用户下操作的。</p>
<p>
卸载CUDA很简单,一条命令就可以了,主要执行的是CUDA自带的卸载脚本,读者要根据自己的cuda版本找到卸载脚本:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_979168">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">/usr/local/cuda-8</code><code class="bash plain">.0</code><code class="bash plain">/bin/uninstall_cuda_8</code><code class="bash plain">.0.pl</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
卸载之后,还有一些残留的文件夹,之前安装的是CUDA 8.0。可以一并删除:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_243537">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash functions">rm</code> <code class="bash plain">-rf </code><code class="bash plain">/usr/local/cuda-8</code><code class="bash plain">.0/</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
这样就算卸载完了CUDA。</p>
<p class="maodian">
</p>
<h3>
安装CUDA</h3>
<p>
</p>
<p>
安装的CUDA和CUDNN版本:</p>
<ul>
<li>
CUDA 10.0</li>
<li>
CUDNN 7.4.2</li>
</ul>
<p>
接下来的安装步骤都是在root用户下操作的。</p>
<p>
<strong>下载和安装CUDA</strong></p>
<p>
我们可以在官网:CUDA10下载页面,<br>
下载符合自己系统版本的CUDA。页面如下:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="Ubuntu安装和卸载CUDA和CUDNN的实现" alt="Ubuntu安装和卸载CUDA和CUDNN的实现" src="https://zhuji.jb51.net/uploads/img/202305/5930ca231cd267df0f318261140c3520.jpg"></p>
<p>
下载完成之后,给文件赋予执行权限:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_251875">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">chmod</code> <code class="bash plain">+x cuda_10.0.130_410.48_linux.run</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行安装包,开始安装:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_709875">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">.</code><code class="bash plain">/cuda_10</code><code class="bash plain">.0.130_410.48_linux.run</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
开始安装之后,需要阅读说明,可以使用<code>Ctrl + C</code>直接阅读完成,或者使用<code>空格键</code>慢慢阅读。然后进行配置,我这里说明一下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_435191">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">(是否同意条款,必须同意才能继续安装)</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">accept/decline/quit: accept</code>
</div>
<div class="line number3 index2 alt2">
</div>
<div class="line number4 index3 alt1">
<code class="plain plain">(这里不要安装驱动,因为已经安装最新的驱动了,否则可能会安装旧版本的显卡驱动,导致重复登录的情况)</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?</code>
</div>
<div class="line number6 index5 alt1">
<code class="plain plain">(y)es/(n)o/(q)uit: n</code>
</div>
<div class="line number7 index6 alt2">
</div>
<div class="line number8 index7 alt1">
<code class="plain plain">Install the CUDA 10.0 Toolkit?(是否安装CUDA 10 ,这里必须要安装)</code>
</div>
<div class="line number9 index8 alt2">
<code class="plain plain">(y)es/(n)o/(q)uit: y</code>
</div>
<div class="line number10 index9 alt1">
</div>
<div class="line number11 index10 alt2">
<code class="plain plain">Enter Toolkit Location(安装路径,使用默认,直接回车就行)</code>
</div>
<div class="line number12 index11 alt1">
<code class="plain spaces"> </code><code class="plain plain">[ default is /usr/local/cuda-10.0 ]: </code>
</div>
<div class="line number13 index12 alt2">
</div>
<div class="line number14 index13 alt1">
<code class="plain plain">Do you want to install a symbolic link at /usr/local/cuda?(同意创建软链接)</code>
</div>
<div class="line number15 index14 alt2">
<code class="plain plain">(y)es/(n)o/(q)uit: y</code>
</div>
<div class="line number16 index15 alt1">
</div>
<div class="line number17 index16 alt2">
<code class="plain plain">Install the CUDA 10.0 Samples?(不用安装测试,本身就有了)</code>
</div>
<div class="line number18 index17 alt1">
<code class="plain plain">(y)es/(n)o/(q)uit: n</code>
</div>
<div class="line number19 index18 alt2">
</div>
<div class="line number20 index19 alt1">
<code class="plain plain">Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...(开始安装)</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
安装完成之后,可以配置他们的环境变量,在<code>vim ~/.bashrc</code>的最后加上以下配置信息:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_659533">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">export CUDA_HOME=/usr/local/cuda-10.0</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">export LD_LIBRARY_PATH=${CUDA_HOME}/lib64</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">export PATH=${CUDA_HOME}/bin:${PATH}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
最后使用命令<code>source ~/.bashrc</code>使它生效。</p>
<p>
可以使用命令<code>nvcc -V</code>查看安装的版本信息:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_97969">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">test@test:~$ nvcc -V</code>
</div>
<div class="line number2 index1 alt1">
<code class="plain plain">nvcc: NVIDIA (R) Cuda compiler driver</code>
</div>
<div class="line number3 index2 alt2">
<code class="plain plain">Copyright (c) 2005-2018 NVIDIA Corporation</code>
</div>
<div class="line number4 index3 alt1">
<code class="plain plain">Built on Sat_Aug_25_21:08:01_CDT_2018</code>
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">Cuda compilation tools, release 10.0, V10.0.130</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p class="maodian">
</p>
<h3>
测试安装是否成功</h3>
<p>
</p>
<p>
执行以下几条命令:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_985321">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cd</code> <code class="bash plain">/usr/local/cuda-10</code><code class="bash plain">.0</code><code class="bash plain">/samples/1_Utilities/deviceQuery</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">make</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">.</code><code class="bash plain">/deviceQuery</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
正常情况下输出:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterplain" id="highlighter_101180">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="plain plain">./deviceQuery Starting...</code>
</div>
<div class="line number2 index1 alt1">
</div>
<div class="line number3 index2 alt2">
<code class="plain spaces"> </code><code class="plain plain">CUDA Device Query (Runtime API) version (CUDART static linking)</code>
</div>
<div class="line number4 index3 alt1">
</div>
<div class="line number5 index4 alt2">
<code class="plain plain">Detected 1 CUDA Capable device(s)</code>
</div>
<div class="line number6 index5 alt1">
</div>
<div class="line number7 index6 alt2">
<code class="plain plain">Device 0: "GeForce RTX 2070"</code>
</div>
<div class="line number8 index7 alt1">
<code class="plain spaces"> </code><code class="plain plain">CUDA Driver Version / Runtime Version 10.0 / 10.0</code>
</div>
<div class="line number9 index8 alt2">
<code class="plain spaces"> </code><code class="plain plain">CUDA Capability Major/Minor version number: 7.5</code>
</div>
<div class="line number10 index9 alt1">
<code class="plain spaces"> </code><code class="plain plain">Total amount of global memory: 7950 MBytes (8335982592 bytes)</code>
</div>
<div class="line number11 index10 alt2">
<code class="plain spaces"> </code><code class="plain plain">(36) Multiprocessors, ( 64) CUDA Cores/MP: 2304 CUDA Cores</code>
</div>
<div class="line number12 index11 alt1">
<code class="plain spaces"> </code><code class="plain plain">GPU Max Clock rate: 1620 MHz (1.62 GHz)</code>
</div>
<div class="line number13 index12 alt2">
<code class="plain spaces"> </code><code class="plain plain">Memory Clock rate: 7001 Mhz</code>
</div>
<div class="line number14 index13 alt1">
<code class="plain spaces"> </code><code class="plain plain">Memory Bus Width: 256-bit</code>
</div>
<div class="line number15 index14 alt2">
<code class="plain spaces"> </code><code class="plain plain">L2 Cache Size: 4194304 bytes</code>
</div>
<div class="line number16 index15 alt1">
<code class="plain spaces"> </code><code class="plain plain">Maximum Texture Dimension Size (x,y,z) 1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)</code>
</div>
<div class="line number17 index16 alt2">
<code class="plain spaces"> </code><code class="plain plain">Maximum Layered 1D Texture Size, (num) layers 1D=(32768), 2048 layers</code>
</div>
<div class="line number18 index17 alt1">
<code class="plain spaces"> </code><code class="plain plain">Maximum Layered 2D Texture Size, (num) layers 2D=(32768, 32768), 2048 layers</code>
</div>
<div class="line number19 index18 alt2">
<code class="plain spaces"> </code><code class="plain plain">Total amount of constant memory: 65536 bytes</code>
</div>
<div class="line number20 index19 alt1">
<code class="plain spaces"> </code><code class="plain plain">Total amount of shared memory per block: 49152 bytes</code>
</div>
<div class="line number21 index20 alt2">
<code class="plain spaces"> </code><code class="plain plain">Total number of registers available per block: 65536</code>
</div>
<div class="line number22 index21 alt1">
<code class="plain spaces"> </code><code class="plain plain">Warp size: 32</code>
</div>
<div class="line number23 index22 alt2">
<code class="plain spaces"> </code><code class="plain plain">Maximum number of threads per multiprocessor: 1024</code>
</div>
<div class="line number24 index23 alt1">
<code class="plain spaces"> </code><code class="plain plain">Maximum number of threads per block: 1024</code>
</div>
<div class="line number25 index24 alt2">
<code class="plain spaces"> </code><code class="plain plain">Max dimension size of a thread block (x,y,z): (1024, 1024, 64)</code>
</div>
<div class="line number26 index25 alt1">
<code class="plain spaces"> </code><code class="plain plain">Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)</code>
</div>
<div class="line number27 index26 alt2">
<code class="plain spaces"> </code><code class="plain plain">Maximum memory pitch: 2147483647 bytes</code>
</div>
<div class="line number28 index27 alt1">
<code class="plain spaces"> </code><code class="plain plain">Texture alignment: 512 bytes</code>
</div>
<div class="line number29 index28 alt2">
<code class="plain spaces"> </code><code class="plain plain">Concurrent copy and kernel execution: Yes with 3 copy engine(s)</code>
</div>
<div class="line number30 index29 alt1">
<code class="plain spaces"> </code><code class="plain plain">Run time limit on kernels: Yes</code>
</div>
<div class="line number31 index30 alt2">
<code class="plain spaces"> </code><code class="plain plain">Integrated GPU sharing Host Memory: No</code>
</div>
<div class="line number32 index31 alt1">
<code class="plain spaces"> </code><code class="plain plain">Support host page-locked memory mapping: Yes</code>
</div>
<div class="line number33 index32 alt2">
<code class="plain spaces"> </code><code class="plain plain">Alignment requirement for Surfaces: Yes</code>
</div>
<div class="line number34 index33 alt1">
<code class="plain spaces"> </code><code class="plain plain">Device has ECC support: Disabled</code>
</div>
<div class="line number35 index34 alt2">
<code class="plain spaces"> </code><code class="plain plain">Device supports Unified Addressing (UVA): Yes</code>
</div>
<div class="line number36 index35 alt1">
<code class="plain spaces"> </code><code class="plain plain">Device supports Compute Preemption: Yes</code>
</div>
<div class="line number37 index36 alt2">
<code class="plain spaces"> </code><code class="plain plain">Supports Cooperative Kernel Launch: Yes</code>
</div>
<div class="line number38 index37 alt1">
<code class="plain spaces"> </code><code class="plain plain">Supports MultiDevice Co-op Kernel Launch: Yes</code>
</div>
<div class="line number39 index38 alt2">
<code class="plain spaces"> </code><code class="plain plain">Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0</code>
</div>
<div class="line number40 index39 alt1">
<code class="plain spaces"> </code><code class="plain plain">Compute Mode:</code>
</div>
<div class="line number41 index40 alt2">
<code class="plain spaces"> </code><code class="plain plain">< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) ></code>
</div>
<div class="line number42 index41 alt1">
</div>
<div class="line number43 index42 alt2">
<code class="plain plain">deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1</code>
</div>
<div class="line number44 index43 alt1">
<code class="plain plain">Result = PASS</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>下载和安装CUDNN</strong></p>
<p>
进入到CUDNN的下载官网:https://developer.nvidia.com/rdp/cudnn-download,然点击Download开始选择下载版本,当然在下载之前还有登录,选择版本界面如下,我们选择<code>cuDNN Library for Linux</code>:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="Ubuntu安装和卸载CUDA和CUDNN的实现" alt="Ubuntu安装和卸载CUDA和CUDNN的实现" src="https://zhuji.jb51.net/uploads/img/202305/55206bce12339b8119b269913d0a9d4e.jpg"></p>
<p>
下载之后是一个压缩包,如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_135279">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">cudnn-10.0-linux-x64-v7.4.2.24.tgz</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后对它进行解压,命令如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_670391">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">tar</code> <code class="bash plain">-zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
解压之后可以得到以下文件:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_709682">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">cuda</code><code class="bash plain">/include/cudnn</code><code class="bash plain">.h</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">cuda</code><code class="bash plain">/NVIDIA_SLA_cuDNN_Support</code><code class="bash plain">.txt</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">cuda</code><code class="bash plain">/lib64/libcudnn</code><code class="bash plain">.so</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">cuda</code><code class="bash plain">/lib64/libcudnn</code><code class="bash plain">.so.7</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">cuda</code><code class="bash plain">/lib64/libcudnn</code><code class="bash plain">.so.7.4.2</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">cuda</code><code class="bash plain">/lib64/libcudnn_static</code><code class="bash plain">.a</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
使用以下两条命令复制这些文件到CUDA目录下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_522547">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cp</code> <code class="bash plain">cuda</code><code class="bash plain">/lib64/</code><code class="bash plain">* </code><code class="bash plain">/usr/local/cuda-10</code><code class="bash plain">.0</code><code class="bash plain">/lib64/</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">cp</code> <code class="bash plain">cuda</code><code class="bash plain">/include/</code><code class="bash plain">* </code><code class="bash plain">/usr/local/cuda-10</code><code class="bash plain">.0</code><code class="bash plain">/include/</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_4251">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cat</code> <code class="bash plain">/usr/local/cuda/include/cudnn</code><code class="bash plain">.h | </code><code class="bash functions">grep</code> <code class="bash plain">CUDNN_MAJOR -A 2</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>测试安装结果</strong></p>
<p>
到这里就已经完成了CUDA 10 和 CUDNN 7.4.2 的安装。可以安装对应的Pytorch的GPU版本测试是否可以正常使用了。安装如下:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterpy" id="highlighter_937245">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="py plain">pip3 install https:</code><code class="py keyword">/</code><code class="py keyword">/</code><code class="py plain">download.pytorch.org</code><code class="py keyword">/</code><code class="py plain">whl</code><code class="py keyword">/</code><code class="py plain">cu100</code><code class="py keyword">/</code><code class="py plain">torch</code><code class="py keyword">-</code><code class="py value">1.0</code><code class="py plain">.</code><code class="py value">0</code><code class="py keyword">-</code><code class="py plain">cp35</code><code class="py keyword">-</code><code class="py plain">cp35m</code><code class="py keyword">-</code><code class="py plain">linux_x86_64.whl</code>
</div>
<div class="line number2 index1 alt1">
<code class="py plain">pip3 install torchvision</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
然后使用以下的程序测试安装情况:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterpy" id="highlighter_568229">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
<div class="line number45 index44 alt2">
45</div>
<div class="line number46 index45 alt1">
46</div>
<div class="line number47 index46 alt2">
47</div>
<div class="line number48 index47 alt1">
48</div>
<div class="line number49 index48 alt2">
49</div>
<div class="line number50 index49 alt1">
50</div>
<div class="line number51 index50 alt2">
51</div>
<div class="line number52 index51 alt1">
52</div>
<div class="line number53 index52 alt2">
53</div>
<div class="line number54 index53 alt1">
54</div>
<div class="line number55 index54 alt2">
55</div>
<div class="line number56 index55 alt1">
56</div>
<div class="line number57 index56 alt2">
57</div>
<div class="line number58 index57 alt1">
58</div>
<div class="line number59 index58 alt2">
59</div>
<div class="line number60 index59 alt1">
60</div>
<div class="line number61 index60 alt2">
61</div>
<div class="line number62 index61 alt1">
62</div>
<div class="line number63 index62 alt2">
63</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="py keyword">import</code> <code class="py plain">torch</code>
</div>
<div class="line number2 index1 alt1">
<code class="py keyword">import</code> <code class="py plain">torch.nn as nn</code>
</div>
<div class="line number3 index2 alt2">
<code class="py keyword">import</code> <code class="py plain">torch.nn.functional as F</code>
</div>
<div class="line number4 index3 alt1">
<code class="py keyword">import</code> <code class="py plain">torch.optim as optim</code>
</div>
<div class="line number5 index4 alt2">
<code class="py keyword">import</code> <code class="py plain">torch.backends.cudnn as cudnn</code>
</div>
<div class="line number6 index5 alt1">
<code class="py keyword">from</code> <code class="py plain">torchvision </code><code class="py keyword">import</code> <code class="py plain">datasets, transforms</code>
</div>
<div class="line number7 index6 alt2">
</div>
<div class="line number8 index7 alt1">
</div>
<div class="line number9 index8 alt2">
<code class="py keyword">class</code> <code class="py plain">Net(nn.Module):</code>
</div>
<div class="line number10 index9 alt1">
<code class="py spaces"> </code><code class="py keyword">def</code> <code class="py plain">__init__(</code><code class="py color1">self</code><code class="py plain">):</code>
</div>
<div class="line number11 index10 alt2">
<code class="py spaces"> </code><code class="py functions">super</code><code class="py plain">(Net, </code><code class="py color1">self</code><code class="py plain">).__init__()</code>
</div>
<div class="line number12 index11 alt1">
<code class="py spaces"> </code><code class="py color1">self</code><code class="py plain">.conv1 </code><code class="py keyword">=</code> <code class="py plain">nn.Conv2d(</code><code class="py value">1</code><code class="py plain">, </code><code class="py value">10</code><code class="py plain">, kernel_size</code><code class="py keyword">=</code><code class="py value">5</code><code class="py plain">)</code>
</div>
<div class="line number13 index12 alt2">
<code class="py spaces"> </code><code class="py color1">self</code><code class="py plain">.conv2 </code><code class="py keyword">=</code> <code class="py plain">nn.Conv2d(</code><code class="py value">10</code><code class="py plain">, </code><code class="py value">20</code><code class="py plain">, kernel_size</code><code class="py keyword">=</code><code class="py value">5</code><code class="py plain">)</code>
</div>
<div class="line number14 index13 alt1">
<code class="py spaces"> </code><code class="py color1">self</code><code class="py plain">.conv2_drop </code><code class="py keyword">=</code> <code class="py plain">nn.Dropout2d()</code>
</div>
<div class="line number15 index14 alt2">
<code class="py spaces"> </code><code class="py color1">self</code><code class="py plain">.fc1 </code><code class="py keyword">=</code> <code class="py plain">nn.Linear(</code><code class="py value">320</code><code class="py plain">, </code><code class="py value">50</code><code class="py plain">)</code>
</div>
<div class="line number16 index15 alt1">
<code class="py spaces"> </code><code class="py color1">self</code><code class="py plain">.fc2 </code><code class="py keyword">=</code> <code class="py plain">nn.Linear(</code><code class="py value">50</code><code class="py plain">, </code><code class="py value">10</code><code class="py plain">)</code>
</div>
<div class="line number17 index16 alt2">
</div>
<div class="line number18 index17 alt1">
<code class="py spaces"> </code><code class="py keyword">def</code> <code class="py plain">forward(</code><code class="py color1">self</code><code class="py plain">, x):</code>
</div>
<div class="line number19 index18 alt2">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py plain">F.relu(F.max_pool2d(</code><code class="py color1">self</code><code class="py plain">.conv1(x), </code><code class="py value">2</code><code class="py plain">))</code>
</div>
<div class="line number20 index19 alt1">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py plain">F.relu(F.max_pool2d(</code><code class="py color1">self</code><code class="py plain">.conv2_drop(</code><code class="py color1">self</code><code class="py plain">.conv2(x)), </code><code class="py value">2</code><code class="py plain">))</code>
</div>
<div class="line number21 index20 alt2">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py plain">x.view(</code><code class="py keyword">-</code><code class="py value">1</code><code class="py plain">, </code><code class="py value">320</code><code class="py plain">)</code>
</div>
<div class="line number22 index21 alt1">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py plain">F.relu(</code><code class="py color1">self</code><code class="py plain">.fc1(x))</code>
</div>
<div class="line number23 index22 alt2">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py plain">F.dropout(x, training</code><code class="py keyword">=</code><code class="py color1">self</code><code class="py plain">.training)</code>
</div>
<div class="line number24 index23 alt1">
<code class="py spaces"> </code><code class="py plain">x </code><code class="py keyword">=</code> <code class="py color1">self</code><code class="py plain">.fc2(x)</code>
</div>
<div class="line number25 index24 alt2">
<code class="py spaces"> </code><code class="py keyword">return</code> <code class="py plain">F.log_softmax(x, dim</code><code class="py keyword">=</code><code class="py value">1</code><code class="py plain">)</code>
</div>
<div class="line number26 index25 alt1">
</div>
<div class="line number27 index26 alt2">
</div>
<div class="line number28 index27 alt1">
<code class="py keyword">def</code> <code class="py plain">train(model, device, train_loader, optimizer, epoch):</code>
</div>
<div class="line number29 index28 alt2">
<code class="py spaces"> </code><code class="py plain">model.train()</code>
</div>
<div class="line number30 index29 alt1">
<code class="py spaces"> </code><code class="py keyword">for</code> <code class="py plain">batch_idx, (data, target) </code><code class="py keyword">in</code> <code class="py functions">enumerate</code><code class="py plain">(train_loader):</code>
</div>
<div class="line number31 index30 alt2">
<code class="py spaces"> </code><code class="py plain">data, target </code><code class="py keyword">=</code> <code class="py plain">data.to(device), target.to(device)</code>
</div>
<div class="line number32 index31 alt1">
<code class="py spaces"> </code><code class="py plain">optimizer.zero_grad()</code>
</div>
<div class="line number33 index32 alt2">
<code class="py spaces"> </code><code class="py plain">output </code><code class="py keyword">=</code> <code class="py plain">model(data)</code>
</div>
<div class="line number34 index33 alt1">
<code class="py spaces"> </code><code class="py plain">loss </code><code class="py keyword">=</code> <code class="py plain">F.nll_loss(output, target)</code>
</div>
<div class="line number35 index34 alt2">
<code class="py spaces"> </code><code class="py plain">loss.backward()</code>
</div>
<div class="line number36 index35 alt1">
<code class="py spaces"> </code><code class="py plain">optimizer.step()</code>
</div>
<div class="line number37 index36 alt2">
<code class="py spaces"> </code><code class="py keyword">if</code> <code class="py plain">batch_idx </code><code class="py keyword">%</code> <code class="py value">10</code> <code class="py keyword">=</code><code class="py keyword">=</code> <code class="py value">0</code><code class="py plain">:</code>
</div>
<div class="line number38 index37 alt1">
<code class="py spaces"> </code><code class="py functions">print</code><code class="py plain">(</code><code class="py string">'Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'</code><code class="py plain">.</code><code class="py functions">format</code><code class="py plain">(</code>
</div>
<div class="line number39 index38 alt2">
<code class="py spaces"> </code><code class="py plain">epoch, batch_idx </code><code class="py keyword">*</code> <code class="py functions">len</code><code class="py plain">(data), </code><code class="py functions">len</code><code class="py plain">(train_loader.dataset),</code>
</div>
<div class="line number40 index39 alt1">
<code class="py spaces"> </code><code class="py value">100.</code> <code class="py keyword">*</code> <code class="py plain">batch_idx </code><code class="py keyword">/</code> <code class="py functions">len</code><code class="py plain">(train_loader), loss.item()))</code>
</div>
<div class="line number41 index40 alt2">
</div>
<div class="line number42 index41 alt1">
<code class="py keyword">def</code> <code class="py plain">main():</code>
</div>
<div class="line number43 index42 alt2">
<code class="py spaces"> </code><code class="py plain">cudnn.benchmark </code><code class="py keyword">=</code> <code class="py color1">True</code>
</div>
<div class="line number44 index43 alt1">
<code class="py spaces"> </code><code class="py plain">torch.manual_seed(</code><code class="py value">1</code><code class="py plain">)</code>
</div>
<div class="line number45 index44 alt2">
<code class="py spaces"> </code><code class="py plain">device </code><code class="py keyword">=</code> <code class="py plain">torch.device(</code><code class="py string">"cuda"</code><code class="py plain">)</code>
</div>
<div class="line number46 index45 alt1">
<code class="py spaces"> </code><code class="py plain">kwargs </code><code class="py keyword">=</code> <code class="py plain">{</code><code class="py string">'num_workers'</code><code class="py plain">: </code><code class="py value">1</code><code class="py plain">, </code><code class="py string">'pin_memory'</code><code class="py plain">: </code><code class="py color1">True</code><code class="py plain">}</code>
</div>
<div class="line number47 index46 alt2">
<code class="py spaces"> </code><code class="py plain">train_loader </code><code class="py keyword">=</code> <code class="py plain">torch.utils.data.DataLoader(</code>
</div>
<div class="line number48 index47 alt1">
<code class="py spaces"> </code><code class="py plain">datasets.MNIST(</code><code class="py string">'../data'</code><code class="py plain">, train</code><code class="py keyword">=</code><code class="py color1">True</code><code class="py plain">, download</code><code class="py keyword">=</code><code class="py color1">True</code><code class="py plain">,</code>
</div>
<div class="line number49 index48 alt2">
<code class="py spaces"> </code><code class="py plain">transform</code><code class="py keyword">=</code><code class="py plain">transforms.Compose([</code>
</div>
<div class="line number50 index49 alt1">
<code class="py spaces"> </code><code class="py plain">transforms.ToTensor(),</code>
</div>
<div class="line number51 index50 alt2">
<code class="py spaces"> </code><code class="py plain">transforms.Normalize((</code><code class="py value">0.1307</code><code class="py plain">,), (</code><code class="py value">0.3081</code><code class="py plain">,))</code>
</div>
<div class="line number52 index51 alt1">
<code class="py spaces"> </code><code class="py plain">])),</code>
</div>
<div class="line number53 index52 alt2">
<code class="py spaces"> </code><code class="py plain">batch_size</code><code class="py keyword">=</code><code class="py value">64</code><code class="py plain">, shuffle</code><code class="py keyword">=</code><code class="py color1">True</code><code class="py plain">, </code><code class="py keyword">*</code><code class="py keyword">*</code><code class="py plain">kwargs)</code>
</div>
<div class="line number54 index53 alt1">
</div>
<div class="line number55 index54 alt2">
<code class="py spaces"> </code><code class="py plain">model </code><code class="py keyword">=</code> <code class="py plain">Net().to(device)</code>
</div>
<div class="line number56 index55 alt1">
<code class="py spaces"> </code><code class="py plain">optimizer </code><code class="py keyword">=</code> <code class="py plain">optim.SGD(model.parameters(), lr</code><code class="py keyword">=</code><code class="py value">0.01</code><code class="py plain">, momentum</code><code class="py keyword">=</code><code class="py value">0.5</code><code class="py plain">)</code>
</div>
<div class="line number57 index56 alt2">
</div>
<div class="line number58 index57 alt1">
<code class="py spaces"> </code><code class="py keyword">for</code> <code class="py plain">epoch </code><code class="py keyword">in</code> <code class="py functions">range</code><code class="py plain">(</code><code class="py value">1</code><code class="py plain">, </code><code class="py value">11</code><code class="py plain">):</code>
</div>
<div class="line number59 index58 alt2">
<code class="py spaces"> </code><code class="py plain">train(model, device, train_loader, optimizer, epoch)</code>
</div>
<div class="line number60 index59 alt1">
</div>
<div class="line number61 index60 alt2">
</div>
<div class="line number62 index61 alt1">
<code class="py keyword">if</code> <code class="py plain">__name__ </code><code class="py keyword">=</code><code class="py keyword">=</code> <code class="py string">'__main__'</code><code class="py plain">:</code>
</div>
<div class="line number63 index62 alt2">
<code class="py spaces"> </code><code class="py plain">main()</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
如果正常输出一下以下信息,证明已经安装成了:</p>
<blockquote>
<p>
Train Epoch: 1 Loss: 2.365850<br>
Train Epoch: 1 Loss: 2.305295<br>
Train Epoch: 1 Loss: 2.301407<br>
Train Epoch: 1 Loss: 2.316538<br>
Train Epoch: 1 Loss: 2.255809<br>
Train Epoch: 1 Loss: 2.224511<br>
Train Epoch: 1 Loss: 2.216569<br>
Train Epoch: 1 Loss: 2.181396</p>
</blockquote>
<p class="maodian">
</p>
<h3>
参考资料</h3>
<p>
</p>
<p>
https://developer.nvidia.com</p>
<p>
https://www.cnblogs.com/luofeel/p/8654964.html</p>
<p>
到此这篇关于Ubuntu安装和卸载CUDA和CUDNN的实现的文章就介绍到这了,更多相关Ubuntu安装和卸载CUDA和CUDNN内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!</p>
<p>
原文链接:https://blog.csdn.net/qq_33200967/article/details/80689543</p>
頁:
[1]