From 438f3f024e67dcf34a00c39c275af6a40fd59c6c Mon Sep 17 00:00:00 2001 From: Mayeul Aubin Date: Thu, 10 Apr 2025 17:19:25 +0200 Subject: [PATCH] small fix --- scola.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scola.py b/scola.py index ff341ab..09e5b12 100644 --- a/scola.py +++ b/scola.py @@ -1,3 +1,5 @@ +limit_slurm_arrays = 512 + def main_scola(parsed_args): from args_main import parse_arguments_main from low_level import print_starting_module, print_message, print_ending_module, progress_bar_from_logfile, wait_until_file_exists @@ -52,12 +54,14 @@ def main_scola(parsed_args): elif parsed_args.execution == "slurm": from slurm_submission import create_slurm_script, parse_arguments_slurm from args_main import parse_arguments_main + from parameters_card import parse_arguments_card import os print_message("Running scola in slurm mode.", 1, "scola", verbose=parsed_args.verbose) slurm_dict=parse_arguments_slurm(parsed_args) main_dict=parse_arguments_main(parsed_args) + card_dict=parse_arguments_card(parsed_args) - if have_no_tiles(parsed_args) or parsed_args.force: + if (have_no_tiles(parsed_args) or parsed_args.force) and card_dict["N_tiles"]**3 < limit_slurm_arrays : ## Submit all boxes print_message("Submitting all boxes.", 2, "scola", verbose=parsed_args.verbose) slurm_script = slurm_dict["scripts"]+"scola_"+main_dict["simname"]+".sh" @@ -93,6 +97,7 @@ def main_scola(parsed_args): else: ## Submit missing boxes + from time import sleep missing_tiles_arrays = get_missing_tiles_arrays(parsed_args) print_message(f"Submitting missing boxes: {missing_tiles_arrays}.", 2, "scola", verbose=parsed_args.verbose) @@ -127,6 +132,7 @@ def main_scola(parsed_args): subprocess.run(command_args) print_message("sCOLA job submitted.", 2, "scola", verbose=parsed_args.verbose) + sleep(len(missing_tiles)*0.2) # Sleep for a bit to avoid overloading the scheduler os.remove(slurm_script) # Remove the script after submission (because it is specific to the missing tiles) @@ -229,11 +235,17 @@ def get_missing_tiles_arrays(parsed_args): nboxes_tot = int(parsed_args.N_tiles**3) missing_tiles_arrays = [] in_sequence_of_missing = False + len_sequence_of_missing = 0 for b in range(1,nboxes_tot+1): if not isfile(card_dict["OutputTilesBase"]+str(b)+".h5"): + len_sequence_of_missing += 1 if not in_sequence_of_missing: missing_tiles_arrays.append([b]) in_sequence_of_missing = True + len_sequence_of_missing = 1 + if len_sequence_of_missing > limit_slurm_arrays: + missing_tiles_arrays[-1].append(b) + in_sequence_of_missing = False elif in_sequence_of_missing: missing_tiles_arrays[-1].append(b-1) in_sequence_of_missing = False