perses
perses copied to clipboard
Profiling setup workflows
Identify bottlenecks in the setup steps by profiling.
I performed a quick/basic profiling using our current examples and according to the following figures, we might not gain much from optimizing the setup parts of our software. It calls so many things and a real optimization would require optimizing every single one of these things, which is a huge task, as far as I can see. Maybe we could try doing something to the _constraint_repairs
in the topology_proposal.py
module, but even so, that adds up to ~8% of the walltime, in the "best" cases.
Highlighted in red is what the "best candidate" could be, which is the one I mentioned before.
It looks like we can definitely tune the local energy minimization, though. At one point, we had experimented with the very fast FIRE minimizer that could be "good enough" for our purposes: https://github.com/choderalab/openmmtools/blob/master/openmmtools/integrators.py#L2283-L2457
It wasn't implemented correctly (my fault!) so isn't robust, so we can clean this up. I've heard others have had a great deal of success with it.
Is there any hint that some methods that are called repeatedly collectively add up to a lot of time?