问题不在于 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 不知道这个关键资源,因此它允许竞争文件同时编译。因此,与未知资源竞争的文件越多,构建速度就越慢。