Cuda nn路径在ubuntu 16.04上安装Tensorflow gpu时出现问题

时间:2017-05-15 11:53:04

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

我正在我的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系统上正确运行,还是需要做其他事情?

我的本地目录结构:

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

enter image description here

我的理解

我觉得它正试图在路径/usr/local/cuda-8.0.61/lib64中打开CUDA库,而实际上有/usr/local/cuda-8.0/lib64和/ usr / local的路径/ CUDA / lib64下。 Itried重命名那条路但仍然无法工作?

更新(目录结构冲突)

enter image description here

2 个答案:

答案 0 :(得分: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*
    
  4. 那已经是它了。 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添加到路径中。

    3. 有了这个,TensorFlow将能够找到cuDNN并按预期工作。

答案 1 :(得分:1)

要运行支持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 /本地/ CUDA / lib64下/ libcudnn *

更新您的bash文件

  

nano~ / .bashrc

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

  

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

安装libcupti-dev库

  

sudo apt-get install libcupti-dev

安装pip

  

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()

  •   
  • 如果x.device_type =='GPU',则在local_device_protos中返回[x.name for x]

  •   
     

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   具有属性:

     

名称:特斯拉K80专业:3小调:7 memoryClockRate(GHz):0.8235

     

pciBusID:0000:00:1e.0

     

totalMemory:11.17GiB freeMemory:11.10GiB

     

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

     

[U” /设备:GPU:0']