MacOS 下源码编译TensorFlow (GPU版本)

来源:互联网 发布:node 高手训练营 编辑:程序博客网 时间:2024/06/15 01:47

----2017-8-7 更新

在用cuda 8.0编译tensorflow r0.9b 版本的时候,会出现CUBLAS_DATA_HALF未定义的错误,相关解决方案Stack Overflow上面给出了,我将修改后的文件传到百度网盘了,后面如果

需要可以直接下载来看。

原文链接https://github.com/tensorflow/tensorflow/pull/2556/files


------2017-8-2 更新

之前编译TensorFlow 0.9 GPU版本成功,后来一直失败,是因为随着bazel 版本的变化,编写的规则也不一样,这个很是蛋疼。在Linux下和Mac下都试了一下,浪费了很多时间,看来以后得写好项目记录才行,不然会很降低效率。编译代码确实很费时间,在好的CPU和固态下,依然需要25-30分钟的时间吧,可能x299 平台的7900x CPU 会好很多。

TensorFlow r0.9编译时,会从GitHub和Google下载很多东西,所以此处需要科学上网才行。会下载protobuf 和grpc,所需的bazel 版本是0.3.0 之前0.3.2以及之后的版本都会报错。

后面根据官网的提示进行编译就好了。


楔子:这次编译源码可是费了劲了,确实是一个庞大的TensorFlow工程,代码量可想而知,所以编译起来就各种问题。

深度学习环境的选择无疑是Linux更好一点,很多框架、代码都是给出了在Ubuntu 下的案例讲解。

Windows 上也有一部分但是支持的不好,主要是通过Cmake 来进行编译,难度很大。

MacOS系统理论层面来说兼具Windows和Linux两大系统的优点,既有强大的包管理器,又有好用的终端,好用的命令行操作,同时,一些常用的软件一个都不少。比如说QQ ,wechat  office 百度网盘,迅雷,Photoshop 等各种软件。如果在Linux下进行开发工作,上面的软件使用起来很蛋疼,可以说几乎误解。这样就得来回切换系统,极不方便。之前的时候Windows 出了Linux子系统,虽然已经很好用了,但是有一些功能还是不能实现,比如说调用主机的硬件资源等等。所以MacOS就成为唯一一个比较好的选择。

说来化成,搭载macOS系统的Mac出奇的贵,买个性能强的,容量大的,这笔费用绝对特别多。所以我们只能选择黑苹果来进行尝试开发。黑苹果的安装很烦人。建议找淘宝,网速快的情况下,1小时就搞定了。毕竟术业有专攻,找别人快速的将系统安装好,是一个省时省力的功夫。如果私下里有时间,可以研究研究黑苹果。只用相对于白果很少的钱就能配到很高的配置。对于需要性能搞代码的人来说再好不过了。再者,现在黑苹果的技术已经很成熟,系统装完之后也比较稳定。还有一点比较良心的事,苹果虽然好几年都不用NVIDIA的显卡了,但是NVIDIA还一直给苹果出驱动,这点看来太良心了,尤其是10系显卡驱动,性能和显存的提升不可小觑。

言归正传,说起来编译TensorFlow ,CPU版本的相对来说容易很多,根据官方的教程一步步来就行,但是GPU版本的却一直有问题。现在记录如下:

(1)目前已知的是macOS下r1.1 分支的TensorFlow可以GPU成功编译。

(2)之前在Ubuntu编译过修改后的r0.9 版本,没有问题,现在却总出现问题,总是cross_tool的那个问题,在Stack Overflow 上面有人提出了,一直没有得到解决。

(3)官方在1.2版本之后仅仅支持Ubuntu的GPU版本。

所以Ubuntu上来说确实是最容易编译的,但是macOS上却有着不可替代的优势。

(4)编译过程中CPU满载,不知道是我这个机器散热不好的原因还是什么,编译过程会突然报错

,这时候继续编译就能过去,可能是两次三次四次。(Ubuntu和macOS下都有类似的情况)

(5)会出现下面这个错误

dyld: Library not loaded: @rpath/libcudart.8.0.dylib
解决办法如下:看了之后我就懵了,真是大神。

https://stackoverflow.com/questions/39865212/dyld-library-not-loaded-rpath-libcudart-8-0-dylib-while-building-tensorflow

之后就顺利生成.whl 文件,就可以愉快的安装了。




--2017-8-1

在配置Mac下的cuda 环境时(目前已知的可以安装的是之前Mac系统采用N卡的电脑或者黑苹果)。先要安装cuda驱动和cuda开发包,这个从NVIDIA 官网下载即可。然后将下面两行代码输入到.bash_profile 或者.zshrc 然后重启终端就行。

export PATH=/usr/local/cuda/bin:$PATH
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH

原创粉丝点击