Ubuntu18.04安装CUDA和CUDNN

101 篇文章 5 订阅
79 篇文章 1 订阅

刚装好了CUDA和CUDNN,赶紧来记录分享一下!

1. 准备工作

1.1 安装依赖包
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
 
sudo apt-get install --no-install-recommends libboost-all-dev
 
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
 
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
 
sudo apt-get install git cmake build-essential

如果不确定是不是已安装成功,可以重新输入相关代码,例如sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev,如果提示已安装则表明安装成功。

1.2 禁用 nouveau

安装好依赖包后,再禁用 nouveau才能顺利安装NVIDIA显卡驱动,打开/etc/modprobe.d/blacklist-nouveau.conf :
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
该文件内容是空的,输入一下内容:
blacklist nouveau
option nouveau modeset=0
保存时命令窗口可能会出现一些提示信息,不要管,继续在terminal输入:

sudo update-initramfs -u
1.3 配置环境变量

使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

在文件最后加入以下两行内容:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

2. 安装NVIDIA显卡驱动

最简单的安装NVIDIA驱动的方法是选择在Software&Update中的Additional Driver选项卡中给出的显卡驱动(我的已经安装好了,所以是灰色的),看好是不是自己显卡对应的版本,这种方法简单且一般不会出错。
选择在Software&Update中的Additional Driver选项卡中给出的显卡驱动

3. 安装CUDA

3.1 下载CUDA

进入 https://developer.nvidia.com/cuda-downloads,按照自己电脑的软硬件配置,选择 CUDA 版本。
在这里插入图片描述在这里插入图片描述

3.2 安装CUDA

根据提示输入以下命令:

wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.runsudo
sh cuda_10.1.243_418.87.00_linux.run

过一会出现安装界面,CUDA10.1的安装界面是下面这个样子的,按上下左右进行选择,按回车切换选中和未选中状态。
在这里插入图片描述
因为之前已经装过Driver了,所以要将选项移动到Driver项,回车去掉选择状态。然后开始安装就行了。
注意:以前版本安装的时候可能要进入文本模式,我在安装的时候并没有进入文本模式,而是直接在图形模式下进行的,也安装成功了。
安装完成后重启系统:
reboot

重启后登录进入系统,配置 CUDA 环境变量,与第3步相同,使用 gedit 命令打开配置文件:

sudo gedit ~/.bashrc

在文件最后输入以下代码:

export CUDA_HOME=/usr/local/cuda-10.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

最后使用命令source ~/.bashrc使它生效。
可以使用命令nvcc -V查看安装的版本信息:
在这里插入图片描述

4. 安装CUDNN

4.1 下载CUDNN

进入到CUDNN的下载官网:https://developer.nvidia.com/rdp/cudnn-download ,然点击Download开始选择下载版本,当然在下载之前还有登录,选择版本界面如下,我们选择cuDNN Library for Linux:
在这里插入图片描述下载之后是一个压缩包,如下:
cudnn-10.1-linux-x64-v7.6.4.38.tgz
解压之后得到以下文件:

tar zxvf  cudnn-10.1-linux-x64-v7.6.4.38.tgz -C ./
cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.6.4

使用以下两条命令复制这些文件到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 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

复制后用一下命令看一下CUDNN版本信息:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 4
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

测试安装结果,用Pytorch框架跑一下Mnist数据集案例,先安装torch和torchvision,现在安装很方便,到网站https://pytorch.org/,根据自己的软硬件配置选择对应的版本,复制下方生成的命令到terminal,我设置的pip安装源镜像,所以选择pip安装,下载很快,安装很顺利!!!
在这里插入图片描述在terminal输入:

pip3 install torch torchvision

OK,torch和torchvision安装成功后,在terminal打开Spyder,将以下代码复制进去,然后运行(开始要下载MNIST数据集):

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torchvision import datasets, transforms


class Net(nn.Module):
    def __init__(self):
        super(Net, 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.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)

    def forward(self, x):
        x = F.relu(F.max_pool2d(self.conv1(x), 2))
        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
        x = x.view(-1, 320)
        x = F.relu(self.fc1(x))
        x = F.dropout(x, training=self.training)
        x = self.fc2(x)
        return F.log_softmax(x, dim=1)


def train(model, device, train_loader, optimizer, epoch):
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device), target.to(device)
        optimizer.zero_grad()
        output = model(data)
        loss = F.nll_loss(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 10 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                       100. * batch_idx / len(train_loader), loss.item()))

def main():
    cudnn.benchmark = True
    torch.manual_seed(1)
    device = torch.device("cuda")
    kwargs = {'num_workers': 1, 'pin_memory': True}
    train_loader = torch.utils.data.DataLoader(
        datasets.MNIST('../data', train=True, download=True,
                       transform=transforms.Compose([
                           transforms.ToTensor(),
                           transforms.Normalize((0.1307,), (0.3081,))
                       ])),
        batch_size=64, shuffle=True, **kwargs)

    model = Net().to(device)
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

    for epoch in range(1, 11):
        train(model, device, train_loader, optimizer, epoch)


if __name__ == '__main__':
    main()

console出现以下信息说明CUDA和CUDNN安装成功,可以正常使用:

Train Epoch: 5 [42240/60000 (70%)]      Loss: 0.034127
Train Epoch: 5 [42880/60000 (71%)]      Loss: 0.232544
Train Epoch: 5 [43520/60000 (72%)]      Loss: 0.104796
Train Epoch: 5 [44160/60000 (74%)]      Loss: 0.204738
Train Epoch: 5 [44800/60000 (75%)]      Loss: 0.135444
Train Epoch: 5 [45440/60000 (76%)]      Loss: 0.232273
Train Epoch: 5 [46080/60000 (77%)]      Loss: 0.182398
Train Epoch: 5 [46720/60000 (78%)]      Loss: 0.277472
Train Epoch: 5 [47360/60000 (79%)]      Loss: 0.224203
Train Epoch: 5 [48000/60000 (80%)]      Loss: 0.161002
Train Epoch: 5 [48640/60000 (81%)]      Loss: 0.156276
Train Epoch: 5 [49280/60000 (82%)]      Loss: 0.097120
Train Epoch: 5 [49920/60000 (83%)]      Loss: 0.339819
Train Epoch: 5 [50560/60000 (84%)]      Loss: 0.243519
Train Epoch: 5 [51200/60000 (85%)]      Loss: 0.146566
Train Epoch: 5 [51840/60000 (86%)]      Loss: 0.166110
Train Epoch: 5 [52480/60000 (87%)]      Loss: 0.252697
Train Epoch: 5 [53120/60000 (88%)]      Loss: 0.324323
Train Epoch: 5 [53760/60000 (90%)]      Loss: 0.380634
Train Epoch: 5 [54400/60000 (91%)]      Loss: 0.169504
Train Epoch: 5 [55040/60000 (92%)]      Loss: 0.233693
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值