首页 文章

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

提问于
浏览
0

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

My local Directory Structure:

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

enter image description here

My Understanding

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

Updates (Conflicting Directory Structure)

enter image description here

2 回答

  • 1

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

    1.为所有用户安装cuDNN:

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

    • 下载正确的cuDNN版本 . 对于TensorFlow r1.1,对于CUDA 8.0,这将是cuDNN v5.1 .

    • 解压缩 .tgz 文件 . 打开终端,导航到您下载cuDNN的文件夹,然后打电话

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

    注意:这只是一个示例,请在调用之前检查文件名 .

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

    • 将下载的文件移动到 /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与上述相同 .

    • 将提取的 cuda 文件夹移动到您选择的位置 .

    • 将此目录添加到 $LD_LIBRARY_PATH 环境变量中 . 在终端中,您可以通过呼叫来完成此操作

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

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

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

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

  • 1

    要运行支持GPU的TensorFlow 1.4,您应首先安装CUDA 8(补丁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 ar /usr/local/cuda/include/cudnn.h / usr / local / cuda / lib64 / libcudnn *

    更新您的bash文件

    nano~ / .bashrc

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

    export CUDA_HOME = / usr / local / cuda export LD_LIBRARY_PATH = $ / lib64:$ LD_LIBRARY_PATH export PATH = $ / bin:$

    安装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命令行中运行以下命令来测试安装:

    from tensorflow.python.client import device_lib def get_available_gpus():local_device_protos = device_lib.list_local_devices()如果x.device_type =='GPU',返回[x.name for x in local_device_protos] get_available_gpus()

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

    2017-11-22 03:18:15.187419:I tensorflow / core / platform / cpu_feature_guard.cc:137]您的CPU支持未编译此TensorFlow二进制文件的指令:SSE4.1SSE4.2 AVX AVX2 FMA 2017-11-22 03:18:17.986516:I tensorflow / stream_executor / cuda / cuda_gpu_executor.cc:892]从SysFS读取的成功NUMA节点具有负值(-1),但必须至少有一个NUMA节点,所以返回NUMA节点零2017-11-22 03:18:17.986867:I tensorflow / core / common_runtime / gpu / gpu_device.cc:1030]找到具有属性的设备0:名称:Tesla K80 major:3 minor: 7 memoryClockRate(GHz):0.8235 pciBusID:0000:00:1e.0 totalMemory:11.17GiB freeMemory:11.10GiB 2017-11-22 03:18:17.986896:I 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' ]

相关问题