What does ns/day mean in high-performance computing?

In MD simulation benchmarking, you often see performance expressed in terms of ns/day and hours/ns.

How do I translate these values to the amount of real-time a simulation takes? In other words, what would be a reasonable value of ns/day in order to run standard MD simulations using GPUs?

ns/day refers to the number of nanoseconds (ns) of simulation (referring to the variable time in the simulation) that you can do in a day of computation (elapsed real time or wall time). It is a useful quantity to schedule one's work or to get a sense of what is achievable in a given period of time.

There's no standard ns/day as it depends on the type of MD (ab initio, classical, ...), its parametrization, system size, the number of CPUs/GPUs you use, etc.

I am providing only a basic overview of this process and so to get a complete idea of what is happening, please refer to published literature.

During MD simulations, one is generally interested in how the system evolves with time (for example, the random motion of atoms cause the system temperature). Therefore, one must have an idea of how time varies for the system being modeled.

To achieve this, a static image of the system is taken, and the positions, force acting on each atom and the velocities are first evaluated. Once done, the system time is advanced (the forces and velocities are integrated to obtain new positions) by a small amount of time (timestep of the simulation) and the resulting system is once again evaluated. As you can see, the system always evolves with time, and at the end of each timestep, the new forces acting on the atoms are evaluated. However when doing this in the real world, the time taken to calculate the system properties from one timestep to another becomes important.

Hence the terms ns/day and hours/ns indicates a measure of actual time taken to calculate a ns of time history in the simulation. However, as you can see, setting the timestep to a value twice as high can change the ns/day measurement significantly, as only half the amount of timesteps need to be calculated to reach the same simulation time. Similarly, changing the number of atoms or even the inter-atomic interaction model would change this parameter.

But if you maintain the system size, species, inter-atomic interaction models and timestep, you can now compare the performance between different computer configurations (with and without GPU, varying the number of cores or even two different computers etc.) while you do the calculation.

Also since it seems that you are starting to learn MD, I suggest that you start with a bulk model of a very well established material such as Lennard-Jones (LJ) Argon (its a solid at around 40K ;P). This enables you to use a smaller system size to reduce the computational time, and you can find a significant amount of literature if you search online. Additionally the LJ potential is one of the easiest potentials to work with. But if you find a straightforward tutorial using some other bulk material, go for it without any worries. Try to understand the fundamental concepts.

• Thanks. Say if I use GROMACS how can I maintain the system size, species, inter-atomic interaction models and timestep ? Are those done by means of command line arguments of the tool? Oct 29, 2021 at 12:12
• @scamander no, this is to be supplied in a configuration file which has mdp as an extension. Oct 29, 2021 at 13:24
• @scamander I'm not familiar with the particular software. However you are required to feed the basic information (number of atoms, positions of each atom, type of atom, interactions between atoms etc.) regarding the system at the beginning of the calculation. These are what defines the complete system. Therefore as long as you use the same input files for the calculations, all those mentioned parameters are constant.
– PBH
Oct 29, 2021 at 14:22
• Very nice answer! Oct 29, 2021 at 16:19
• ns/day measures the number of nanoseconds of the system's dynamics that can be simulated in 1 day of computing.
• hours/ns measures the number of hours of computing required to simulate 1 nanosecond of the system's dynamics.

Both of these are extremely hardware-dependent and even more importantly, depend on the size of the system being simulated. In the link you gave us to NVIDIA's presentation which uses these terms, you can see that increasing the number of atoms in the system being simulated, slowed down the calculation:

"470 ns/day on 1 GPU for L-Iduronic acid (1362 atoms)
116 ns/day on 1 GPU for DHFR (23K atoms)"

• Thank you. Generally speaking in human terms, how long does it take for a normal MD run? 1 hr? 1 day? etc. Using CPU vs GPU. Oct 31, 2021 at 1:36
• You can ask that as another question. But I would recommend that you tell us how many atoms are in your system, what type of hardware you have, and how many nanoseconds of dynamics you want to see. Other things will also affect the answer, such as the type of forcefield you're using (some potentials require more computations to calculate than others) , but if you give the first three things I recommended, you might get some good answers. It would be an excellent question! Oct 31, 2021 at 1:39
• Receptor: 4674 atoms, ligands 273 atoms; CHARMM forcefield. Using GROMACS under Amazon G4 instance (1 GPU 4vCPUs) Oct 31, 2021 at 2:37
• This question is about the definition of ns/day. You need to post a new question if you want to know how long that will take. Use the benchmark-timings tag. Oct 31, 2021 at 4:04
• Done. Please see this post Oct 31, 2021 at 4:57