【问题标题】:Cuda nn path issues in installing Tensorflow gpu on ubuntu 16.04在 ubuntu 16.04 上安装 Tensorflow gpu 时出现 Cuda nn 路径问题
【发布时间】:2017-05-15 11:53:03
【问题描述】:

我正在我的 ubuntu 16.04 机器上安装最新的 Tensorflow 库。 为此,我下载并安装了最新的 Cuda 工具包和 Cuda nn 库。

安装后我使用以下命令检查了它。

(/home/naseer/anaconda2/) naseer@naseer-Virtual-Machine:~/anaconda2$ python
Python 2.7.13 |Anaconda 4.3.1 (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:102] Couldn't open CUDA library libcudnn.so. LD_LIBRARY_PATH: /usr/local/cuda-8.0.61/lib64
I tensorflow/stream_executor/cuda/cuda_dnn.cc:2259] Unable to load cuDNN DSO
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally

上面的输出是什么意思?这是否意味着 Tensorflow 将在我启用了 Nvidia GPU 的系统上正确运行,还是我需要做其他事情?

我的本地目录结构:

我添加了以下屏幕截图,显示了我本地目录中的各种库路径。

我的理解

我感觉它试图在路径 /usr/local/cuda-8.0.61/lib64 中打开 CUDA 库,而实际上有 /usr/local/cuda-8.0/lib64 和 /usr/local 的路径/cuda/lib64.尝试重命名该路径但仍然无法工作?

更新(目录结构冲突)

【问题讨论】:

  • 我已经安装了 cuda nn 并按照您建议的链接给出了它的路径,但它不起作用。
  • @hbaderts 我添加了更具体的描述来解决我的独特问题。我希望它也可以帮助其他人。
  • echo $LD_LIBRARY_PATH 的输出是什么?
  • 对不起@hbaderts 我的实验室现在关闭。现在我明天告诉你。谢谢

标签: tensorflow gpu ubuntu-16.04 nvidia hyper-v


【解决方案1】:

要运行 TensorFlow,您必须安装 cuDNN。有两种可能的方法:

1。为所有用户安装 cuDNN:

这是official TensorFlow documentation 描述的方式。 在这里,cuDNN 安装在文件夹/usr/local/cuda 中。这样,该机器上的所有用户都可以使用 cuDNN。说明取自 TensorFlow 文档:

  1. 下载正确的 cuDNN 版本。对于 TensorFlow r1.1,这将是 CUDA 8.0 的 cuDNN v5.1。
  2. 解压.tgz 文件。打开终端,导航到下载 cuDNN 的文件夹,然后调用

    tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
    

    注意:这只是一个例子,调用前请检查文件名。

    这将创建一个名为 cuda 的新文件夹,其中包含两个子文件夹 includelib64,其中包含所有 cuDNN 文件。

  3. 将下载的文件移动到/usr/local/cuda。为此,您需要sudo 权限!

    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
    

就是这样。 TensorFlow 现在应该可以正常工作了。

2。在本地安装 cuDNN:

如果您没有管理员权限,或者您想在您的机器上安装不同的 cuDNN 版本,您可以将 cuDNN 安装到您选择的任何文件夹中,然后正确设置路径。该方法在this answer on StackOverflow提出,在NVIDIA官方安装说明中有说明。

第1、2步同上。

  1. 将提取的cuda 文件夹移动到您选择的位置。
  2. 将此目录添加到$LD_LIBRARY_PATH 环境变量。在终端中,您可以通过调用来做到这一点

    export LD_LIBRARY_PATH=/path/to/cudnn/lib64:$LD_LIBRARY_PATH
    

    其中/path/to/cudnn 是您在上一步中移动 cuDNN 的位置。注意最后的lib64

    通常,您必须在每次启动 TensorFlow 之前调用它。为避免这种情况,您可以编辑文件~/.bashrc 并在文件底部添加这一行。这将在您每次启动终端窗口时自动将 cuDNN 添加到路径中。

这样,TensorFlow 将能够找到 cuDNN 并按预期工作。

【讨论】:

  • 感谢您的回复。刚刚出现的一个新问题是,尽管我可以使用 ctrl+alt+f1 登录到命令 shell,但我无法登录到我的 ubuntu GUI?很多论坛都说要卸载英伟达是吗?
  • 不知道,抱歉。安装 NVIDIA 驱动程序时似乎出了点问题。如果您卸载它们,您将无法再使用 CUDA,因此您可能需要尝试卸载它们,确保 GUI 再次工作,然后再次安装 NVIDIA 驱动程序。
  • 请参阅我的问题更新部分。 /usr/local 目录中的我的 cuda 文件夹以及 CUDA_HOME 和 LD-LIBRARY_PATH 具有不同的名称。我是否也应该将我的 /usr/local cuda-8.0 名称重命名为 cuda-8.0.61?
  • 你在哪里创建CUDA_HOMELD_LIBRARY_PATH
  • 很高兴听到。祝你的项目好运
【解决方案2】:

要运行支持 GPU 的 TensorFlow 1.4,您应该首先安装 CUDA 8(+patch 2)和 cuDNN v6.0,您可能会发现 step-by-step installation guide 很有用。

安装 CUDA 8 驱动程序后,您需要安装 cuDNN v6.0:

下载 cuDNN v6.0 驱动程序。驱动可以从here下载,请注意需要先注册。

将驱动复制到远程机器(scp -r -i ...)

提取 cuDNN 文件,将它们复制到目标目录并从 .tgz 文件中提取文件:

tar xvzf cudnn-8.0-linux-x64-v6.0.tgz

sudo cp -P cuda/include/cudnn.h /usr/local/cuda/includesudo

cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

更新你的 bash 文件

纳米~/.bashrc

将以下行添加到 bash 文件的末尾:

导出 CUDA_HOME=/usr/local/cuda 导出 LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH 导出 PATH=${CUDA_HOME}/bin:${PATH}

安装 libcupti-dev 库

sudo apt-get install libcupti-dev

安装点子

sudo apt-get install python-pip

sudo pip install --upgrade pip

安装 TensorFlow

sudo pip install tensorflow-gpu

通过在 Python 命令行中运行以下命令来测试安装:

从 tensorflow.python.client 导入 device_lib

def get_available_gpus():

  • local_device_protos = device_lib.list_local_devices()

  • return [x.name for x in local_device_protos if x.device_type == ‘GPU’]

get_available_gpus()

对于单个 GPU,输出应类似于:

2017-11-22 03:18:15.187419: 我 tensorflow/core/platform/cpu_feature_guard.cc:137] 你的 CPU 支持 此 TensorFlow 二进制文件未编译使用的说明: SSE4.1 SSE4.2 AVX AVX2 FMA

2017-11-22 03:18:17.986516: 我 tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:892] 成功 从 SysFS 读取的 NUMA 节点具有负值 (-1),但必须有 至少有一个 NUMA 节点,所以返回 NUMA 节点零

2017-11-22 03:18:17.986867: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] 找到设备 0 带属性:

名称:Tesla K80 主要:3 次要:7 memoryClockRate(GHz):0.8235

pciBusID:0000:00:1e.0

总内存:11.17GiB 免费内存:11.10GiB

2017-11-22 03:18:17.986896: 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:1120] 创建 TensorFlow 设备 (/device:GPU:0) -> (设备: 0, 名称: Tesla K80, pci 总线id:0000:00:1e.0,计算能力:3.7)

[u'/device:GPU:0']

【讨论】:

    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多