tensorflow Mac OS gpu支持

Geo*_*ler 27 macos tensorflow tensorflow-gpu

根据

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

但是,我想通过thunderbolt 3来运行像akitio节点这样的e-gpu设置.

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

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

Mat*_*rro 23

在macOS编写了一个关于编译TensorFlow 1.2和GPU支持的小教程.我认为将相关部分复制到SO是习惯做法,所以在这里:

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

使用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.

配置完成


Yel*_*low 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
Run Code Online (Sandbox Code Playgroud)

您可能会收到错误消息:

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

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

csrutil disable
Run Code Online (Sandbox Code Playgroud)

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

2:下载并安装CUDA

运行该cuda_8.0.61_mac.dmg文件并完成安装阶段.然后你需要设置路径.

转到您的终端并输入:

vim ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

3.下载并安装cuDNN

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

[![在此输入图片说明] [1]] [1]

现在你将下载一个名为cudnn-8.0-osx-x64-v5.1.tgzunzip 的zip文件,cuda它将使用终端创建一个名为cd 的文件并将其cd到它.假设该文件夹位于下载中

打开终端并输入:

cd ~/Downloads/cuda
Run Code Online (Sandbox Code Playgroud)

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

sudo cp include/* /usr/local/cuda/include/
sudo cp lib/* /usr/local/cuda/lib/
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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))
Run Code Online (Sandbox Code Playgroud)

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

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

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


Jul*_*ian 6

我终于可以使用以下设置了

硬件

软件版本

  • macOS Sierra版本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