[英]Tensorflow-gpu doesn't working with Nvidia driver 455.45 & CUDA version - 11.1 on UBUNTU 20.04
[英]system76 ubuntu 20.04 tensorflow gpu cuda version conflicts
从 18.04 升级到 Ubuntu 20.04 后 Tensorflow 不再能够使用我的 gpu (因为它正在尝试混合和加载不同的版本)。 这是一台 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.
请注意,所有警告都是针对尝试加载版本 11 的 Cuda 的,但它仅适用于某些库。 版本 10 加载正常。
这是 nvcc --version 的 output
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的output
+-----------------------------------------------------------------------------+
| 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 的 output 中的驱动程序版本是 11 版,但据我了解,这与 cuda 运行时无关。 这只是驱动程序支持的版本。 如我错了请纠正我。
我必须使用版本 10,因为这是 System76 支持的版本,并且在升级之前它运行良好。 我还尝试通过 pip3 卸载并重新安装 Tensorflow 并且没有运气。
有谁知道如何让所有库同步到 10.1 版? 我还尝试手动放置版本 11 库并让 Tensorflow 使用混合版本(这当然是个坏主意)但它不会识别它们(或者我没有正确放置它们)。
正如@talonmies 指出的那样,我误解了版本控制系统。 不过,因为是System76的机器,所以也让人困惑,因为System76使用的是自己的Nvidia驱动,安装Cuda 11和Cudnn也不是很简单。 我发布答案以防其他人遇到 System76 问题。
首先,不要为 Cuda 和 Cudnn 使用 System76 安装。 他们有自己的版本(在他们的网站上),以便与他们的 Nvidia 驱动程序兼容,但他们不会工作(他们是版本 10,而 TF 2.2+ 需要 11)。 此外,大多数通用 Cuda 指南会告诉您首先卸载/安装 Nvida 驱动程序以便进行全新安装,但如果您有 System76 系统,请不要这样做。 只需不理会 System76 驱动程序。 此外,如果您有任何以前的 Cuda/Cudnn,请将其全部删除/卸载。
Go 到 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
当它运行时,它会告诉您您与驱动程序 package 有冲突。 忽略它并继续。 当您进入安装菜单时,取消选中“安装驱动程序”并继续安装。 完成后,添加到您的路径
/usr/local/cuda-11.0:/usr/local/cuda-11.0/bin:
您需要同时添加 cuda 根和 bin,而不仅仅是 bin(这与大多数通用指令不同)。 来源 your.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。
非常感谢。 我使用 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 包.....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.