文章目录
前言
随着NVIDIA RTX 4090显卡的推出,其强大的计算能力为高性能计算和深度学习任务提供了显著提升。为了充分发挥这一显卡的潜力,安装最新的显卡驱动和CUDA Toolkit至关重要。CUDA(Compute Unified Device Architecture)是NVIDIA为其GPU提供的并行计算平台和编程模型,使得开发者能够在GPU上运行计算密集型应用程序。
在Ubuntu 20.04系统上重新部署RTX 4090显卡驱动和CUDA环境的过程包括以下几个步骤:卸载旧的驱动和CUDA版本、下载和安装最新的显卡驱动、安装CUDA Toolkit,并配置相关的环境变量。这个过程不仅可以解决兼容性问题,还能优化系统性能,确保开发和运行GPU加速应用时的稳定性。
本文将详细介绍每一步的操作,帮助你顺利完成显卡驱动和CUDA环境的重新部署,以实现最佳的计算性能。
一、显卡驱动和CUDA关系
显卡驱动和 CUDA 是两种与计算机显卡相关的重要软件,分别用于硬件控制和并行计算。
显卡驱动:显卡驱动(Graphics Driver) 是一种软件,用于操作系统与显卡之间的桥梁。它的主要作用是:
硬件控制:
驱动程序让操作系统能够识别和控制显卡的硬件功能,如显示图像、调整显示设置等。
性能优化:
驱动程序通常包括优化和性能提升的更新,以保证显卡在运行游戏、图形应用或其他任务时能发挥最佳性能。
兼容性:
更新驱动程序可以确保显卡与最新的操作系统和软件兼容,避免因驱动程序过时而导致的软件或游戏无法正常运行。
显卡驱动程序通常由显卡制造商提供,比如 NVIDIA、AMD 或 Intel,并且需要根据显卡型号和操作系统版本进行匹配安装。
CUDA:CUDA(Compute Unified Device Architecture) 是 NVIDIA 提供的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA 显卡的处理能力进行高性能计算。CUDA 的主要特点包括:
并行计算:
CUDA 使得开发者能够在显卡的多个处理核心上并行执行计算任务,从而加速计算密集型应用(如科学计算、机器学习和数据处理)。
编程模型:
CUDA 提供了一套扩展的 C/C++ 编程语言和 API,允许开发者编写能够直接在显卡上执行的代码。这使得显卡不仅用于图形处理,还可以进行复杂的数学运算。
性能提升:
通过 CUDA,计算任务可以在显卡的高性能并行处理能力上执行,通常比在 CPU 上执行更快。
广泛支持:
CUDA 支持多种开发工具和库,如 cuBLAS(线性代数库)、cuDNN(深度学习库)等,帮助加速各种应用的开发。
总结:
显卡驱动是使显卡能够正常工作的基础软件,用于控制和优化显卡的图形功能。
CUDA是一个用于高性能并行计算的平台和编程模型,使得开发者能够利用显卡的计算能力进行复杂的计算任务。
二、显卡驱动和CUDA卸载及安装
1.卸载旧的驱动和CUDA版本
(1)卸载显卡驱动及cuda
#删除toolkit:
$ sudo apt-get --purge remove "*cublas*" "cuda*" "nsight*"
#删除NVIDIA drivers:
$ sudo apt-get --purge remove "*nvidia*"
#删除cuda文件夹(之前下载了cuda11.6/cuda11.8/cuda12.1三个版本)
$ sudo rm -rf /usr/local/cuda*
#更新
$ sudo apt-get update
(2)卸载后查看显卡驱动和cuda:
(base) fzl@CH-AILAB-Robot:~/Documents$ nvidia-smi
Command 'nvidia-smi' not found, but can be installed with:
sudo apt install nvidia-utils-435 # version 435.21-0ubuntu7, or
sudo apt install nvidia-utils-440 # version 440.82+really.440.64-0ubuntu6
sudo apt install nvidia-340 # version 340.108-0ubuntu5.20.04.2
sudo apt install nvidia-utils-390 # version 390.157-0ubuntu0.20.04.1
sudo apt install nvidia-utils-450-server # version 450.248.02-0ubuntu0.20.04.1
sudo apt install nvidia-utils-470 # version 470.256.02-0ubuntu0.20.04.1
sudo apt install nvidia-utils-470-server # version 470.256.02-0ubuntu0.20.04.1
sudo apt install nvidia-utils-535 # version 535.183.01-0ubuntu0.20.04.1
sudo apt install nvidia-utils-535-server # version 535.183.01-0ubuntu0.20.04.1
sudo apt install nvidia-utils-550-server # version 550.90.07-0ubuntu0.20.04.2
sudo apt install nvidia-utils-418-server # version 418.226.00-0ubuntu0.20.04.2
(base) fzl@CH-AILAB-Robot:~/Documents$ nvcc --version
Command 'nvcc' not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit
2.下载和安装最新的显卡驱动
可根据提示安装nvidia-utils-535-server 驱动或者安装已下载的其他版本驱动(NVIDIA-Linux-x86_64-535.154.05.run)
安装显卡驱动命令如下:
(base) fzl@CH-AILAB-Robot:~/Documents$ sudo apt install nvidia-utils-535-server
......此处省略安装log,结果如下:
(base) fzl@CH-AILAB-Robot:~/Documents$ nvidia-smi
Tue Sep 3 09:08:04 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01 Driver Version: 535.183.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 4090 Off | 00000000:01:00.0 On | Off |
| 0% 44C P8 26W / 450W | 854MiB / 24564MiB | 10% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 1309 G /usr/lib/xorg/Xorg 368MiB |
| 0 N/A N/A 1673 G /usr/bin/gnome-shell 63MiB |
| 0 N/A N/A 1912 G /usr/local/sunlogin/bin/sunloginclient 19MiB |
| 0 N/A N/A 2058 G /usr/local/sunlogin/bin/sunloginclient 6MiB |
| 0 N/A N/A 2182 G ...en=24578193121B27EFFB769C2460F9311F 17MiB |
| 0 N/A N/A 2268 G ...ures=SpareRendererForSitePerProcess 34MiB |
| 0 N/A N/A 6834 G ...sion,SpareRendererForSitePerProcess 93MiB |
| 0 N/A N/A 27206 G /usr/lib/firefox/firefox 210MiB |
+---------------------------------------------------------------------------------------+
安装cuda命令如下:
(base) fzl@CH-AILAB-Robot:~/Documents$ sudo ./cuda_12.1.0_530.30.02_linux.run
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-12.1/
Please make sure that
- PATH includes /usr/local/cuda-12.1/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-12.1/lib64, or, add /usr/local/cuda-12.1/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.1/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 530.00 is required for CUDA 12.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run --silent --driver
Logfile is /var/log/cuda-installer.log
查看cuda安装版本:
(base) fzl@CH-AILAB-Robot:~/Documents$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Feb__7_19:32:13_PST_2023
Cuda compilation tools, release 12.1, V12.1.66
Build cuda_12.1.r12.1/compiler.32415258_0
至此,安装过程告一段落…
3.安装过程的其他问题
(1)libcudnn.so.8文件找不到问题
问题描述:
ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory
(myenv_humanoid) fzl@CH-AILAB-Robot:~/Documents/humanoid-gym/humanoid$ find /usr -name "libcudnn.so.8" 找不到文件的目录
具体解决步骤如下:
需要使用以下步骤来安装cudnn库:(参考版本cudnn-linux-x86_64-8.8.0.121_cuda12-archive.tar.xz)
(base) fzl@CH-AILAB-Robot:~/Documents$ tar -xvf cudnn-linux-x86_64-8.8.0.121_cuda12-archive.tar.xz
#进入解压后的目录:
(base) fzl@CH-AILAB-Robot:~/Documents$ cd cudnn-linux-x86_64-8.8.0.121_cuda12-archive/
(base) fzl@CH-AILAB-Robot:~/Documents/cudnn-linux-x86_64-8.8.0.121_cuda12-archive$ ls
include lib LICENSE
#复制 cudnn 文件到 CUDA 安装目录:
(base) fzl@CH-AILAB-Robot:~/Documents/cudnn-linux-x86_64-8.8.0.121_cuda12-archive$ sudo cp include/cudnn*.h /usr/local/cuda/include
(base) fzl@CH-AILAB-Robot:~/Documents/cudnn-linux-x86_64-8.8.0.121_cuda12-archive$ sudo cp lib/libcudnn* /usr/local/cuda/lib64
#更新库缓存:
(base) fzl@CH-AILAB-Robot:~/Documents/cudnn-linux-x86_64-8.8.0.121_cuda12-archive$ sudo ldconfig
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 is not a symbolic link
/sbin/ldconfig.real: /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 is not a symbolic link
(base) fzl@CH-AILAB-Robot:~/Documents/cudnn-linux-x86_64-8.8.0.121_cuda12-archive$
这样你就完成了 cudnn 的安装,ImportError: libcudnn.so.8: cannot open shared object file: No such file or directory问题解决。
(2)libcupti.so.12文件找不到问题
问题描述:
ImportError: libcupti.so.12: cannot open shared object file: No such file or directory
具体解决步骤如下:
如果安装了 CUDA Toolkit 但找不到 libcupti.so.12 文件,可以尝试以下步骤解决问题:
1、确认文件位置:
查找 libcupti.so.12 文件所在的位置。通常它位于 /usr/local/cuda/lib64 目录下。可以使用以下命令查找:
find /usr/local/cuda -name "libcupti.so.12"
2、检查安装包:
确保你下载并安装了包含 CUPTI 的完整 CUDA Toolkit。某些安装包可能不包含 CUPTI 组件。你可以从 NVIDIA CUDA Toolkit 下载页面 重新下载并安装完整的 CUDA Toolkit。
3、重新安装 CUDA Toolkit:
如果文件确实不存在,尝试重新安装 CUDA Toolkit,确保安装过程中没有错误。使用官方安装包进行全新安装。
https://developer.nvidia.com/cuda-12-1-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=runfile_local
Installation Instructions:
$ wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
$ sudo sh cuda_12.1.0_530.30.02_linux.run
4、检查环境变量:
确保 LD_LIBRARY_PATH 环境变量包含了 CUDA 库路径:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
5、更新系统链接:
有时系统链接可能没有正确更新。运行以下命令,确保系统链接了正确的库:
$ sudo ldconfig
完成这些步骤后,libcupti.so.12 应该能被系统找到。如果问题依然存在,可能需要检查 CUDA Toolkit 的安装文档或寻求 NVIDIA 的技术支持。
***关键步骤,确保安装CUDA Toolkit后可以找到libcupti.so.12 文件***
#查找libcupti.so.12 文件目录
fzl@CH-AILAB-Robot:~/Documents/$ sudo find / -name "libcupti.so.12"
[sudo] password for fzl:
/usr/local/cuda-12.1/extras/CUPTI/lib64/libcupti.so.12
/usr/local/lib/python3.8/dist-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/fzl/.local/lib/python3.8/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
/home/fzl/anaconda3/envs/myenv/lib/python3.8/site-packages/nvidia/cuda_cupti/lib/libcupti.so.12
find: ‘/tmp/.mount_omnivejeCnxP’: Permission denied
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
#添加libcupti.so.12 文件目录到cuda目录即可
sudo cp /usr/local/cuda-12.1/extras/CUPTI/lib64/libcupti.so.12 /usr/local/cuda/lib64
这样你就解决了 ImportError: libcupti.so.12: cannot open shared object file: No such file or directory问题。
三、安装CUDA Toolkit
linux和windows不同系统重新安装CUDA Toolkit 12.1
具体步骤如下:
1. 卸载现有的CUDA Toolkit
Linux:
查找已安装的CUDA Toolkit:
dpkg -l | grep cuda
或者使用:
rpm -qa | grep cuda
卸载CUDA Toolkit:
使用以下命令卸载CUDA Toolkit(可能需要sudo权限):
sudo apt-get --purge remove 'cuda*'
或者,如果你使用的是RPM包:
sudo yum remove cuda*
还可以通过查找CUDA安装目录并删除相关文件:
sudo rm -rf /usr/local/cuda*
Windows:
打开“控制面板” -> “程序和功能”。
找到CUDA Toolkit相关条目,右击选择“卸载”。
按照提示完成卸载过程。
2. 下载CUDA Toolkit 12.1
访问NVIDIA CUDA Toolkit下载页面https://developer.nvidia.com/cuda-downloads。
选择你的操作系统、体系结构、版本等选项,然后点击“下载”以获取CUDA Toolkit 12.1的安装包。
3. 安装CUDA Toolkit 12.1
Linux:
下载并解压CUDA Toolkit安装包:
tar -xzvf cuda_12.1.0_<your-platform>.tgz
运行安装程序:
sudo sh cuda_12.1.0_<your-platform>.run
安装过程中,你可以选择是否安装驱动程序、工具包、样例等组件。通常,你只需要选择安装“CUDA Toolkit”和“CUDA Samples”。
设置环境变量:
编辑~/.bashrc或~/.zshrc文件,并添加以下行:
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
然后执行:
source ~/.bashrc
Windows:
运行下载的CUDA Toolkit安装程序:
双击安装包并按照提示进行安装。可以选择“自定义”安装以选择需要的组件(通常选择“CUDA Toolkit”)。
设置环境变量:
安装程序通常会自动设置环境变量。如果没有,你可以手动设置:
右击“此电脑”或“计算机”,选择“属性”。
点击“高级系统设置”,然后点击“环境变量”。
在“系统变量”中找到PATH,点击“编辑”。
添加CUDA的bin和lib路径,通常是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin和C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp。
4. 验证安装
打开一个终端(Linux)或命令提示符(Windows),运行:
nvcc --version
你应该看到CUDA Toolkit 12.1的版本信息。
你也可以编译并运行CUDA样例程序来验证安装是否成功。样例程序通常位于/usr/local/cuda-12.1/samples(Linux)或C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\samples(Windows)。
总结
在Ubuntu 20.04上重新部署RTX 4090显卡驱动和CUDA环境的步骤如下:
卸载旧版本: 清理旧的显卡驱动和CUDA Toolkit,确保没有残留的旧版本干扰新安装。
下载驱动和CUDA Toolkit: 从NVIDIA官方网站下载最新的显卡驱动和CUDA Toolkit 12.1版本。
安装显卡驱动: 使用NVIDIA提供的安装程序或通过apt安装最新的驱动程序,确保驱动与显卡兼容。
安装CUDA Toolkit: 运行CUDA Toolkit的安装程序,选择适当的安装选项,并配置环境变量。
验证安装: 通过检查驱动和CUDA版本,以及编译和运行CUDA样例程序,确保一切正常工作。
这样,你可以确保系统能有效利用RTX 4090的强大计算能力,提供稳定且高效的计算环境。如果在安装过程中遇到问题,可以参考NVIDIA的官方文档。