Hi everyone,
I'm having a problem with the memory usage of the IMP::Model::evaluate(bool) method.
I'm trying to optimize a set of particles as done for the alpha-globin domain (I'm doing some testing on a larger chromatin domain) using a large set of restraints (over 10^6 restraints).
The memory usage is OK until all the restraints are generated (~2GB), and then increase to 100% of memory and swap (16GB + 16GB) when I first call m.evaluate(False) (to check the initial score) causing the script to stop. I understand that a large number of restraints are being evaluated, but I was wondering if this is an expected behavior (i.e. if there is a sort of limitation in the number of restraints that can be implemented per memory GB) or if there is a workaround, before trying to run the script on a (shared) machine with much more memory.
I'm using an old version of IMP (r7392) with the following optimizer:
# Set up optimizer
o = IMP.core.MonteCarlo()
o.set_return_best(True)
o.set_model(m)
fk = IMP.core.XYZ.get_xyz_keys()
mov = IMP.core.NormalMover(ps, fk, 0.25)
o.add_mover(mov)
lo = IMP.core.ConjugateGradients()
o.set_local_steps(lsteps)
o.set_local_optimizer(lo)