Implement control for implicit parallelism using --max_cpu_cores argument

This commit is contained in:
2026-01-18 00:06:33 +08:00
parent cfe7f88162
commit 1d682c130d

View File

@@ -186,6 +186,22 @@ def _compute_next_event_auc_clean_control(
def main() -> None:
args = parse_args()
# Best-effort control of implicit parallelism to avoid CPU oversubscription.
# Note: environment variables are ideally set before importing NumPy/PyTorch,
# but setting them early in main can still affect subprocesses or lazy readers.
if int(args.max_cpu_cores) > 0:
n_threads = int(args.max_cpu_cores)
torch.set_num_threads(n_threads)
for k in (
"OMP_NUM_THREADS",
"MKL_NUM_THREADS",
"OPENBLAS_NUM_THREADS",
"VECLIB_MAXIMUM_THREADS",
"NUMEXPR_NUM_THREADS",
):
os.environ[k] = str(n_threads)
print(f"Restricting implicit parallelism to {n_threads} threads.")
seed_everything(args.seed)
show_progress = (not args.no_tqdm)