记录ubuntu18.04安装cuda以及cudnn

本文档详细记录了在Ubuntu Server 18.04上安装CUDA 10.1和11.2以及cuDNN的过程,包括采用runfile方式避免驱动问题、禁用内核更新、安装步骤、软链接创建以及验证安装成功的操作。此外,还提供了安装cudnn的样本代码编译和测试。
摘要由CSDN通过智能技术生成

最近在ubuntu-server18.04 系统上装了cuda,这里记录一下。以便以后好参照。

这里为了避免cuda driver跟cuda版本的问题,采用了runfile的方式进行安装。

下面给出cuda及cudnn 下载的分享链接,方便下载:

cuda-10.1

链接:https://pan.baidu.com/s/1bvVdvU58CEee7t4On0Sgnw 
提取码:y2pi

aliyun

「cuda-10.1」等文件 https://www.aliyundrive.com/s/oNXiv2hLTAs 

cuda-11.2

链接:https://pan.baidu.com/s/1ThH7iRp7O7_qO4GAw15tSA 
提取码:ilte

aliyun

「cuda-11.2」等文件 https://www.aliyundrive.com/s/E9JzkKEcyvW 

cudnn-sample

「cudnn8.1.1-cuda-11.2-sample」等文件 https://www.aliyundrive.com/s/9TXbLBuiB5D

内核更新可能会由于内核与驱动不匹配,导致系统无限重启

由于cuda安装后,会由于系统重启自动更新内核导致如下效果。

 这里为了避免之后出现以上效果,提前设置系统禁止内核更新。

方法一(apt命令):

#查看已安装的内核
sudo dpkg --get-selections | grep linux

#查看正在使用的内核
uname -r

#使用apt命令禁止内核更新
sudo apt-mark hold linux-image-generic linux-headers-generic
sudo apt-mark hold linux-image-extra-generic

#重启内核更新
sudo apt-mark unhold linux-image-generic linux-headers-generic
sudo apt-mark unhold linux-image-extra-generic

效果大致如下:

方法二(修改配置文件):

# 修改以下文件
sudo vim /etc/apt/apt.conf.d/10periodic
sudo vim /etc/apt/apt.conf.d/20auto-upgrades

#关闭自动更新
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";

#开启自动更新
APT::Periodic::Update-Package-Lists "2";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "1";

修改后的效果:

安装之前要确认系统里没有旧版本cuda残留。如果之前装过,则通过安装的cuda下面的清除命令执行卸载操作。可能不同的cuda版本二进制文件名略有差异,不过应该可以通过名字看出来哪个是卸载操作。这里cuda10.1是 ./cuda-uninstaller

确保系统里没有安装过cuda或者清除干净了。

清除系统之前可能装过的nvidia

sudo dpkg -l | grep nvidia

sudo apt-get --purge remove "*nvidia*"

sudo apt autoremove

删除以前的链接配置,一般链接搜索的配置会在/etc/ld.so.conf中配置或者/etc/ld.so.conf.d/文件夹下配置。如果有以前的cuda配置文件的话,可以删除掉,类似cuda-xxx.conf

添加cuda的执行权限,并用管理员权限运行

sudo chmod u+x cuda_10.1.105_418.39_linux.run
sudo ./cuda_10.1.105_418.39_linux.run

执行成功会看到如下效果:

然后可以在 $HOME/.bashrc中配置 PATH ,并且在 /etc/ld.so.conf中配置cuda的库搜索路径

这里贴出我的$HOME/.bashrc 

export PATH=/usr/local/cuda-10.1/bin:$PATH

库文件搜索路径为

 

 cuda-10.1.conf

usr/local/cuda-10.1/targets/x86_64-linux/lib
/usr/local/cuda-10.1/lib64

接下来生效上面添加的库搜索路径:

sudo ldconfig

在cuda-11.2的的版本下,会提示,如果没遇到则可以跳过,如果遇到需要手动添加软链。

这样就需要我们自己生成软链接,这里贴出我的操作,读者需要修改为自己对应的版本:

我这里的cudnn版本是8.1.1

手动生成软链接

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8

sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so

 再次执行ldconfig,发现没有警告提示了。

至此cuda就安装完毕了。

可以检测一下。

 

安装完后可以去验证一下看cuda是否可以找到设备 

默认会在家目录下有个测试用例文件夹:

 进入NVIDIA_CUDA-10.1_Samples/1_Utilities/deviceQuery路径下,执编译代码,然后执行二进制文件。

make
./deviceQuery

 如果出现以下效果,则说明cuda安装成功!

接下来就可以解压,安装 cudnn了。

#解压 cudnn压缩包,这里要注意后缀版本要与cuda版本一致
tar -zxvf cudnn-10.1-v7.tar.gz 

#将解压后的头文件跟库文件拷贝到安装的cuda路径下

sudo cp cuda/include/cudnn* /usr/local/cuda-10.1/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/

#添加权限
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*

# 查看cudnn版本
cat /usr/local/cuda-10.1/include/cudnn.h | grep CUDNN_MAJOR -A 2

# 如果是cudnn8以上有所不同
cat /usr/local/cuda-11.2/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

 可以看到我这里的cudnn版本为7.6.5

下面可以安装runtime library, developer library,code sample and cuDNN library documentation

# 注意要安装对应系统和版本的软件包

sudo dpkg -i libcudnn8_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.1.1.33-1+cuda11.2_amd64.deb
sudo dpkg -i libcudnn8-samples_8.1.1.33-1+cuda11.2_amd64.deb

效果如下所示:

 安装完后,就有了sample示例代码。然后我们可以进行测试

示例代码默认安装路径在 /usr/src/cudnn_samples_v8/

 

# Copy the cuDNN samples to a writable path.
$ cp -r /usr/src/cudnn_samples_v8/ $HOME

# Go to the writable path.
$ cd  $HOME/cudnn_samples_v8/mnistCUDNN

# 安装依赖 freeimage 建议将软件源替换为阿里源
$ sudo apt-get update  -y && sudo apt-get install libfreeimage3  libfreeimage-dev -y

# Compile the mnistCUDNN sample.
$ make clean && make

# Run the mnistCUDNN sample.
$ ./mnistCUDNN

# If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
Test passed!

编译后的效果:

执行结果

 

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值