I'm running simulations in parallel on Hyak using ipyparallel. I'm able to load and simulate models on many engines, but eventually I run out of memory. After doing a couple of tests, I believe the memory leak is related to roadrunner and not ipyparallel.
Here is what I'm seeing:
initial load:

and the load eventually after some iterations:

I'm doing something like this in a loop with different parameter sets:
for r in many_r : # iterate through models
# first, set parameters (models have ~1k parameters, this takes a while)
[r.setValue('init('+l+')',v) for l, v in zip(parameter_labels, parameter_values)]
# now, iterate over conditions and set variables
# across conditions, models have same structure but just a couple of different variables (~20 variables)
rb = r.saveStateS() # this is convenient to keep the newly set parameters, instead of resetting the model to how it was first loaded
for conditions in conditions:
r2 = RoadRunner()
r2.loadStateS(rb) # this has the new parameters
# set variable
[r.setValue('init('+l+')',v) for l, v in zip(variable_labels, variable_values)]
results[condition] = r2.simulate()
all_results.append(results)
# what I've tried to deal with the memory issues
r2.clearModel()
del r2, rb
return all_results
And i have these config flags:
from roadrunner import Config, RoadRunner
Config.setValue(Config.ROADRUNNER_DISABLE_PYTHON_DYNAMIC_PROPERTIES, False)
Config.setValue(Config.LOADSBMLOPTIONS_RECOMPILE, False)
Config.setValue(Config.LLJIT_OPTIMIZATION_LEVEL, 4)
I'm running simulations in parallel on Hyak using ipyparallel. I'm able to load and simulate models on many engines, but eventually I run out of memory. After doing a couple of tests, I believe the memory leak is related to roadrunner and not ipyparallel.
Here is what I'm seeing:


initial load:
and the load eventually after some iterations:
I'm doing something like this in a loop with different parameter sets:
And i have these config flags: