Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
0198b1d
TODO: Revisit these changes
dwhswenson Jul 21, 2020
d48acad
Add initial dask_integration & parallel_committor
dwhswenson Jul 21, 2020
8a91e8a
Improvements to gmx engine tools
dwhswenson Jul 21, 2020
de565ab
Changes to make storage objects storable
dwhswenson Jul 22, 2020
b355bd3
updates to dask integration/parallel committor
dwhswenson Jul 22, 2020
f182ada
Modifications to external/gmx for parallelization
dwhswenson Jul 23, 2020
4196ff8
add finalize to force dask to run
dwhswenson Jul 23, 2020
5b48708
Fix problem with dask pickling args to submit
dwhswenson Jul 24, 2020
331f541
make NewCommittor into an actual committor
dwhswenson Jul 27, 2020
3f8c219
Merge remote-tracking branch 'upstream/master' into dask_committor_2020
dwhswenson Jul 28, 2020
e06bbd3
Merge branch 'storable_functions' into dask_committor_2020
dwhswenson Jul 28, 2020
776d95b
Merge branch 'storable_functions' into dask_committor_2020
dwhswenson Sep 23, 2020
3f6dd10
Merge branch 'master' into dask_retis_2021
dwhswenson Dec 21, 2020
1619518
fix OPS storage from_dict for memory backend
dwhswenson Dec 21, 2020
f3e3893
update dask stuff for new simstore locations
dwhswenson Dec 21, 2020
0e340d9
Merge branch 'simstore-openmm' into dask_retis_2021
dwhswenson Dec 21, 2020
43e7aa3
AD committor now runs with updated SimStore stuff
dwhswenson Dec 22, 2020
8c04c83
Merge branch 'simstore-simplify' into dask_retis_2021
dwhswenson Dec 22, 2020
f602414
fixes for dask/pickling support
dwhswenson Dec 23, 2020
5c724c5
minor cleanup to get toy repex model working
dwhswenson Dec 26, 2020
946722e
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Jan 22, 2021
0e8833e
Move parallel stuff to experimental.parallel
dwhswenson Jan 23, 2021
ac33c18
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Mar 5, 2021
4c248f8
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Mar 24, 2021
ec840e9
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Jul 5, 2021
72cc8f9
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Jul 12, 2021
169cd80
Start tests for dask integration
dwhswenson Jul 13, 2021
e5b6ec5
fix import
dwhswenson Jul 13, 2021
23cf5c0
Add Scheduler + Gromacs tests
dwhswenson Jul 13, 2021
2fa014d
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Aug 9, 2021
6b6cf1b
Merge remote-tracking branch 'upstream/master' into dask_retis_2021
dwhswenson Sep 12, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
TODO: Revisit these changes
* switched from dill to cloudpickle due to conflicts (cloudpickle needed
  for dask)
* made netcdfplus objects picklable (for immutable info) ... should
  check whether this is even necessary
* moved setting the delayed interrupt the last moment, but that might be
  a performance risk for toy models
  • Loading branch information
dwhswenson committed Jul 21, 2020
commit 0198b1d50a3cea1a1e229ac5dc4987c7b3b82385
10 changes: 10 additions & 0 deletions openpathsampling/engines/delayedinterrupt.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import signal
import logging
import threading


# class based on: http://stackoverflow.com/a/21919644/487556
Expand Down Expand Up @@ -39,3 +40,12 @@ def __enter__(self):

def __exit__(self, type, value, traceback):
pass


def get_interrupter():
if isinstance(threading.currentThread(), threading._MainThread):
interrupter = DelayedInterrupt
else:
interrupter = EmptyContext
return interrupter

10 changes: 6 additions & 4 deletions openpathsampling/engines/dynamics_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@
@author JDC Chodera
@author: JH Prinz
"""

import logging
import sys
import threading

from openpathsampling.netcdfplus import StorableNamedObject
from openpathsampling.integration_tools import is_simtk_unit_type

from .snapshot import BaseSnapshot
from .trajectory import Trajectory

from .delayedinterrupt import DelayedInterrupt
from .delayedinterrupt import get_interrupter

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -152,7 +152,8 @@ def __init__(self, options=None, descriptor=None):

self.descriptor = descriptor
self._check_options(options)
self.interrupter = DelayedInterrupt

self.interrupter = get_interrupter()

@property
def current_snapshot(self):
Expand Down Expand Up @@ -546,7 +547,8 @@ def iter_generate(self, initial, running=None, direction=+1,
snapshot = None

try:
with self.interrupter():
interrupter = get_interrupter()
with interrupter():
snapshot = self.generate_next_frame()

# if self.on_nan != 'ignore' and \
Expand Down
13 changes: 9 additions & 4 deletions openpathsampling/experimental/storage/callable_codec.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import types
import dis
import dill
# import dill
import cloudpickle as cp
from .serialization_helpers import has_uuid, do_import

GLOBALS_ERROR_MESSAGE="""
Expand Down Expand Up @@ -107,7 +108,11 @@ def default(self, obj):

# Case 2: arbitrary function
if obj.__module__ == "__main__":
all_globals = dill.detect.globalvars(obj)
pass
# all_globals = dill.detect.globalvars(obj)
# TODO: this is a serious oversight (should fail tests)
# problems getting dill & cloudpickle to play nice
all_globals = {}
else:
all_globals = {}
errors += self._error_message(GLOBALS_ERROR_MESSAGE,
Expand All @@ -127,7 +132,7 @@ def default(self, obj):

return {
'__callable_name__': obj.__name__,
'_dilled': dill.dumps(obj)
'_dilled': cp.dumps(obj)
}
return obj

Expand All @@ -138,7 +143,7 @@ def object_hook(self, dct):
elif '__module__' in dct:
func = do_import(dct['__module__'], dct['__callable_name__'])
elif '_dilled' in dct:
func = dill.loads(dct['_dilled'])
func = cp.loads(dct['_dilled'])
else: # pragma: no cover
raise RuntimeError("Error reloading ",
dct['__callable_name__'])
Expand Down
3 changes: 3 additions & 0 deletions openpathsampling/netcdfplus/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,9 @@ def to_dict(self):
key: self.__dict__[key] for key in keys_to_store
}

def __reduce__(self):
return (self.from_dict, (self.to_dict(),))

@classmethod
def from_dict(cls, dct):
"""
Expand Down