在 Ubuntu 22.04 LTS/桌面版本上从 Ubuntu 存储库安装 cuda 驱动程序和 cuda-toolkit 时,我遇到了严重的软件包冲突问题。我可以选择 nvidia-utils 或 nvidia-cuda-toolkit。但我需要 nvcc 和 nvidia-smi。
驱动程序安装:
# ubuntu-drivers devices
# sudo ubuntu-drivers autoinstall
为我提供推荐的 nvidia-driver-515 包以及 nvidia-utils-515(和 nvidia-smi)。
工具包安装:
# apt install nvidia-cuda-toolkit
删除 nvidia-utils-515 包!
没有办法解决这个问题,因为在 nvidia-utils-515 上进一步重新安装尝试会删除 toolikt 包!
# apt install nvidia-utils-515
(...)
The following packages will be REMOVED:
libcuinj64-11.5 libnvidia-compute-495 libnvidia-compute-510 libnvidia-ml-dev nsight-systems nsight-systems-target nvidia-cuda-dev nvidia-cuda-toolkit nvidia-profiler
nvidia-visual-profiler
The following NEW packages will be installed:
libnvidia-compute-515 nvidia-utils-515
(...)
如何在不使用 nvidia 存储库的情况下使用 smi 和 nvcc 完成 cuda 安装?
更新:临时纯 ubuntu repo 依赖解决方案(但最终会使用较旧的驱动程序):在 ubuntu 存储库中的工具包更新之前(nvidia-cuda-toolkit 依赖于 libnvidia-compute-510),可以降级到 nvidia-driver-510。这与 nvidia-cuda-toolkit 不冲突。此外,由于工具包将文件分布在许多其他目录中,因此可以创建假的 cud 目录。当前的临时解决方案如下所示:
ubuntu-drivers devices
apt install nvidia-driver-510
update-initramfs -u
reboot
apt install nvidia-cuda-toolkit
mkdir /usr/local/cuda
cd /usr/local/cuda
ln -s /usr/lib/nvidia-cuda-toolkit/bin bin
ln -s /usr/include include
ln -s /usr/lib/x86_64-linux-gnu lib64
ln -s /usr/share share
答案1
解决方案
目前(2022年9月8日)您可以在NVIDIA网站上下载CUDA工具包(根据您的Ubuntu版本,也可以切换到其他系统):
而不必单独下载驱动程序和工具包apt
。
程序
为此,您需要首先删除现有驱动程序(510 或 515)和/或工具包(可能已从 安装
apt
),具体取决于您遇到的问题。请注意,nvidia-utils-yourversion
不应删除;按照上面链接中的说明进行操作(最后一步重启时请严格按照说明进行操作,否则
nvidia-smi
工具无法正常工作);最后,对我来说,必须手动为 CUDA 工具包创建一个符号链接,
sudo ln -s /usr/local/cuda-11.7/bin/* /usr/bin
(注:这里我安装的是11.7版本,目录中的版本名要根据你安装的版本进行修改)
然后nvidia-smi
和都nvcc -V
起作用。
评论
按照此方法,nvcc -V
可得
nvcc:NVIDIA (R) Cuda 编译器驱动程序版权所有 (c) 2005-2022 NVIDIA Corporation 于 2022 年 6 月 8 日星期三 16:49:14_PDT 构建 Cuda 编译工具,版本 11.7,V11.7.99 构建 cuda_11.7.r11.7/compiler.31442593_0
并nvidia-smi
给出
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.65.01 Driver Version: 515.65.01 CUDA Version: 11.7 |
|-------------------------------+----------------------+----------------------+
| 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 ... Off | 00000000:01:00.0 Off | N/A |
| N/A 43C P3 N/A / N/A | 5MiB / 6144MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
CUDA版本和驱动程序版本兼容。
答案2
我遇到了同样的问题,我有 515 驱动程序,可以安装 nvidia-cuda-toolkit。安装后指南来自英伟达有帮助:如果你编译并运行设备查询脚本(创建符号链接后),它会抛出错误system has unsupported display driver / cuda driver combination.
安装 510 驱动程序,重新启动,然后就好了!然后 Blender 就可以使用 GPU 了!
文件夹的符号链接:
ln -s /usr/lib/nvidia-cuda-toolkit/ /usr/local/cuda
答案3
@Lukas the Silvan 和 @yongxi 的解决方案适用于部分系统,但并非所有系统。因此,我添加了一个更通用的解决方案来解释该方法:
这是一个通用的解决方案独立的来自 cuda 版本。
目标是设置名为 的 cuda 库的正确路径
libcudart.so.<version number>
。我们通过以下方式找到这条路径
sudo find / -name 'libcudart.so.<version number>'
我们必须添加包含配置文件脚本的文件夹(而不是文件)的路径
libcudart.so.<version number>
,例如.bashrc
:export LD_LIBRARY_PATH=<path to libcudart.so file>:$LD_LIBRARY_PATH
关键在于系统之间差异很大。
答案4
我在 Ubuntu Server 22.04 / Dell R730 / Tesla P100 上解决了这个问题:
首先,我从更高版本的驱动程序和 CUDA 安装开始: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local
下面是我用来安装上述下载页面提供的代码:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.2.1/local_installers/cuda-repo-ubuntu2204-12-2-local_12.2.1-535.86.10-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-2-local_12.2.1-535.86.10-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt -y install cuda
cuda 已安装并显示在:cd /usr/local/cuda
但是nvcc --version
显示:
Command 'nvcc' not found, but can be installed with:
修复这个问题:
看起来 cuda 不在 $PATH 中,使用以下命令检查echo $PATH
/home/cem/anaconda3/bin:/home/cem/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
我们将编辑 $PATH
nano ~/.bashrc
将此复制到最后。
export PATH=/usr/local/cuda/bin:$PATH
保存并退出(Ctrl+ o, Enter, Ctrl+ x)
更新源。
source ~/.bashrc
检查它是否有效。
which nvcc
/usr/local/cuda/bin/nvcc
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jul_11_02:20:44_PDT_2023
Cuda compilation tools, release 12.2, V12.2.128
Build cuda_12.2.r12.2/compiler.33053471_0
是的,它起作用了,但是仍然:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
2.0.1
False
卸载 torch-vision 并重新安装。
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio -f https://download.pytorch.org/whl/cu122/torch_stable.html
重新启动机器。
sudo reboot now
检查是否已安装。
print("Torch version:",torch.__version__)
print("CUDA version used by PyTorch:", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
print("Number of CUDA devices:", torch.cuda.device_count())
print("Current CUDA device:", torch.cuda.current_device())
Torch version: 2.0.1+cu117
CUDA version used by PyTorch: 11.7
CUDA available: True
Number of CUDA devices: 1
Current CUDA device: 0
哒哒!
nvidia-smi cuda 版本与 nvcc --version 不匹配 ????
nvidia-smi
显示 nvidia 驱动可以支持的 CUDA 最高版本。