tensorflow Mac OS gpu支持

时间:2017-06-25 08:50:11

标签: macos tensorflow tensorflow-gpu

根据

  

https://www.tensorflow.org/install/install_mac注意:从版本1.2开始,TensorFlow不再在Mac OS X上提供GPU支持。   不再提供对OS X的GPU支持。

但是,我想通过thunderbolt 3来运行像a ti一样的e-gpu设置。

要使此设置生效,需要执行哪些步骤? 到目前为止,我知道

是必需的。还有什么需要让CUDA / tensorflow工作?

4 个答案:

答案 0 :(得分:22)

我在compiling TensorFlow 1.2 with GPU support on macOS上写了一个小教程。我认为将相关部分复制到SO是习惯做法,所以在这里:

  1. 如果你以前没有使用过TensorFlow-GPU设置,我建议先用TensorFlow 1.0或1.1设置一切,你仍然可以pip install tensorflow-gpu。一旦你开始工作,如果你正在编译TensorFlow,那么CUDA设置也会有效。如果您有外置GPU,YellowPillow的回答(或mine)可能会帮助您完成设置。
  2. 按照官方教程“Installing TensorFlow from Sources”进行操作,但显然会将git checkout r1.0替换为git checkout r1.2。 在执行./configure时,请注意Python库路径:它有时会提示不正确的路径。在大多数情况下,我选择了默认选项,除了:Python库路径,CUDA支持和计算容量。不要使用Clang作为CUDA编译器:这将导致错误“不一致的crosstool配置;没有工具链对应于' local_darwin'找到了cpu' darwin'。“使用/usr/bin/gcc作为编译器实际上将使用macOS / XCode附带的Clang。以下是我的完整配置。
  3. TensorFlow 1.2需要一个名为OpenMP的C库,这在当前的Apple Clang中是不可用的。它应该加速多CPU机器上的多线程TensorFlow,但它也可以在没有它的情况下进行编译。我们可以尝试使用gcc 4(我没有管理)构建TensorFlow,或者只是从构建文件中删除包含OpenMP的行。在我的情况下,我评论了tensorflow/third_party/gpus/cuda/BUILD.tpl的第98行,contained linkopts = [“-lgomp”](但该行的位置可能会明显改变)。有些人had issues with zmuldefs,但我认为是早期版本;感谢udnaan指出可以对这些行进行评论。
  4. 我在使用最新的bazel 0.5.3时遇到了一些问题,所以我恢复使用已安装的0.4.5。但是在github问题中的一些讨论提到了bazel 0.5.2也没有问题。
  5. 现在使用bazel构建并按照官方安装指南的说明完成安装。在我的3.2 GHz iMac上,大约需要37分钟。
  6.   

    使用python库路径:/Users/m/code/3rd/conda/envs/p3gpu/lib/python3.6/site-packages

         

    您是否希望使用MKL支持构建TensorFlow? [y / N] N

         

    不会为TensorFlow启用MKL支持

         

    当bazel选项" - config = opt"时,请指定在编译期间使用的优化标志。指定[Default is -march = native]:

         

    您是否希望通过Google Cloud Platform支持构建TensorFlow? [Y / N]

         

    不会为TensorFlow启用Google Cloud Platform支持

         

    您是否希望使用Hadoop文件系统支持构建TensorFlow? [Y / N]

         

    不会为TensorFlow启用Hadoop文件系统支持

         

    您是否希望使用XLA即时编译器(实验性)构建TensorFlow? [Y / N]

         

    不会为TensorFlow启用XLA支持

         

    您是否希望在支持VERBS的情况下构建TensorFlow? [Y / N]

         

    不会为TensorFlow启用VERBS支持

         

    您是否希望在OpenCL支持下构建TensorFlow? [Y / N]

         

    不会为TensorFlow启用OpenCL支持

         

    您是否希望通过CUDA支持构建TensorFlow? [y / N] y

         

    将为TensorFlow启用CUDA支持

         

    你想使用clang作为CUDA编译器吗? [Y / N]

         

    nvcc将用作CUDA编译器

         

    请指定您要使用的CUDA SDK版本,例如7.0。 [留空以使用系统默认值]:

         

    请指定安装CUDA工具包的位置。有关更多详细信息,请参阅README.md。 [默认为/ usr / local / cuda]:

         

    请指定nvcc应使用哪个gcc作为主机编译器。 [默认为/ usr / bin / gcc]:

         

    请指定您要使用的cuDNN版本。 [留空以使用系统默认值]:

         

    请指定cuDNN库的安装位置。有关更多详细信息,请参阅README.md。 [默认为/ usr / local / cuda]:

         

    请指定您要构建的以逗号分隔的Cuda计算功能列表。

         

    您可以在https://developer.nvidia.com/cuda-gpus找到设备的计算功能。

         

    请注意,每个额外的计算功能都会显着增加构建时间和二进制文件大小。

         

    [默认为:" 3.5,5.2"]:6.1

         

    信息:开始清洁(这可能需要一段时间)。如果清理时间超过几分钟,请考虑使用--async。

         

    配置完成

答案 1 :(得分:7)

假设您已经设置了eGPU盒并将TB3电缆从eGPU连接到TB3端口:

<强> 1。下载automate-eGPU脚本并运行

curl -o ~/Desktop/automate-eGPU.sh
https://raw.githubusercontent.com/goalque/automate-eGPU/master/automate-eGPU.sh
&& chmod +x ~/Desktop/automate-eGPU.sh && cd ~/Desktop && sudo
./automate-eGPU.sh

您可能会收到错误消息:

  

“启动到恢复分区并键入:csrutil disable”

您现在需要做的就是重新启动计算机,并在重新启动时按住cmd + R以启用恢复模式。然后在恢复模式下找到终端并输入:

csrutil disable

然后重新启动计算机并重新运行automate-eGPU.sh脚本

2:下载并安装CUDA

运行cuda_8.0.61_mac.dmg文件并按照安装阶段进行操作。然后你需要设置路径。

转到您的终端并输入:

vim ~/.bash_profile

或者您是否已存储环境变量,然后添加以下三行:

export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$CUDA_HOME/lib:$CUDA_HOME:$CUDA_HOME/extras/CUPTI/lib"
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH

第3。下载并安装cuDNN

下载cuDNN有点麻烦,你必须注册成为Nvidia的开发人员,然后你可以下载它。确保下载cuDNN v5.1 Library for OSX,因为它是Tensorflow v1.1所期望的那样注意我们不能使用Tensorflow v1.2,因为Mac没有GPU支持:((

[![在此处输入图像说明] [1]] [1]

现在您将下载一个名为cudnn-8.0-osx-x64-v5.1.tgz的zip文件,解压缩,并将创建一个名为cuda的文件并使用终端cd到它。假设文件夹位于下载

打开终端并输入:

cd ~/Downloads/cuda

现在我们需要将cuDNN个文件复制到CUDA存储的位置,以便:

sudo cp include/* /usr/local/cuda/include/
sudo cp lib/* /usr/local/cuda/lib/

<强> 4。现在在conda / virtualenv中安装Tensorflow-GPU v1.1

对我来说,因为我使用conda我使用终端创建了一个新环境:

conda create -n egpu python=3
source activate egpu
pip install tensorflow-gpu # should install version 1.1

<强> 5。验证它是否有效

首先,您必须重新启动计算机:

在终端类型python中输入:

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

如果你有一个GPU应该运行没有问题,如果它有,那么你应该得到一个堆栈跟踪(只是一堆错误消息),它应该包括

  

无法将设备分配给节点'MatMul':无法满足显式设备规范'/ device:GPU:0',因为在此过程中没有注册与该规范匹配的设备

如果没有那么你就完成了祝贺!我今天刚刚安装了它并且它工作正常:)

答案 2 :(得分:6)

我终于可以使用以下设置

硬件

软件版本

  • macOS Sierra Version 10.12.6
  • GPU驱动程序版本:10.18.5(378.05.05.25f01)
  • CUDA驱动程序版本:8.0.61
  • cuDNN v5.1(2017年1月20日),适用于CUDA 8.0:需要注册和下载
  • tensorflow-gpu 1.0.0
  • Keras 2.0.8

我写了一个关于程序的要点:

https://gist.github.com/jganzabal/8e59e3b0f59642dd0b5f2e4de03c7687

答案 3 :(得分:2)

这是我在mac上安装e-gpu的解决方案。 Tensorflow不再支持tensorflow-gpu,所以肯定有更好的方法让它工作:

我的配置:

  • 2012年底的IMac 27
  • Aktio Node
  • GTX 1080 ti
  • 3个屏幕:其中一个连接到GTX 1080,其他一个直接插在Mac上。

Windows bootcamp安装的优点:

  • 您可以使用pip安装tensorflow-gpu。
  • 良好的GPU 1080 ti支持(可下载的显示驱动程序)

<强> HOWTO:

  • 使用bootcamp安装Windows 10。暂时不要连接Akito节点。
  • NVIDIA download page
  • 下载并安装gpu的显示驱动程序
  • 安装Visual Studio
    • 如果您想使用CUDA 9.x,可以安装Visual Studio 2017
    • 否则安装Visual Studio 2015
  • 安装CUDA和CuDNN
    • 请注意,tensorflow-gpu版本必须与您的Cuda和您的CudNN版本匹配。请参阅可用的tensorflow版本here
    • 在安装CUDA之后,您可以将解压缩的CuDNN文件移动到CUDA文件夹:C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v9.0。将lib文件移动到lib文件夹,将bin文件移动到bin文件夹,将包含文件移动到include文件夹。
  • 安装Python 3.5+
    • 您需要一个64位版本来安装tensorflow-gpu with pip
    • Python 2.7无效。
  • 使用pip安装tensorflow:

命令:

pip install tensorflow-gpu==1.5.0rc0

检查您的安装

当您可以将屏幕插入GTX 1080 ti卡时,显示驱动程序已正确安装。

调用C:\ Program Files \ NVIDIA Corporation \ NVSMI \ nvidia-smi.exe检查您的视频卡是否可用于CUDA。

执行以下tensorflow命令以查看可用设备:

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

疑难解答和提示:

  • Windows想要更新您的GTX 1080驱动程序。永远不要因为你而允许 将无法再次启动您的计算机!在您登录Windows之前,将出现带有移动点的黑屏。游戏结束!仅使用NVIDIA download page中的显示驱动程序。
  • 如果您无法再在OSX上启动Windows,请在启动时按alt键重新安装Windows。

Ubuntu解决方案:

我找不到可行的解决方案,但这里有一些方法:

似乎我的GTX 680(iMac)和我的GTX 1080 ti无法一起使用。通过apt-get:Ubuntu not starting anmore安装显示驱动程序后,无法再启动Ubuntu。尝试从NVIDIA download page下载官方显示驱动程序。

OSX解决方案: Tensorflow GPU仅支持tensorflow 1.1。我试图安装更新版本,但无法使用cuda支持构建tensorflow-gpu。以下是一些方法:

  • 安装OSX Sierra以使用e-gpu script。 High Sierra将无效(2018年1月13日)。通过删除所有分区降级到sierra。然后在启动时按Command + R以加载Internet恢复。不要忘记先备份数据。
  • 安装e-gpu script
  • 如果tensorflow-gpu 1.1足够你,你可以通过pip安装,否则你需要用bazel建立你的pip。

<强>结论: Windows安装比OSX或Ubuntu安装更容易,因为显示驱动程序正常工作和tensorflow,不能自己构建。始终检查您使用的软件版本。必须完全匹配。

我希望这会对你有所帮助!