-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
Due to a known memory leak when instantiating subclasses of SymEngine (one of our upstream dependencies) Symbol objects (see symengine/symengine.py#379), running ESPEI with parallelization will cause memory to grow in each worker.
Only running in parallel will trigger significant memory growth, because running in parallel uses the pickle library to serialize and deserialize symbol objects and create new objects that can't be freed. When running without parallelization (mcmc.scheduler: null), new symbols are not created.
Until symengine/symengine.py#379 is fixed, some mitigation strategies to avoid running out of memory are:
- Run ESPEI without parallelization by setting
scheduler: null - (Under consideration to implement): when parallelization is active, use an option to restart the workers every
Niterations. - (Under consideration to implement): remove
Modelobjects from the keyword arguments of ESPEI's likelihood functions. Model objects contribute a lot of symbol instances in the form ofv.SiteFractionobjects. We should be able to get away with only usingPhaseRecordobjects, but there are a few placesModel.constituentsto be able to infer the sublattice model and internal degrees of freedom that would need to be rewritten.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels