默认情况下,Bazel以并行方式运行测试以加快速度。然而,由于GPU内存限制,我有一个资源(GPU)无法处理并行作业。有没有办法强制Bazel以串行(即非并行)方式运行测试?谢谢。
6rqinv9w1#
--jobs 1将Bazel运行的并行作业数限制为1。您还可以修改测试目标并添加tags = ["exclusive"],以防止特定测试并行运行(参见http://bazel.io/docs/test-encyclopedia.html)。
--jobs 1
tags = ["exclusive"]
q3qa4bjr2#
使用--local_test_jobs=1在本地一次只运行一个测试作业。要并发运行的本地测试作业的最大数量。可为整数或关键字(“auto”、“HOST_CPUS”、“HOST_RAM”),后面可以跟一个操作([-|*])例如“auto”、“HOST_CPUS*.5”。0表示本地资源将限制并发运行的本地测试作业的数量。将此值设置为大于--jobs的值无效
--local_test_jobs=1
--jobs
ht4b089n3#
Bazel将遵守以下两种资源的限制:RAM和CPU。你可以劫持一个(可能是RAM)来代表GPU,因为它们可用于运行和测试。(我已经停止了有限的硬件资源,因为它感觉不优雅,但我想不出它不应该工作的理由。)
wz3gfoph4#
Future releases of Bazel should support extra resources like GPUs当设置--local_extra_resources=gpu=1时,包含该更改的和发行版应支持额外的资源标签,如“resources:GPU:1”。这应使GPU测试受数量有限的GPU的限制,并使它们以非独占方式运行,而不限制--作业或“test_jobs”的总数
4条答案
按热度按时间6rqinv9w1#
--jobs 1
将Bazel运行的并行作业数限制为1。您还可以修改测试目标并添加
tags = ["exclusive"]
,以防止特定测试并行运行(参见http://bazel.io/docs/test-encyclopedia.html)。q3qa4bjr2#
使用
--local_test_jobs=1
在本地一次只运行一个测试作业。要并发运行的本地测试作业的最大数量。可为整数或关键字(“auto”、“HOST_CPUS”、“HOST_RAM”),后面可以跟一个操作([-|*])例如“auto”、“HOST_CPUS*.5”。0表示本地资源将限制并发运行的本地测试作业的数量。将此值设置为大于--jobs的值无效
tags = ["exclusive"]
具有other complications to consider with respect to caching.--jobs
将序列化整个构建过程,而不仅仅是测试,因此它并不理想。ht4b089n3#
Bazel将遵守以下两种资源的限制:RAM和CPU。你可以劫持一个(可能是RAM)来代表GPU,因为它们可用于运行和测试。(我已经停止了有限的硬件资源,因为它感觉不优雅,但我想不出它不应该工作的理由。)
wz3gfoph4#
Future releases of Bazel should support extra resources like GPUs
当设置--local_extra_resources=gpu=1时,包含该更改的和发行版应支持额外的资源标签,如“resources:GPU:1”。这应使GPU测试受数量有限的GPU的限制,并使它们以非独占方式运行,而不限制--作业或“test_jobs”的总数