Process slurm logs from the command-line.
Examples:
ipsl_slurm_logs slurm.log --output-dir output_test/ --remove-trailing-whitespaces
The above command separates slurm.log containing model execution using 4 MPI processes into
distinct files inside the output_test/ directory:
output_test/
├── output_0.log
├── output_10.log
├── output_11.log
├── output_12.log
JSON example:
ipsl_slurm_logs slurm.log --json > slurm.json
Will separate the slurm.log into a JSON format.
Functions
main
Source code in ipsl_common/scripts/slurm_logs.py
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 | def main():
parser = ArgumentParser()
parser.add_argument(
"log_file", type=existing_file, help="Labelled SLURM log file to process"
)
parser.add_argument(
"--json",
action="store_true",
help="Print separted logs to console in JSON format",
)
parser.add_argument(
"--remove-trailing-whitespaces",
action="store_true",
help=(
"Remove trailing whitespaces and empty lines in separated logs."
"The leading whitespaces are kept because indentation might provide additional information in logs."
),
)
parser.add_argument("--output-name", type=str, default="output_{process_id}.log")
parser.add_argument("--output-dir", default=Path("."))
args = parser.parse_args()
with open(args.log_file, "r") as fp:
if args.json:
print(
json.dumps(
separate_labelled_log(
fp, remove_trailing_whitespaces=args.remove_trailing_whitespaces
)
)
)
else:
separate_labelled_log_to_files(
fp,
args.output_dir,
args.output_name,
remove_trailing_whitespaces=args.remove_trailing_whitespaces,
)
|