cuda需要Nvidia显卡或计算卡,AMD或intel显卡不行(amd是rocm)
建议使用ubuntu来装,因为cuda就是在这个平台上开发的,当然别的linux系统也行
以下操作在ubuntu server 2204、debian12、debian11中都操作过,如果没有安装linux系统,可以参考
Ubuntu server安装图解
Debian 安装图解
注意!请根据需要安装对应版本的cuda!不同版本安装大同小异
主要思路:安装N卡(硬件),安装cuda的依赖(主要是c的编译器)、安装N卡驱动,安装nvcc、安装cuda
另外,你可能还需要pytorch、tf,在选择版本前务必根据你自己的需要选取,部分组件对操作系统也有要求,为了少做重复劳动,先把所有需要的组件版本对应好,然后再一个个安装。
官方文档永远是最好的:cuda官方安装文档
一、检查硬件软件环境和删除Nouveau
不要省略这一步,检查环境确定符合基本需求
1.确定系统识别了N卡
lspci | grep -i nvidia
显示类似如下信息(下图分别是rtx3090 24G和rtx4090 24G):
2.检查gcc编译器
gcc --version
如果正常,会显示版本,类似如下信息
如果没有,建议安装这个c的一大堆套件集合,一劳永逸
apt-get install build-essential
3.安装配套的linux内核头
apt-get install linux-headers-$(uname -r)
4.删除Nouveau
(这一步不一定要做,根据实际情况,如果提示需要卸载就卸载)
linux默认安装了N卡的开源驱动,即Nouveau。
检查Nouveau工作状态
lsmod | grep nouveau
如果出来很多信息,就说明这个驱动还在,卸载
编辑新文件,名字不一定取这个,其它也行
vi /etc/modprobe.d/nouveau.conf
内容如下
blacklist rivafbblacklist vga16fbblacklist nouveaublacklist nvidiafbblacklist rivatvblacklist nouveaublacklist lbm-nouveauoptions nouveau modeset=0alias nouveau offalias lbm-nouveau off
应用到内核
update-initramfs -u
完成后重启电脑,然后再查看,没有信息了即可
如果没有重启电脑,还是显示会有的。
lsmod | grep nouveau
二、使用cuda Toolkit安装
推荐使用,这样全家桶就装好了:N卡驱动+cuda+nvcc
注意:这种方法不需要先装驱动,也省去了查找兼容性的问题
cuda要求的驱动版本是最低的版本,也就是说可以用最新的驱动配早期的cuda版本
官方地址: cuda toolkit
再次提示:版本根据你的需求进行选取,比如你要用pytorch、tensorflow等,以那个需要为准,不同版本安装方法都一样
记得点前面的连接,不要点后面的Versioned …链接 ,那个是英文的详细文档,看起来麻烦。
这样选择,下面会出来安装的命令,直接复制用就行
这里装的是12.1版本,在上面的官方地址可以选取自己需要的版本,方法都是类似的
不同系统也在这里可以看到对应的安装方法,然后把下面的命令一个个复制进去就行
下面根据命令一步步操作:
上面的图有具体的操作,直接复制就行,我这边再写一下
(一)ubuntu系统参考这个
1.先切换到程序下载目录
mkdir /usr/local/my_cuda && cd /usr/local/my_cuda
2.安装操作
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
移动配置文件
mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
下载安装包
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
安装
dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
安装key
cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
更新
apt-get update
安装cuda,这一步时间较长,耐心等待
apt-get -y install cuda
安装完成后重启电脑,否则可能会出各种问题
(二)debian系统参考这个
选择的是本地的安装方法
1.进入操作的目录
cd /usr/local
2.下载key并装入系统
wget https://developer.download.nvidia.com/compute/cuda/repos/debian11/x86_64/cuda-keyring_1.0-1_all.deb
dpkg -i cuda-keyring_1.0-1_all.deb
add-apt-repository contrib
如果上面那条命令提示出错,则使用下面的命令
apt-get install software-properties-common
3.安装
时间较长,耐心等待
apt-get update
apt-get -y install cuda
安装完成后重启电脑,否则可能会出各种问题
三、测试
cuda版本以nvcc显示出来的为准,如果N卡驱动较新,nvidia-smi显示的版本会是新的cuda版本,而实际调用是通过nvcc
1.测试nvcc(cuda编译器)
nvcc -V
正常显示如下(如果出错,请看第四节问题处理部分,有解决方法):
2.测试nvidia-smi
nvidia-smi
如果这两步都出现问题,第四节处理
四、问题处理
1.nvcc 显示没有
查找nvcc
find / -name "nvcc"
比如出现下面目录
vi ~/.bashrc
最后的部分添加上(如果你不是装的12.1版本,要改目录中的版本)
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64export PATH=$PATH:/usr/local/cuda-12.1/bin
保存后,刷新环境变量
source ~/.bashrc
再次使用命令(注意V是大写)
nvcc -V
见到如下的,是不是很亲切?
2.nvidia-smi错误
据说重启解决80%问题
比如如下图提示,如果错误,重启即可,因为上面已经装过了,很多问题重启就能解决
注意:还有一种情况,就是开启了secury boot,在bios里关闭即可,否则重启还是报错
或者这种找不到硬件的,重启(还有一种可能显卡没有插好!)
再次使用nvidia-smi可以看到类似下面的信息(左上角是N卡驱动版本,右上角是cuda版本)
cuda版本以nvcc为准
五、cuda卸载
如果需要换不同的版本,建议多版本并存,这里先不涉及,如果要彻底卸载,根据以下操作权限不够前面加sudo,我这里用root进行安装
1.准备删除cuda
apt-get remove cuda
2.自动卸载
apt autoremove
3.删除其它的cuda
apt autoremove cuda*
4.删除下载安装包(也可以不删除)
rm /usr/local/my_cuda/cuda-repo-ubuntu2204-12-1-local_12.1.0-530.30.02-1_amd64.deb
5.查找包相关并删除
dpkg -l |grep cuda
类似于如下图的一些包,手动删除相关的包。否则再安装别的版本会失败
把上面的名称填到下面进行删除
dpkg -P cuda-repo-ubuntu2204-12-1-local cuda-toolkit-12-1-config-common cuda-toolkit-12-config-common cuda-toolkit-config-common cuda-visual-tools-12-1
6.或者
apt-get purge nvidia*
六、补充说明
1.升级显卡
如果更换了显卡,通常不需要重新安装,如果无法用,则重新安装即可
2.限制功耗(谨慎,一般不要搞)
有的显卡限制功耗可以有效降低温度,同时性能损失很小以下仅作参考,通常情况不要动
进入持久化模式
nvidia-smi -pm 1
限制卡0功耗为200w
nvidia-smi -pl 200 -i 0
3.安装更老的cuda版本(不推荐)
cuda版本虽然有驱动版本的限制,但是这个限制的版本是最低的版本驱动版本。
比如rtx4090的初始驱动版本是522.25,而cuda11.8的默认cuda版本是522.06(默认无法直接安装)。如果需要这个版本的cuda。
应该先安装N卡驱动,然后在运行cuda tookit11.8,这时候程序会默认跳过驱动,使用nvcc -V和nvidia-smi显示的cuda版本不一致,因为两者原理不同,cuda是通过nvcc来运行的,所以以nvcc为准,特别是在windows下,如果你不小心升级了N卡驱动也不要紧,cuda的实际版本是不会变的。