编辑
2024-12-01
学习
00
请注意,本文编写于 41 天前,最后修改于 41 天前,其中某些信息可能已经过时。

目录

Ubuntu Cuda安装笔记
一、显卡
1.更新软件列表和安装必要软件、依赖
2.禁用 nouveau 驱动
3.查询是否成功禁用
二、CUDA
1.安装依赖
2.安装cuda11.8
3.安装选项
4.配置环境变量:
5.检查结果
三、CudaNN
解决方案
4.验证结果

Ubuntu Cuda安装笔记

提示

本人用的wsl安装的ubuntu,版本是ubuntu22.04。

一、显卡

1.更新软件列表和安装必要软件、依赖

bash
sudo apt-get update sudo apt-get install g++ sudo apt-get install gcc sudo apt-get install make

2.禁用 nouveau 驱动

ouveau是Ubuntu自带的显卡驱动,但他是核显,我这里想安装独显,就得把他禁掉

bash
sudo gedit /etc/modprobe.d/blacklist.conf 或者 sudo vi /etc/modprobe.d/blacklist.conf

在文件末尾追加

js
blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 alias nouveau off alias lbm-nouveau off

保存退出更新重启即可。

3.查询是否成功禁用

bash
sudo update-initramfs –u

执行结果为空表示已成功禁用。

二、CUDA

1.安装依赖

bash
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

2.安装cuda11.8

bash
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run

3.安装选项

安装时的选择

  • continue
  • 写 accept
  • 不要driver:在driver处按enter
  • install
  • (如果有多个CUDA,会问你symlink改不改): Yes

4.配置环境变量:

bash
vim ~/.bashrc export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} source ~/.bashrc

5.检查结果

bash
nvcc -V

三、CudaNN

看网上帖子大部分都是自己手动登录官网下载完再上传到ubantu,解压的,那么有没有能直接从终端下载解压的方法呢,答案是肯定的。

简单地说,有一台linux远程服务器,想在服务器上配置深度学习开发环境,一个绕不开的选项是:安装cuDNN 但是我只能通过SSH连接远程服务器,如果直接在终端里使用wget进行下载的话,会被forbidden。

这是因为:Nvidia要求下载时进行验证(事实上,在我们从浏览器端下载cuDNN时,会被要求登录),而我们直接使用wget跳过了验证,所以被Forbidden了。

解决方案

方案一:
在本地浏览器点击下载,再点击暂停,
进入浏览器下载界面,可以看到真正的下载链接,拷贝这个链接后再用wget下载。
方案二:
本地下载好正确版本的cuDNN 通过scp命令拷贝到远程服务器,关于scp命令的用法,可见:使用scp从远程Linux服务器下载文件至本地。
方案三:
1.在本地主机上从 https://developer.nvidia.com/rdp/cudnn-archive 获取下载链接,如:

js
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/7.6.5.32/Production/10.1_20191031/cudnn-10.1-linux-x64-v7.6.5.32.tgz

2.SSH登录到远程主机,执行如下操作:\

js
CUDNN_TAR_FILE="cudnn-10.1-linux-x64-v7.6.5.32.tgz" #与上面链接中的相对应 wget http://developer.download.nvidia.com/compute/redist/cudnn/v7.6.5/${CUDNN_TAR_FILE} #v7.6.5与CUDNN_TAR_FILE相对应

感兴趣的也可以看看https://stackoverflow.com/questions/31279494/how-to-install-cudnn-from-command-line

3.解压cuDNN文件,拷贝文件

bash
tar -xzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz

复制库文件和头文件: 解压后,您会得到几个目录,包括cuda和include。您需要将这些目录中的内容复制到CUDA的安装目录中。使用以下命令:

bash
sudo cp cuda/include/cudnn*.h /usr/local/cuda-11.8/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.8/lib64

这些命令将cuDNN的头文件复制到CUDA的include目录,将库文件复制到CUDA的lib64目录。

设置库路径: 您需要确保系统能够找到cuDNN库。编辑/etc/ld.so.conf.d/cudnn.conf文件,添加以下行:

js
/usr/local/cuda-11.8/lib64

然后,运行以下命令使更改生效:

bash
sudo ldconfig

我这里有点小问题,会提示libcuda.so.1 is not a symbolic link,因为我是wsl2环境。
所以需要处理一下。
网上原有的解决方法是:
将/usr/lib/wsl/lib 中的文件软连接到/usr/lib/wsl/lib2中。
该方法会导致后续出现
问题1:
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system.
问题2:
error code is libcuda.so: cannot open shared object file: No such file or directory

我的解决方法是: 删除或备份/usr/lib/wsl/lib中的libcuda.so与libcuda.so.1
然后建立对libcuda.so.1.1的软连接:

bash
sudo cp /usr/lib/wsl/lib/libcuda.so /usr/lib/wsl/lib/libcuda.so.backup sudo cp /usr/lib/wsl/lib/libcuda.so.1 /usr/lib/wsl/lib/libcuda.so.1.backup sudo rm /usr/lib/wsl/lib/libcuda.so sudo rm /usr/lib/wsl/lib/libcuda.so.1 sudo ln -s libcuda.so.1.1 libcuda.so.1 sudo ln -s libcuda.so.1 libcuda.so

4.验证结果

bash
grep CUDNN_MAJOR -A 2 /usr/local/cuda-11.8/include/cudnn.h

image.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:wjc

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 ‌CC BY-NC 许可协议。转载请注明出处!