From e4aefaea7d5a430cc1d9b163d200bf0c9237c744 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 16 Feb 2024 13:00:23 +0100 Subject: [PATCH 1/3] Add sleep interval parameter --- pylammpsmpi/wrapper/ase.py | 3 ++- pylammpsmpi/wrapper/concurrent.py | 30 +++++++++++++++++++++--------- pylammpsmpi/wrapper/extended.py | 2 ++ 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/pylammpsmpi/wrapper/ase.py b/pylammpsmpi/wrapper/ase.py index 4bfa68b..6da7622 100644 --- a/pylammpsmpi/wrapper/ase.py +++ b/pylammpsmpi/wrapper/ase.py @@ -22,6 +22,7 @@ def __init__( log_file=None, library=None, diable_log_file=True, + sleep_interval=0.1, ): self._logger = logger self._prism = None @@ -45,7 +46,7 @@ def __init__( ) else: self._interactive_library = LammpsBase( - cores=self._cores, working_directory=working_directory + cores=self._cores, working_directory=working_directory, sleep_interval=sleep_interval, ) def interactive_lib_command(self, command): diff --git a/pylammpsmpi/wrapper/concurrent.py b/pylammpsmpi/wrapper/concurrent.py index 1605169..497a2f5 100644 --- a/pylammpsmpi/wrapper/concurrent.py +++ b/pylammpsmpi/wrapper/concurrent.py @@ -4,7 +4,9 @@ import os from concurrent.futures import Future -from queue import Queue +from queue import Empty, Queue +from time import sleep + from pympipool.shared import ( RaisingThread, interface_bootup, @@ -31,6 +33,7 @@ def execute_async( cores=1, oversubscribe=False, cwd=None, + sleep_interval=0.1, ): executable = os.path.join( os.path.dirname(os.path.abspath(__file__)), "..", "mpi", "lmpmpi.py" @@ -47,14 +50,20 @@ def execute_async( ), ) while True: - task_dict = future_queue.get() - if "shutdown" in task_dict.keys() and task_dict["shutdown"]: - interface.shutdown(wait=task_dict["wait"]) - break - elif "command" in task_dict.keys() and "future" in task_dict.keys(): - f = task_dict.pop("future") - if f.set_running_or_notify_cancel(): - f.set_result(interface.send_and_receive_dict(input_dict=task_dict)) + try: + task_dict = future_queue.get_nowait() + except Empty: + sleep(sleep_interval) + else: + if "shutdown" in task_dict.keys() and task_dict["shutdown"]: + interface.shutdown(wait=task_dict["wait"]) + future_queue.task_done() + break + elif "command" in task_dict.keys() and "future" in task_dict.keys(): + f = task_dict.pop("future") + if f.set_running_or_notify_cancel(): + f.set_result(interface.send_and_receive_dict(input_dict=task_dict)) + future_queue.task_done() class LammpsConcurrent: @@ -64,12 +73,14 @@ def __init__( oversubscribe=False, working_directory=".", cmdargs=None, + sleep_interval=0.1, ): self.cores = cores self.working_directory = working_directory self._future_queue = Queue() self._process = None self._oversubscribe = oversubscribe + self._sleep_interval = sleep_interval self._cmdargs = cmdargs self._start_process() @@ -82,6 +93,7 @@ def _start_process(self): "cores": self.cores, "oversubscribe": self._oversubscribe, "cwd": self.working_directory, + "sleep_interval": self._sleep_interval, }, ) self._process.start() diff --git a/pylammpsmpi/wrapper/extended.py b/pylammpsmpi/wrapper/extended.py index d9d5723..d663b9b 100644 --- a/pylammpsmpi/wrapper/extended.py +++ b/pylammpsmpi/wrapper/extended.py @@ -248,6 +248,7 @@ def __init__( client=None, mode="local", cmdargs=None, + sleep_interval=0.1, ): self.cores = cores self.working_directory = working_directory @@ -259,6 +260,7 @@ def __init__( oversubscribe=self.oversubscribe, working_directory=self.working_directory, cmdargs=cmdargs, + sleep_interval=sleep_interval, ) def __getattr__(self, name): From aad39731efecb57814dc4c8a63a5796a5b03f26c Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Fri, 16 Feb 2024 12:02:02 +0000 Subject: [PATCH 2/3] Format black --- pylammpsmpi/wrapper/ase.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pylammpsmpi/wrapper/ase.py b/pylammpsmpi/wrapper/ase.py index 6da7622..f410e4c 100644 --- a/pylammpsmpi/wrapper/ase.py +++ b/pylammpsmpi/wrapper/ase.py @@ -46,7 +46,9 @@ def __init__( ) else: self._interactive_library = LammpsBase( - cores=self._cores, working_directory=working_directory, sleep_interval=sleep_interval, + cores=self._cores, + working_directory=working_directory, + sleep_interval=sleep_interval, ) def interactive_lib_command(self, command): From 99d885a6305533548cb08c65057f201b5cb41b84 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 16 Feb 2024 13:05:48 +0100 Subject: [PATCH 3/3] Add additional input parameters --- pylammpsmpi/wrapper/ase.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pylammpsmpi/wrapper/ase.py b/pylammpsmpi/wrapper/ase.py index 6da7622..2f0ae6d 100644 --- a/pylammpsmpi/wrapper/ase.py +++ b/pylammpsmpi/wrapper/ase.py @@ -23,6 +23,8 @@ def __init__( library=None, diable_log_file=True, sleep_interval=0.1, + oversubscribe=False, + cmdargs=None, ): self._logger = logger self._prism = None @@ -46,7 +48,11 @@ def __init__( ) else: self._interactive_library = LammpsBase( - cores=self._cores, working_directory=working_directory, sleep_interval=sleep_interval, + cores=self._cores, + oversubscribe=oversubscribe, + working_directory=working_directory, + sleep_interval=sleep_interval, + cmdargs=cmdargs, ) def interactive_lib_command(self, command):