Re: [AMBER] pmemd.MPI of amber14: run MD twice with the same input but got different output (within statistical error)

From: Jason Swails <>
Date: Tue, 5 Aug 2014 10:03:25 -0400

On Mon, Aug 4, 2014 at 10:45 PM, Ying-Chieh Sun <> wrote:

> Hi Brian,
> Thanks for the input.
> Ig issue is not our case. We did check that already.

​This is certainly due to the dynamic load balancing in pmemd.MPI. What
this means is that pmemd.MPI splits up the work between processors by
analyzing how long each processor spent on the amount of work assigned to
it and then redistributes the work in an attempt to get a more even
distribution. Since there are always background processes taking up
computational resources, the "optimal" load balance is almost never the
same two different times. While this helps improve performance for obvious
reasons, it also eliminates determinism.

As a result, the order of operations is never the same when running two
different parallel calculations. If you want reproducibility, you'll need
to use a program that uses a ​so-called "static load-balancing scheme"
(which means that the workload is distributed on the first step
deterministically and never changed). Obviously serial versions of
programs have static load balancing -- the single processor does all of the
work. Also, pmemd.cuda, pmemd.cuda.MPI, and sander.MPI also all utilize
static load balancing (I've personally seen sander.MPI generate identical
results for the same number of processors for thousands of steps).

Of course this reproducibility relies on all input settings being _exactly_
the same (and ig must be a positive integer, _not_ -1).


Jason M. Swails
Rutgers University
Postdoctoral Researcher
AMBER mailing list
Received on Tue Aug 05 2014 - 07:30:02 PDT
Custom Search