-
Notifications
You must be signed in to change notification settings - Fork 1
String Method with many restraints really slow? #2
Comments
This is Jaewoon, one of the genesis developers. Thank you for letting us know the performance issue. The performance issue reported by you is very unexpected one. I guess you're using a single node with 1 replica, right? Please check the performance by changing MPI and OpenMP numbers. For example, you can run with "MPI=32, OpenMP=1", "MPI=16, OpenMP=2", and "MPI=8, OpenMP=4". Also, please check if all the processes are idle before you start running. After that, we might understand what is the main source of performance reduction. |
This is Chigusa who is a genesis developer, too. |
The above testing was done with 1 replica/system split into 32 MPI Processes, 1 OpenMP thread for each MPI process on Kyoto University Cluster using the beta version of genesis 2.0 beta version
So this is a theoretical bottleneck about which probably we cannot do anything other than reducing the number of restraints? |
I have been trying to use string method by using 2296 distance restraints on about 334 atoms pairs of atoms in my system. Initially the simulations blew up as soon as string update and reparametrizations happened. It turned out that the rest_function in RPATH section can only take a limited number of characters. So I updated the MaxLine variable in src/lib/string.fpp from 1500 to 50000, which resolved the blow-up of energies.
However, when I run string method simulation using [RPATH] section, the simulation is really slow. For comparison, if I run simple restrained MD with same number a of restraints while omitting the [RPATH] section entirely, I can get performance of 7,8 ns per day with 32 cores (single node) on a 60k atom (including water) system. However, when I run the same system using [RPATH] section (single replica, rpath_period = 0), the performance drops to 1ns per day with the same resources. This implies that the problem only happens when the [RPATH] section is included.
When I plot the simulation time with the number of restraints specified in rest_function, I can see a behavior, simulation time proportional to square of a number of restraints. it seems that the main bottleneck is comm_force in integrator which also scales as the square of a number of restraints.
The following results are in seconds for a 1000 step simulation length
The plot below shows Dynamics Time (Y-axis) plotted against Number of Rpath Restraints (X-axis)
The text was updated successfully, but these errors were encountered: