From c67266fbc07e8ceb383f76e8e639c80e94891fa7 Mon Sep 17 00:00:00 2001 From: "R. Sarmiento" Date: Thu, 18 Jun 2026 10:34:47 +0200 Subject: [PATCH 1/3] add option to control cpu per engines --- ipcmagic/magics.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ipcmagic/magics.py b/ipcmagic/magics.py index 71034be..75190ff 100644 --- a/ipcmagic/magics.py +++ b/ipcmagic/magics.py @@ -20,11 +20,12 @@ class IPClusterMagics(Magics): %ipcluster --version Options: - -h --help Show this screen. - -v --version Show version. - -n --num_engines Number of engines - --launcher Job launcher (mpirun | srun | local) - --dask Create a dask.distributed cluster + -h --help Show this screen. + -v --version Show version. + -n --num_engines Number of engines + -c --cpus_per_engine Number of cpus per engine + --launcher Job launcher (mpirun | srun | local) + --dask Create a dask.distributed cluster """ def __init__(self, shell): @@ -51,7 +52,8 @@ def parse_args(self, line): 'start': None, 'stop': None, 'launcher': 'srun', - 'dask': False + 'dask': False, + 'cpus_per_engine': 1 } given_args = {key: val for key, val in args.items() if val} @@ -121,7 +123,7 @@ def _launch_engines_mpi(self): np_opt = launcher_np_opts[self.args.launcher] try: self.engines = run_command_async( - f'{self.args.launcher} {np_opt} {self.args.num_engines} ipengine ' # noqa: E501 + f'{self.args.launcher} {np_opt} {self.args.num_engines} -c {self.args.cpus_per_engine} ipengine ' # noqa: E501 f'--location={hostname} --log-to-file') except FileNotFoundError: print(f'Launcher not supported in this system: ' From e0106f928f846dece30a4005621fb1bef05438d4 Mon Sep 17 00:00:00 2001 From: "R. Sarmiento" Date: Thu, 18 Jun 2026 10:58:16 +0200 Subject: [PATCH 2/3] fix bug --- ipcmagic/magics.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ipcmagic/magics.py b/ipcmagic/magics.py index 75190ff..fd87da6 100644 --- a/ipcmagic/magics.py +++ b/ipcmagic/magics.py @@ -122,9 +122,12 @@ def _launch_engines_mpi(self): } np_opt = launcher_np_opts[self.args.launcher] try: - self.engines = run_command_async( - f'{self.args.launcher} {np_opt} {self.args.num_engines} -c {self.args.cpus_per_engine} ipengine ' # noqa: E501 - f'--location={hostname} --log-to-file') + cmd = f'{self.args.launcher} {np_opt} {self.args.num_engines} ' + if self.args.launcher == 'srun': + cmd += f'-c {self.args.cpus_per_engine} ' + + cmd += f'ipengine --location={hostname} --log-to-file' + self.engines = run_command_async(cmd) except FileNotFoundError: print(f'Launcher not supported in this system: ' f'{self.args.launcher}') From a30a29a29afb6342f3e97c00b857f4eb3e061878 Mon Sep 17 00:00:00 2001 From: "R. Sarmiento" Date: Thu, 18 Jun 2026 11:00:46 +0200 Subject: [PATCH 3/3] extend docstring --- ipcmagic/magics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipcmagic/magics.py b/ipcmagic/magics.py index fd87da6..e5a03f2 100644 --- a/ipcmagic/magics.py +++ b/ipcmagic/magics.py @@ -23,7 +23,7 @@ class IPClusterMagics(Magics): -h --help Show this screen. -v --version Show version. -n --num_engines Number of engines - -c --cpus_per_engine Number of cpus per engine + -c --cpus_per_engine Number of cpus per engine with srun --launcher Job launcher (mpirun | srun | local) --dask Create a dask.distributed cluster """