22

有没有办法告诉 Bazel 在构建它可以使用多少个 CPU 内核时?

TL;博士

我在 VMware Workstation 上构建 TensorFlow,作为虚拟机,我可以调整虚拟机的处理器和内核数量。

在构建 TensorFlow 的过程中,我发现只使用一个核心就可以了。当我为 Workstation 提供四个内核并构建 TensorFlow 时,它最终会停止系统到我必须重新启动的地步。

如果我等了几个小时(不理会它一夜之间),它有时会返回以下错误:

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

虽然我可以使用虚拟机配置选项更改内核数量,但我更愿意这样做,而无需关闭并重新启动虚拟机。

4

2 回答 2

20

您的 .bazelrc 的一些示例

build --local_ram_resources=HOST_RAM*.5 --local_cpu_resources=HOST_CPUS-1 (leave one core free)

或者

build --local_cpu_resources=1 (use a single core)

请参阅https://docs.bazel.build/versions/master/command-line-reference.html#flag--local_cpu_resources

当前接受的答案已弃用。

于 2020-08-07T21:29:14.073 回答
16

来自Bazel 用户手册

--local_resources可用RAM、可用CPU、可用IO

此选项采用三个逗号分隔的浮点参数,指定 Bazel 在安排构建和测试活动时可以考虑的本地资源量。选项需要可用 RAM 量(以 MB 为单位)、CPU 内核数(1.0 代表单个完整内核)和工作站 I/O 能力(1.0 代表平均工作站)。默认情况下,Bazel 将直接从系统配置中估计 RAM 的数量和 CPU 内核的数量,并假设 1.0 I/O 资源。

如果使用此选项,Bazel 将忽略 --ram_utilization_factor。

于 2016-01-13T12:36:37.017 回答