【问题标题】:Is there a way to force Bazel to run tests serially有没有办法强制 Bazel 连续运行测试
【发布时间】:2016-05-07 13:07:02
【问题描述】:

默认情况下,Bazel 以并行方式运行测试以加快速度。但是,由于 GPU 内存限制,我有一个资源 (GPU) 无法处理并行作业。有没有办法强制 Bazel 以串行方式(即非并行方式)运行测试?

谢谢。

【问题讨论】:

  • 我正在构建 TensorFlow,作为其中的一部分,我在源代码中运行单元测试。在 GPU 构建模式下,许多单元测试将在 GPU 上运行。当它们并行运行时,我有时会遇到 GPU OOM 错误。当我手动逐一运行测试时,不会发生这些错误。但手动运行测试很痛苦,而且不可扩展。
  • --jobs=1 传递给bazel test 命令是否有效?

标签: gpu tensorflow bazel


【解决方案1】:

--jobs 1 会将 Bazel 运行的并行作业数限制为 1。

您还可以修改测试目标并添加tags = ["exclusive"] 以防止特定测试并行运行(请参阅http://bazel.io/docs/test-encyclopedia.html)。

【讨论】:

  • 我认为当使用"exclusive" 标签时,还需要注意测试结果不会被缓存。所以在像 CI 这样的情况下,它可能会导致性能。
  • @Sambatyon,根据文档,这不是真的,我认为您正在考虑 "external" 标志
【解决方案2】:

使用--local_test_jobs=1 在本地一次只运行一个测试作业。

同时运行的本地测试作业的最大数量。采用整数或关键字(“auto”、“HOST_CPUS”、“HOST_RAM”),可选地后跟操作([-|]),例如。 “自动”、“HOST_CPUS.5”。 0 表示本地资源将限制本地测试作业的数量同时运行。将此值设置为大于 --jobs 的值是无效的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2015-03-30
    • 2015-12-31
    • 2017-12-01
    • 2023-03-10
    相关资源
    最近更新 更多