# 可以通过下面的命令查看显卡型号,以及是否已经安装过驱动、当前驱动版本(我的电脑上已经安装了550.90.07版本的驱动)#查看显卡型号信息$ lspci | grep -i nvidia (或 lspci -k | grep -A 3 VGA、sudo lshw -c video、sudo lshw -C display等)01:00.0 VGA compatible controller: NVIDIA Corporation TU116 [GeForce GTX 1660] (rev a1)01:00.1 Audio device: NVIDIA Corporation TU116 High Definition Audio Controller (rev a1)01:00.2 USB controller: NVIDIA Corporation TU116 USB 3.1 Host Controller (rev a1)01:00.3 Serial bus controller: NVIDIA Corporation TU116 USB Type-C UCSI Controller (rev a1)
#查看显卡驱动信息$ ls /usr/src | grep nvidia (或 nvidia-smi 等)nvidia-550.90.07
复制代码
禁用 nouveau 驱动,由于 nouveau 是通过逆向NVIDIA官方发布的闭源驱动而得到的适用于NVIDIA显卡的开源驱动,Ubuntu 默认安装的就是这个开源的 nouveau 驱动程序,所以要安装NVIDIA显卡官方驱动起首需要禁用 nouveau,克制驱动冲突进而导致安装驱动安装失败、进不了桌面环境,乃至黑屏等问题。
# 可以通过此命令查看是否开启(我的电脑上已经禁用了,所以没有输出,否则有输出)$ lsmod | grep nouveau
# 禁用 nouveau 驱动$ sudo echo "blacklist nouveau" >>/etc/modprobe.d/blacklist.conf$ sudo echo "options nouveau modeset=0" >>/etc/modprobe.d/blacklist.conf
中间过程的可能选项内容:1. An alternate method of installing the NVIDIA driver was detected ... 选择 continue installation
2.Install nvidia's 32-bit compatibility libraries? 选择 No
3.Would you like to register the kernel module souces with DKMS? ... 选择 No
4.Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? ... 选择 Yes
复制代码
2、安装 CUDA
CUDA是由NVIDIA开辟的一个并行计算平台和编程模型,用于图形处理单元(GPU)的通用计算。通过CUDA,开辟人员可以利用GPU的本领极大地提高计算应用程序的速率。
在GPU加速的应用程序中,工作负载的次序部分运行在CPU上——这是针对单线程性能进行优化的——而应用程序的计算密集部分并行运行在数千个GPU核上。在利用CUDA时,开辟人员利用C、C++、Fortran、Python和MATLAB等流行语言编程,并通过扩展以几个根本关键字的形式表达并行性。
CUDA Toolkit由NVIDIA提供的开辟GPU加速应用程序所需的一切。
https://developer.nvidia.com/cuda-zone CUDA Toolkit是NVIDIA(英伟达)为方便开辟人员利用,提供的一套开辟工具和库,旨在帮助开辟人员便捷地创建和优化基于CUDA的应用程序。它包括了包括NVIDIA的CUDA编译器nvcc(nvcc,专门用于处理CUDA C/C++代码,能将其与常规C/C++代码结合编译,编译成可在NVIDIA GPU上运行的程序)、CUDA Runtime程序库、CUDA开辟工具等。官方CUDA Toolkit技能文档地址:https://docs.nvidia.com/cuda/index.html。 CUDA 主要有两个API库:runtime API、driver API用于支持driver API的须要文件(如libcuda.so)是由GPU driver installer安装的。用于支持runtime API的须要文件(如libcudart.so以及nvcc)是由CUDA Toolkit installer安装的。nvidia-smi下令查的是driver API,nvcc 下令查的是 runtime API。 常见的cuFFT和cuBLAS库就是基于Runtime API的,Runtime API并不是CUDA编程的唯一选择,Runtime API能做到的,Driver API肯定也能实现。 在显卡驱动安装时,会安装 CUDA Driver API库, CUDA Driver API库偏底层,直接管理硬件设备,提供最低级别的访问权限,但同时也带来了更高的编程复杂度,相当于是汇编语言的级别,面向硬件。 通过CUDA Toolkit软件包可用安装 CUDA Runtime API库,它为开辟人员提供了一个高条理的接口,相当于是C语言级别,能更方便地进行面向GPU的程序开辟,使得开辟者可以更加专注于算法和应用程序的开辟,而不必深入底层的硬件细节。
# 通过安装驱动后提供的 nvidia-smi 可用查看 CUDA Driver API库的版本,# 它是底层地基,所以它显示的版本决定了后续的 CUDA Driver API库版本不能“僭越”它$ nvidia-smiMon Feb 3 04:17:59 2025+-----------------------------------------------------------------------------------------+| NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 ......# 如上中: CUDA Version: 12.4 ,12.4 即为CUDA Driver API库的版本,后续的CUDA Runtime API库版本需要不大于12.4
CUDA driver是向后兼容的,即新的CUDA driver一般可以支持比力旧的CUDA runtime。但是当CUDA runtime的版本比CUDA driver更高时大概会调用一些CUDA driver 尚不支持的函数或参数,程序大概会出现错误或无法运行,由于 driver 不支持该 runtime 调用的某些新特性。正所谓,下层基础决定了上层建筑,因此,建议在安装驱动时,尽量选择较新的稳固版驱动以保证CUDA runtime 的匹配性。
因此,一般建议尽量保持CUDA driver API为最新版本,这样可以兼容较旧的 CUDA runtime API,也可以克制由于CUDA driver API 版本过低导致的错误。所以,最好安装最新的NVIDIA驱动,并选择一个不高于NVIDIA驱动所支持的 CUDA 版本的 runtime 版本。 CUDA 的版本受限于显卡驱动,cuDNN的版本受限于CUDA,而Pytorch、Transformers、ONNXRuntime、Flash-attn等都和CUDA版本有密切关联,当我们要运行不同的人工智能类项目时就大概引起依赖冲突,办理办法主要有两种,一是提前规划好版本,另一个是创建捏造环境,在捏造环境中安装不同的版本(就是比力费硬盘空间)。
安装 CUDA 主要有三种方式:a.下令行方式;b.NVIDIA网站下载安装(包含三类);c.用pip安装。(在这里 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 页面(Table 2 CUDA Toolkit and Minimum Required Driver Version for CUDA Minor Version Compatibility、Table 3 CUDA Toolkit and Corresponding Driver Versions)中可以查看 CUDA Toolkit和要求的显卡驱动的版本要求。 )
a.基于APT包源的下令行方式
# runfile(local)方式如下,注意要能匹配显卡驱动的 cuda driver 版本$ wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux.run$ sudo sh cuda_12.8.0_570.86.10_linux.run