有没有办法强制 Bazel 串行运行测试

问题描述 投票:0回答:4

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

谢谢。

gpu tensorflow bazel
4个回答
15
投票

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

您还可以修改测试目标并添加

tags = ["exclusive"]
以防止特定测试并行运行(请参阅https://bazel.build/reference/test-encyclopedia)。


9
投票

使用

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

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

  • tags = ["exclusive"]
    在缓存方面还需要考虑 其他并发症。
  • --jobs
    将序列化整个构建过程,而不仅仅是测试,因此它不太理想。

0
投票

Bazel 将遵守两种资源的限制:RAM 和 CPU。您可以劫持一个(可能是 RAM)来代表 GPU,因为它们可用于运行并且是测试所需的。 (由于硬件资源有限,我没有这样做,因为感觉不太优雅,但我想不出它不应该工作的原因。)


0
投票

Bazel 的未来版本应该支持 GPU 等额外资源

当设置 --local_extra_resources=gpu=1 时,包含该更改的版本应该支持额外的资源标签,例如“resources:GPU:1”。这应该使 GPU 测试能够受到有限数量的 GPU 的约束,并且使它们能够非独占地运行,并且不限制 --jobs 或“test_jobs”的总数

© www.soinside.com 2019 - 2024. All rights reserved.