![我有 CUDA,但 Steam 20.04 无法运行](https://linux22.com/image/1069273/%E6%88%91%E6%9C%89%20CUDA%EF%BC%8C%E4%BD%86%20Steam%2020.04%20%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C.png)
我需要 Cuda 10.1,用于 PyTorch、TensorFlow 和 MatLab。它们不支持 Cuda 11。我还需要 steam 来玩游戏。有什么方法可以在 steam 上玩游戏的同时使用 Cuda 的并行处理吗?请帮忙。
Steam 需要 libnvidia-gl-440:i386。
The following packages have unmet dependencies:
libnvidia-gl-440:i386 : Depends: libnvidia-gl-450:i386 but it is not going to be installed
但是安装 libnvidia-gl-450:i386 时显示:
The following packages will be REMOVED:
cuda-10-1 cuda-demo-suite-10-1 cuda-drivers cuda-drivers-450 cuda-runtime-10-1 libnvidia-compute-450 libnvidia-decode-450 libnvidia-encode-450 libnvidia-gl-450 libnvidia-ifr1-450 nvidia-compute-utils-450 nvidia-driver-450 nvidia-utils-450
尝试过的链接: Steam 无法在 Ubuntu 18.04 上启动 Steam 无法在 Ubuntu 20.04 上运行但没有同时帮助 Cuda 和 steam。
编辑:
不仅 steam 有这个问题,其他 32 位应用程序也不允许我使用。安装时libnvidia-gl-450:i386
要求删除Cuda 10.1
,但我无法删除。
我正在寻找一种运行 Cuda的方法,以及使用所有 32 位 arch 应用程序。如上所述Matlab
,不支持。Pytorch
TensorFlow
Cuda 11
答案1
我遇到了同样的问题(Ubuntu 18.04 和 CUDA 11.0,但问题似乎相同)
NVidia 有 3 个安装选项。NVidia 本身的安装程序和两个 .deb 选项。.debs 不包含任何 i386 软件包。但是自定义安装程序包含。因此对于 Steam,您需要使用 .run 文件进行安装。
我需要 TensorRT,但它有一些依赖项似乎无法通过 .run 文件安装。如果 TensorFlow 有类似的问题,我也不会感到惊讶。解决方案也是安装 .deb,但不通过 .deb 安装 cuda。
由于可能会出错,你最好备份你的系统文件
sudo sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*"
sudo apt-get --purge remove "*nvidia*"
- 新黑名单:
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo reboot
答案2
Steam 和 CUDA 10.1 之间没有冲突——您描述的问题是由于英特尔对其 CUDA 软件包附加了不必要的依赖项(对它们包含的 Nvidia 驱动程序)造成的。这些不必要的 Nvidia 软件包可能是旧驱动程序,比您当前在 Ubuntu 上使用的驱动程序更旧,也可能是新驱动程序,甚至可能不适合您硬件。无论如何,有两种可能的解决方案:
- 下载 Intel CUDA deb,解压而不是安装,继续解压任何包含的 deb,跳过 Nvidia 包含的 deb,这样你就可以在本地安装 CUDA 文件,而完全不需要包管理器的参与。查看答案关于在Ubuntu 20.04上安装CUDA 10.1的问题,根文件夹是空的对于这种方法。
- 从 Intel CUDA deb 运行安装程序到已知位置 - 避免将 cuda libs 和可执行文件传播到整个系统。处理旧的/新的 Nvidia 驱动程序(如果可能的话),首先备份 CUDA 文件,因为您的有用包管理器会删除它们(它们依赖于您要替换的 Nvidia 包)。安装您选择的 Nvidia 驱动程序(这会删除您的所有 CUDA 文件!),然后从备份中恢复 CUDA 文件。清理所有“rc”删除/配置的剩余 CUDA 包。很麻烦,但当 CUDA deb 中包含较旧的 Nvidia 驱动程序时,它可以工作。
提供的 Ubuntu CUDA 包似乎是 Intel deb 提供的一部分,也许它们适合您,但您无法控制版本。
答案3
Steam 和 Linux 上的大多数游戏都依赖于可用的 32 位 OpenGL 库。然而,Nvidia计划暂时放弃对 CUDA 的 32 位支持。幸运的是,可以手动安装必要的 32 位库以使 Steam 正常工作。
我建议你从Nvidia 存储库首先,然后检查已安装的驱动程序版本。显然,32 位库文件必须与安装的驱动程序版本相匹配。可以使用安装程序提供的仅提取选项获取相应的文件,例如 465.19.01找司机然后执行 ./NVIDIA-Linux-x86_64-465.19.01.run -x
i386 库文件位于名为“32”的文件夹中。要手动安装 32 位库:
chmod u+x NVIDIA-Linux-x86_64-465.19.01.run
./NVIDIA-Linux-x86_64-465.19.01.run -x
cd NVIDIA-Linux-x86_64-465.19.01
cd 32
sudo cp libEGL* libGLESv* libGLX* libnvidia-egl* libnvidia-gl* libnvidia-tls* /usr/lib32
有一些应该创建的符号链接:
cd /usr/lib32
sudo ln -s libEGL_nvidia.so.465.19.01 libEGL_nvidia.so.0
sudo ln -s libGLESv1_CM_nvidia.so.465.19.01 libGLESv1_CM_nvidia.so.1
sudo ln -s libGLESv2_nvidia.so.465.19.01 libGLESv2_nvidia.so.2
sudo ln -s libGLX_nvidia.so.465.19.01 libGLX_indirect.so.0
sudo ln -s libGLX_nvidia.so.465.19.01 libGLX_nvidia.so.0
您可能需要运行此程序以便系统检测新的库:
sudo ldconfig
更新:我可以确认此方法适用于 470.57.02
答案4
解决方案:
sudo apt-get update --fix-missing
sudo dpkg --configure -a
sudo apt-get install -f
sudo apt-get clean
sudo apt-get autoremove
解锁 dpkg – (消息 /var/lib/dpkg/lock)
sudo fuser -vki /var/lib/dpkg/lock.
sudo dpkg --configure -a
您可以使用以下命令删除锁文件:
sudo rm /var/lib/apt/lists/lock
您可能还需要删除缓存目录中的锁定文件
sudo rm /var/cache/apt/archives/lock
现在您可以安装libnvidia-gl-450:i386
:
sudo apt install libnvidia-gl-450:i386
sudo apt autoremove
sudo apt upgrade