【问题标题】:system76 ubuntu 20.04 tensorflow gpu cuda version conflictssystem76 ubuntu 20.04 tensorflow gpu cuda 版本冲突
【发布时间】:2021-04-13 17:44:28
【问题描述】:

从 18.04 升级到 Ubuntu 20.04 后,Tensorflow 不再能够使用我的 gpu,因为它试图混合和加载不同的版本(一些 10 和一些 11)。这是一台 System76 机器,我从 System76 安装了 cuda 10.1(因此它可以与 System76 nvidia 驱动程序一起使用)。运行tensorflow时出现以下错误:

2021-01-07 18:12:22.584886: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-01-07 18:12:22.584906: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2021-01-07 18:12:23.640665: I tensorflow/compiler/jit/xla_cpu_device.cc:41] Not creating XLA devices, tf_xla_enable_xla_devices not set
2021-01-07 18:12:23.641412: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcuda.so.1
2021-01-07 18:12:23.669966: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:941] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2021-01-07 18:12:23.670257: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1720] Found device 0 with properties: 
pciBusID: 0000:01:00.0 name: GeForce GTX 1060 computeCapability: 6.1
coreClock: 1.733GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s
2021-01-07 18:12:23.670328: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-01-07 18:12:23.670379: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcublas.so.11'; dlerror: libcublas.so.11: cannot open shared object file: No such file or directory
2021-01-07 18:12:23.670425: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcublasLt.so.11'; dlerror: libcublasLt.so.11: cannot open shared object file: No such file or directory
2021-01-07 18:12:23.671387: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10
2021-01-07 18:12:23.671667: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10
2021-01-07 18:12:23.673022: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.10
2021-01-07 18:12:23.673100: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcusparse.so.11'; dlerror: libcusparse.so.11: cannot open shared object file: No such file or directory
2021-01-07 18:12:23.673245: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8
2021-01-07 18:12:23.673259: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU.

请注意,所有警告都是针对尝试加载 Cuda 版本 11 的,但它仅针对某些库。版本 10 加载正常。

这是 nvcc --version 的输出

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Fri_Feb__8_19:08:17_PST_2019
Cuda compilation tools, release 10.1, V10.1.105

这是 nvidia-smi 的输出

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.38       Driver Version: 455.38       CUDA Version: 11.1     |
|-------------------------------+----------------------+----------------------+
| 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  GeForce GTX 1060    Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   53C    P0    26W /  N/A |    585MiB /  6069MiB |      4%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      2999      G   /usr/lib/xorg/Xorg                101MiB |
|    0   N/A  N/A      3479      G   /usr/lib/xorg/Xorg                255MiB |
|    0   N/A  N/A      3720      G   /usr/bin/gnome-shell               88MiB |
|    0   N/A  N/A      6487      G   ...AAAAAAAA== --shared-files       45MiB |
|    0   N/A  N/A      6959      G   ...AAAAAAAA== --shared-files       40MiB |
|    0   N/A  N/A     11642      G   ...AAAAAAAA== --shared-files       21MiB |
|    0   N/A  N/A     25206      G   WickrMe                            17MiB |
+-----------------------------------------------------------------------------+

我看到 nvidia-smi 输出中的驱动程序版本是 11 版,但据我了解,这与 cuda 运行时无关。这只是驱动程序支持的版本。如果我错了,请纠正我。

我必须使用版本 10,因为这是 System76 支持的版本,并且在升级之前它运行良好。我也尝试通过 pip3 卸载并重新安装 Tensorflow,但没有成功。

有谁知道如何将所有库同步到 10.1 版?我还尝试手动放置版本 11 的库并让 Tensorflow 使用混合版本(这当然是个坏主意)但它无法识别它们(或者我没有正确放置它们)。

【问题讨论】:

标签: tensorflow ubuntu cuda cudnn


【解决方案1】:

正如@talonmies 指出的那样,我误解了版本控制系统。不过因为是 System76 的机器,所以也让人困惑,因为 System76 使用的是自己的 Nvidia 驱动,安装 Cuda 11 和 Cudnn 也不是很简单。我发布答案以防其他人遇到 System76 问题。

首先,不要为 Cuda 和 Cudnn 使用 System76 安装。他们有自己的版本(在他们的网站上),以便与他们的 Nvidia 驱动程序兼容,但他们不会工作(他们是版本 10,而 TF 2.2+ 需要 11)。此外,大多数通用 Cuda 指南会告诉您首先卸载/安装 Nvida 驱动程序以便进行全新安装,但如果您有 System76 系统,请不要这样做。只需不理会 System76 驱动程序。此外,如果您有任何以前的 Cuda/Cudnn,请将其全部删除/卸载。

前往 Nvidia 获取他们最新的 Cuda 和 Cudnn。我用过

wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run

运行它

sudo sh cuda_11.0.2_450.51.05_linux.run

当它运行时它会告诉你你与驱动程序包有冲突。忽略它并继续。当您进入安装菜单时,取消选中“安装驱动程序”并继续安装。完成后,添加到您的路径中

/usr/local/cuda-11.0:/usr/local/cuda-11.0/bin:

您需要同时添加 cuda root 和 bin,而不仅仅是 bin(这与大多数通用指令不同)。获取您的 .bashrc 或 .profile 或添加路径的任何位置(或打开一个新终端)。

现在安装 Cudnn。

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb

使用 dpkg 安装它。例如(在我的情况下)...

sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb

就是这样。一旦我完成了所有这些,一切都很好。希望能帮助一些 System76 人更轻松地通过 Ununtu 20.04 和 Cuda 11。

【讨论】:

  • 非常感谢!但是,在安装完所有内容后,我没有看到 nvcc。哦,等等,这是 /usr/local/cuda- 的权限被锁定的典型问题。是的,这一切都适合我。
【解决方案2】:

非常感谢。 我使用 POP OS 的原因之一是 Nvidia 驱动程序+cuda/cudnn 只与 tensorflow 一起工作,直到这个问题与版本 11.0 丢失。

我需要能够使用上面的配方安装 cuda 11.0 的一件事是安装 gcc 版本 8:

sudo apt -y install gcc-8 g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8

我真希望 POP!_os 能直接提供 CUDA 11.0 包.....

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2021-10-27
    • 1970-01-01
    • 2019-06-04
    • 2021-07-19
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多