From 10361be07528896b9744dfb3a919d6b5fe17ac08 Mon Sep 17 00:00:00 2001
From: ahmedk <karim.ahmed@xfel.eu>
Date: Tue, 30 Jul 2024 09:52:44 +0200
Subject: [PATCH] feat(xfel-calibrate): expose mincpus argument as
 --slurm-mincpus

---
 src/xfel_calibrate/calibrate.py | 13 ++++++++++++-
 src/xfel_calibrate/nb_args.py   |  4 ++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/xfel_calibrate/calibrate.py b/src/xfel_calibrate/calibrate.py
index fa14605bf..103258b3f 100755
--- a/src/xfel_calibrate/calibrate.py
+++ b/src/xfel_calibrate/calibrate.py
@@ -263,11 +263,18 @@ def run_finalize(
 
 class SlurmOptions:
     def __init__(
-            self, job_name=None, nice=None, mem=None, partition=None, reservation=None,
+            self,
+            job_name=None,
+            nice=None,
+            mem=None,
+            mincpus=None,
+            partition=None,
+            reservation=None,
     ):
         self.job_name = job_name or 'xfel_calibrate'
         self.nice = nice
         self.mem = mem
+        self.mincpus = mincpus
         self.partition = partition
         self.reservation = reservation
 
@@ -302,6 +309,9 @@ class SlurmOptions:
         if self.mem:
             launcher_slurm.append(f"--mem={self.mem}G")
 
+        if self.mincpus:
+            launcher_slurm.append(f"--mincpus={self.mincpus}")
+
         deps = []
         if after_ok:
             deps.append("afterok:" + ":".join(str(j) for j in after_ok))
@@ -833,6 +843,7 @@ def run(argv=None):
             job_name=args.get('slurm_name', 'xfel_calibrate'),
             nice=args['slurm_scheduling'],
             mem=args['slurm_mem'],
+            mincpus=args['slurm_mincpus'],
             reservation=args['reservation'],
             partition=args['slurm_partition'],
         ))
diff --git a/src/xfel_calibrate/nb_args.py b/src/xfel_calibrate/nb_args.py
index 93c6eba71..45833dccf 100644
--- a/src/xfel_calibrate/nb_args.py
+++ b/src/xfel_calibrate/nb_args.py
@@ -79,6 +79,10 @@ def make_initial_parser(**kwargs):
     parser.add_argument('--vector-figs', action="store_true", default=False,
                         help="Use vector graphics for figures in the report.")
 
+    parser.add_argument('--slurm-mincpus', type=int, default=1,
+                        help='Requested minimum number of '
+                             'logical cpus/processors per node')
+
     parser.add_argument('--slurm-mem', type=int, default=500,
                         help="Requested node RAM in GB")
 
-- 
GitLab