Abstract
Parallel molecular dynamics programs employing shared memory or
replicated data architectures encounter problems scaling to large
numbers of processors. Spatial decomposition schemes offer better
performance in theory, but often suffer from complexity of
implementation and difficulty in load balancing. In the program
NAMD 2, we have addressed these issues with a hybrid decomposition
scheme in which atoms are distributed among processors in regularly
sized patches while the work involved in computing interactions
between patches is decomposed into independently assignable compute
objects. When needed, patches are represented on remote processors
by proxies. The execution of compute objects takes place in a
prioritized message-driven manner, allowing maximum overlap of work
and communication without significant programmer effort. In order
to avoid obfuscation of the simulation algorithm by the parallel
framework, the algorithm associated with a patch is encapsulated by
a single function executing in a separate thread. Output and
calculations requiring globally reduced quantities are similarly
isolated in a single thread executing on the master node. This
combination of features allows us to make efficient use of large
parallel machines and clusters of multiprocessor workstations while
presenting minimal barriers to method development and
implementation.