Scalable Molecular Dynamics with NAMD on Blue Gene/L

IBM Journal of Research and Development 2007
Pulication Type: Paper
Download: pdf ps

Abstract

NAMD is a production molecular dynamics application for biomolecular simulations that include assemblages of proteins, cell-membranes and water molecules. NAMD has demonstrated its performance on several parallel computer architectures. In a biomolecular simulation, the problem-size is fixed and a large number of iterations need to be executed to understand interesting biological phenomenon. Hence we need MD applications to scale to thousands of processors, even though the individual time step available for parallelization is quite small. The Blue Gene/L machine has tens of thousands of embedded Power PC 440 processors. In this paper, we present the challenges we had to overcome to get good sequential performance on the embedded 440 core, by the use of various compiler optimization techniques that use SIMD instructions. We also present several techniques to scale NAMD to 20,480 nodes of Blue Gene/L. These include topology specific optimizations to localize communication, new messaging protocols that are more suitable for the Blue Gene/L torus as they do not require message ordering, topology aware load-balancing, and overlap of computation and communication. We also present the performance results on various molecular systems with sizes ranging from 5570 atoms to 327,506 atoms.

Research Areas

Text Ref

Sameer Kumar, Chao Huang, Gengbin Zheng, Eric Bohm, Abhinav Bhatele, James C. Phillips, Hao Yu, Laxmikant V. Kale, "Scalable Molecular Dynamics with NAMD on Blue Gene/L", in IBM Journal of Research and Development: Applications of Massively Parallel Systems, Volume 52, No 1/2, pg 177-187, 2007

BibTex

@Article{NAMDIBM07,
  author = {Sameer Kumar and Chao Huang and Gengbin Zheng and Eric Bohm and Abhinav Bhatele and James C. Phillips and Hao Yu and  Laxmikant V. Kal\'e},
  title     = "{Scalable Molecular Dynamics with NAMD on Blue Gene/L}",
  year      = {2008},
  volume    = 52,
  number    = {1/2},
  pages     ="177-187",
  JOURNAL = {IBM Journal of Research and Development: Applications of
Massively Parallel Systems},
}