Skip to content

Commit c28713e

Browse files
authored
Support for workers in snapshot mode (#296)
* added support for worker in snapshot mode * add changelog # Conflicts: # CHANGELOG.md
1 parent 2bf393d commit c28713e

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## latest
44

5+
- Added support for workers in snapshot mode [#296](https://github.com/precice/micro-manager/pull/296)
56
- Added check for number of workers and renamed method in `coupling.py` [#295](https://github.com/precice/micro-manager/pull/295)
67
- Refactored interaction with preCICE and domain decomposition into `CouplingHandler`, `Profiler` and `DomainDecomposition` hierarchy [#289](https://github.com/precice/micro-manager/pull/289)
78
- Refactored and generalized the methods in `p2p.py`. Added `MPIHandler` to manage all MPI related aspects. [#287](https://github.com/precice/micro-manager/pull/287)

micro_manager/snapshot/snapshot.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import subprocess
1616
import numpy as np
1717

18+
from micro_manager.tasking.connection import spawn_local_workers
1819
from micro_manager.micro_manager import MicroManager
1920
from .dataset import ReadWriteHDF
2021
from micro_manager.micro_simulation import create_simulation_class, load_backend_class
@@ -73,6 +74,19 @@ def __init__(self, config_file: str, log_file: str = "") -> None:
7374
# Collect crashed indices
7475
self._crashed_snapshots: list[int] = [] # Declaration
7576

77+
# Setup remote workers
78+
base_dir = os.path.dirname(os.path.abspath(__file__))
79+
worker_exec = os.path.join(base_dir, "tasking", "worker_main.py")
80+
self._conn_n_workers = self._config.tasking_num_workers()
81+
self._conn = spawn_local_workers(
82+
worker_exec,
83+
self._conn_n_workers,
84+
self._config.tasking_backend(),
85+
self._config.enable_tasking_slurm(),
86+
self._config.mpi_impl(),
87+
self._config.tasking_hostfile(),
88+
)
89+
7690
# **************
7791
# Public methods
7892
# **************
@@ -90,8 +104,8 @@ def solve(self) -> None:
90104
self._logger,
91105
self._micro_problem,
92106
self._config.micro_file_names()[0],
93-
1,
94-
None,
107+
self._conn_n_workers,
108+
self._conn,
95109
)
96110

97111
# Loop over all macro parameters
@@ -101,6 +115,7 @@ def solve(self) -> None:
101115
self._micro_sims = micro_problem_cls(self._global_ids_of_local_sims[0])
102116
else:
103117
if not self._initialize_once:
118+
self._micro_sims.destroy()
104119
self._micro_sims = micro_problem_cls(
105120
self._global_ids_of_local_sims[elems]
106121
)

0 commit comments

Comments
 (0)