From 65e766dfda81c12a26750adc21bec7f13166a42f Mon Sep 17 00:00:00 2001 From: Jeff Bailey Date: Fri, 24 Apr 2026 08:20:03 +0100 Subject: [PATCH] [libc] Honour LIBC_GPU_TEST_JOBS in lit test runs (#193797) Under CTest, LIBC_GPU_TEST_JOBS controlled a ninja job pool that limited concurrent GPU test processes. The AMD GPU buildbot sets this to 4 to avoid overloading the GPU driver. When running tests via lit, this constraint was lost because lit uses its own -j flag (defaulting to nproc, or set to 64 on the AMD bot via LLVM_LIT_ARGS). All GPU loader processes launched simultaneously, leading to hangs from GPU resource exhaustion. Propagated LIBC_GPU_TEST_JOBS into the lit site config as a parallelism group so lit throttles GPU test concurrency independently of the global -j setting. --- libc/cmake/modules/prepare_libc_gpu_build.cmake | 1 + libc/test/lit.site.cfg.py.in | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake index c87a1df926c8..554c6c49b043 100644 --- a/libc/cmake/modules/prepare_libc_gpu_build.cmake +++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake @@ -29,6 +29,7 @@ if(LIBC_GPU_TEST_JOBS) set_property(GLOBAL PROPERTY JOB_POOLS LIBC_GPU_TEST_POOL=${LIBC_GPU_TEST_JOBS}) set(LIBC_HERMETIC_TEST_JOB_POOL JOB_POOL LIBC_GPU_TEST_POOL) else() + set(LIBC_GPU_TEST_JOBS 1) set_property(GLOBAL PROPERTY JOB_POOLS LIBC_GPU_TEST_POOL=1) set(LIBC_HERMETIC_TEST_JOB_POOL JOB_POOL LIBC_GPU_TEST_POOL) endif() diff --git a/libc/test/lit.site.cfg.py.in b/libc/test/lit.site.cfg.py.in index 3668a491cd05..bc8d0e3e3171 100644 --- a/libc/test/lit.site.cfg.py.in +++ b/libc/test/lit.site.cfg.py.in @@ -40,3 +40,8 @@ if hasattr(config, "llvm_tools_dir") and config.llvm_tools_dir: [config.llvm_tools_dir, config.environment.get("PATH", "")] ) +# Limit concurrent GPU tests to avoid overloading the GPU driver. +libc_gpu_test_jobs = "@LIBC_GPU_TEST_JOBS@" +if libc_gpu_test_jobs: + lit_config.parallelism_groups["libc-gpu"] = int(libc_gpu_test_jobs) + config.parallelism_group = "libc-gpu"