【问题标题】:Is there a way to limit the number of CPU cores Bazel uses?有没有办法限制 Bazel 使用的 CPU 内核数量?
【发布时间】:2016-04-17 19:38:15
【问题描述】:

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

TL;DR

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

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

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

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

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

【问题讨论】:

    标签: cpu-cores bazel


    【解决方案1】:

    .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

    不推荐使用当前接受的答案。

    【讨论】:

    • 是的,当前接受的答案已被弃用,这个有效
    【解决方案2】:

    来自Bazel User Manual

    --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.

    【讨论】:

    • 这确实可以减少使用的资源,但不像我所期望的那样。在努力理解之后,我关闭了其他应用程序并使用不同的设置进行了测试。似乎 Bazel 消耗的核心数量大约是我设置的两倍,有时会消耗所有核心数秒。即使使用bazel test -c opt --local_resources 20000,1,0.25,我也看到我的系统负载很大。
    • 我打算修复上面断开的链接以指向docs.bazel.build/versions/master/…,但文本与用户手册中的文本不同。我不确定这里最好的方法是什么......
    • @MattPassell 因为我将这一切都视为创意内容,并且在这里帮助他人,而且我已经有一段时间没有接触过 Tensorflow,所以请选择。 1)编辑此问题以了解需要更改的内容。 2)添加您自己的答案。 3) 编辑此问题,但在原始答案中添加一个新部分,并注明您认为正确答案的内容。
    • 很公平。 :) 我会试着回到这个。
    猜你喜欢
    • 2021-05-10
    • 2011-03-06
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2013-11-19
    相关资源
    最近更新 更多