首页 > 解决方案 > Tensorflow:找出预构建的 tensorflow 轮子所针对的 CUDA/CuDNN 版本

问题描述

我已经安装了 tensorflow-gpu 1.14,但是我通过预构建的轮子安装了它,所以我不知道它最初构建的 CUDA/CuDNN 版本是什么。如何找出来?

我问这个问题的原因是,就我而言,我想先安装一个特定的 Tensorflow 轮,然后再安装所需的 CUDA/CuDNN 版本以支持我的 Tensorflow。如果运行时 CUDA/CuDNN 库与 Tensorflow 构建的原始 CuDA/CuDNN 库不匹配,则可能会出现错误“找不到'cudart64_80.dll'”或“7.1.5 中内置的 cudnn 库不匹配” ,运行时间为 7.0.5"。

特别是在我的情况下,我的错误消息是“tensorflow/stream_executor/platform/default/dso_loader.cc:53] 无法 dlopen library 'libcudnn.so.7'; dlerror: libcudnn.so.7: cannot open shared object file:没有这样的文件或目录;LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/cuda-9.0/lib64:"

这个错误很奇怪,因为 libcudnn.so.7 已实际安装并正确链接,请参阅

$ sudo ldconfig -p | grep libcudnn.so.7  
        libcudnn.so.7 (libc6,AArch64) => /usr/local/cuda/lib64/libcudnn.so.7  
        libcudnn.so.7 (libc6,AArch64) => /usr/lib/aarch64-linux-gnu/libcudnn.so.7  
$ ls -alh /usr/local/cuda/lib64/libcudnn.so.7  
lrwxrwxrwx 1 root root 44 Oct 17 19:17 /usr/local/cuda/lib64/libcudnn.so.7 -> /usr/lib/aarch64-linux-gnu/libcudnn.so.7.1.4  
$ ls -alh /usr/lib/aarch64-linux-gnu/libcudnn.so.7  
lrwxrwxrwx 1 root root 44 Oct 17 17:48 /usr/lib/aarch64-linux-gnu/libcudnn.so.7 -> /usr/lib/aarch64-linux-gnu/libcudnn.so.7.1.4

我的调试过程,(1)我试图通过以下方式在我的系统中找到 tensorflow 包

$ python -c "import tensorflow as tf; print(tf.__file__)"
***/lib/python3.5/site-packages/tensorflow/__init__.py

(2) 然后我 cd 到那个目录并试图找出硬编码的构建信息

$ cat python/platform/build_info.py 
is_cuda_build = True
cuda_version_number = '9.0'
cudnn_version_number = '7.1'

但是,如果这是真的,我仍然无法理解为什么会发生错误。

注意:
1. 引用原始的 Tensorflow-to-CUDA/CuDNN 绑定不起作用,因为我的 tensorflow 是通过预先构建的轮子安装的。
2. 检查运行时 CUDA/CuDNN 并不能回答问题,我是在构建阶段询问库。
3. 基于runtime CUDA/CuDNN重新安装Tensorflow不是首选方案。

标签: tensorflowarm64

解决方案


了解安装的 CUDA/cuDNN 版本

nvidia-smi

Tensorflow 1.14 支持 CUDA 10.0 和 cuDNN 7.4。

要安装支持 GPU 的 Tensorflow,请按照Tensorflow站点中提到的说明进行操作。


推荐阅读