問題は g++/gcc のバージョンではなく、Bazel が TensorFlow のビルドに使用する CPU コアの数です。
1 つの CPU コア、2G RAM、2G スワップ パーティション、および 2G スワップ ファイルを備えた Ubuntu 14.04 LTS の新規インストールを使用して、VMware Workstation 7.1 で複数のビルドを実行すると、ビルドが最も高速に実行されます。これは最適な設定ではないかもしれませんが、これまでのところ一貫して機能することがわかっている最適な設定です。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 はこの重要なリソースを認識していないため、競合するファイルが同時にコンパイルされる可能性があります。したがって、不明なリソースと競合するファイルが多いほど、ビルドが遅くなります。