1

我已经成功地在 Debian 下从源代码构建了 TensorFlow,但目前无法从使用Ubuntu 14.04 LTS的新虚拟机开始构建它。Debian 的 IIRC 我尝试了 g++/gcc 5.2,但不得不降级到 g++/gcc 4.9,它工作正常。如果我安装 g++,按照说明从源安装,版本为 4.8 并且失败。

gcc:内部编译器错误:被杀死(程序 cc1plus)

4.9我还没累。

我检查了上次Jenkins 构建的信息,但找不到工具及其版本列出的任何内容。甚至打开的问题:Jenkins 构建日志中列出的构建工具和版本

已知哪些版本的 g++/gcc 可以工作?
构建机器使用什么版本的 g++/gcc?

编辑

发现这个:TensorFlow.org 持续集成

4

1 回答 1

2

问题不在于 g++/gcc 版本,而是 Bazel 用于构建 TensorFlow 的 CPU 内核数量。

在 VMware Workstation 7.1 上运行多个构建时,新安装的 Ubuntu 14.04 LTS 具有一个 CPU 内核、2G 内存、2G 交换分区和 2G 交换文件,构建运行速度最快。这可能不是最好的设置,但它是迄今为止我发现的始终如一的最佳设置。如果我通过 VMware 允许 4 个内核并使用 Bazel 构建它会失败。如果我使用 Bazel 选项限制资源--local_resources使用

--local_resources 2048,2.0,1.0

构建成功

INFO: Elapsed time: 11683.908s, Critical Path: 11459.26s

使用

--local_resources 4096,2.0,1.0

构建成功

INFO: Elapsed time: 39765.257s, Critical Path: 39578.52s

使用

--local_resources 4096,1.0,1.0

构建成功

INFO: Elapsed time: 6562.744s, Critical Path: 6443.80s

使用

--local_resources 6144,1.0,1.0

构建成功

INFO: Elapsed time: 2810.509s, Critical Path: 2654.90s

总之,更多的内存和更少的 CPU 内核最适合我的环境。

TLDR;

在构建过程中密切关注时,我注意到某些源文件需要很长时间才能编译,并且在构建时似乎会限制流量。就好像它们在与其他源文件竞争资源,而 Bazel 不知道这个关键资源,因此它允许竞争文件同时编译。因此,与未知资源竞争的文件越多,构建速度就越慢。

于 2016-01-13T15:45:29.057 回答