配置tensorflow GPU 版本填坑路

导语 运气好按照教程一把过,运气不好遇到一堆抓狂的问题,记录下踩到的坑

如果是练习教程中的例子tensorflow cpu 版本够用了,要训练的话还是gpu版本要快很多,

本文记录了在我们配备的主流Mac电脑上,安装gpu版本常见问题和解决方法

显卡为:

  芯片组型号:    NVIDIA GeForce GTX 775M
  类型:    GPU
  总线:    PCIe
  PCIe Lane 宽度:    x16
  VRAM(总和):    2048 MB
  供应商:    NVIDIA (0x10de)  
一. 环境


Mac OSX 10.12
Python:3.6.2
CUDA Toolkit 8.0
cuDNN 5.1

 二. tensorflow 的安装

 参考官方教程,https://www.tensorflow.org/install/install_mac, 不再赘述

建议

1 如果你使用Pycharm编辑器的话,Pycharm自带虚拟环境创建,建议安装到PyCharm的虚拟环境中。

2如果你裸写,建议使用virtualenv来安装tensorflow

三. 安装CUDA

1.安装 CUDA Driver 8.0:

请到如下地址安装最新版 CUDA Driver for Mac:
http://www.nvidia.com/object/mac-driver- archive.html

安装完成后再偏好设置里会看到这个选项

2. 安装 CUDA Toolkit 8.0: 建议在线下载 dmg 安装包安装 CUDA Toolkit 8.0,下载地址如下: https://developer.nvidia.com/compute/cuda/8.0/Prod/local_installers/cuda_8.0 .55_mac-dmg

3.配置CUDA环境,这一步出了很多问题,基本上都会遇到ImportError: dlopen和Segmentation fault: 11两个问题,安装下面的配置就可以了,

输入

sudo open ~/.bash_profile

 在打开文件后面追加以下内容

export PATH
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH=${CUDA_HOME}/lib:${CUDA_HOME}/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
export PATH=$DYLD_LIBRARY_PATH:$PATH

完成后是这个样子的,记得保存,用下面的命令刷新,如果遇到没权限之类的,重启电脑吧….顺便休息以下

. ~/.bash_profile

 4.编译使用 CUDA 的 deviceQuery

cd /usr/local/cuda/samples
sudo make -C 1_Utilities/deviceQuery
./bin/x86_64/darwin/release/deviceQuery

5 安装 cuDNN 5.1:
下载地址如下:
https://developer.nvidia.com/compute/machine- learning/cudnn/secure/v5.1/prod_20161129/8.0/cudnn-8.0-osx-x64-v5.1-tgz

然后解压并进入该目录,执行如下操作:

sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-8.0/include/
sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-8.0/lib
sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn* /usr/local/cuda/lib/

好了,大功告成。

但是如果你运行例子遇到以下错误

ImportError: dlopen(/Users/valiantliu/tensorflow/lib/python3.6.1/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10):   
Library not loaded: @rpath/libcudart.7.5.dylib
Referenced from: /Users/valiantliu/tensorflow/lib/python3.6.1/site-packages/tensorflow/python/_pywrap_tensorflow.so
Reason:   
image not found

 是第3步的环境没有配置好,找不到CUDA的库,重新配置以下

如果遇到

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.dylib locally
Segmentation fault: 11

 这个错误也是和第2步有关,检测是不是有这一句话,总之LD_LIBRARY_PATH也要有值。

export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH

如果运行Import tensorflow 出现以下内容,说明就安装成功了,散花

python -c "import tensorflow as tf"
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.8.0.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.5.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.8.0.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.1.dylib locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.8.0.dylib locally`

四. 可能你高高兴兴的去跑训练,发现IDE里又报错了,My God,人生如此艰难

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): 
Library not loaded: @rpath/libcudart.7.5.dylib
  Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/tensorflow/python/_pywrap_tensorflow.so
  Reason: image not found

解决方法是

增加以下配置

1 DYLD_LIBRARY_PATH  /usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib  
2 LD_LIBRARY_PATH /usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib:/Developer/NVIDIA/CUDA-8.0/lib  

如果没有第一行,会出现Image error问题,如果没有第二行,python进程会crash,默默终止了。

好走到这里应该可以正常运行了,如果出现oom错误,调小程序参数。

还有每次运行之后,显卡的内存看起来并没有正常释放,导致第二次运行必现oom,需要重启电脑,如果有其他好方法,也留言造福大家。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏owent

GCC 7和LLVM+Clang+libc++abi 4.0的构建脚本

之前的版本发完,有空来更新一下之前的gcc和llvm+clang工具链的编译脚本了。其实GCC 7是才release没多久但是llvm 4.0发布其实有一段时间...

591
来自专栏Petrichor的专栏

opencv: 安装 & 可能遇到的问题 & 解决方案

  参照官网安装教程即可,其他任何的个人安装攻略都只能是辅助参考。盲从有风险,安装需谨慎。

1362
来自专栏atom

国内最好的破解软件下载站整理

4216
来自专栏游戏杂谈

Lua游戏开发参考资料收集

What is a good game engine that uses Lua? [closed]

311
来自专栏杨建荣的学习笔记

通过shell脚本批量验证dataguard的有效性(r7笔记第96天)

我们假设一个场景,当你接触到一个新的环境,我们需要了解这个数据库是否为RAC,是否有备库。 如果有备库,那么问题来了,如果想去验证备库的状态是否有效,是否及时应...

2656
来自专栏木制robot技术杂谈

Ubuntu 使用 Docker 安装 Gitlab

最近帮公司重新搭建了 Gitlab,中间遇到了一些坑,折腾了不少时间,在此记录供大家参考。

1024
来自专栏雨过天晴

原 荐 Docker中使用GPU

3913
来自专栏咖啡的代码人生

(BAE)jetty8+struts2导致 welcome-file-list 失效

最近在使用BAE的过程中,有个问题始终解决不了,在配置struts2框架环境的时候, 如果拦截配置的是<url-pattern>/*</url-patter...

3479
来自专栏H2Cloud

Embeding Python & Extending Python with FFPython

Introduction ffpython is a C++ lib, which is to simplify tasks that embed Python...

3639
来自专栏iOSDevLog

Xcode 9 制作 iOS 通用 Framework创建 Framework模拟器和真机通用 FrameworkBundle使用 Framework

3517

扫码关注云+社区