Massively parallel chemical potential calculation on graphics processing units

Kevin B. Daly, Jay B. Benziger, Pablo G. Debenedetti, Athanassios Z. Panagiotopoulos

Research output: Contribution to journalArticlepeer-review

24 Scopus citations

Abstract

One- and two-stage free energy methods are common approaches for calculating the chemical potential from a molecular dynamics or Monte Carlo molecular simulation trajectory. Although these methods require significant amounts of CPU time spent on post-simulation analysis, this analysis step is well-suited for parallel execution. In this work, we implement this analysis step on graphics processing units (GPUs), an architecture that is optimized for massively parallel computation. A key issue in porting these free energy methods to GPUs is the trade-off between software efficiency and sampling efficiency. In particular, fixed performance costs in the software favor a higher number of insertion moves per configuration. However, higher numbers of moves lead to lower sampling efficiency. We explore this issue in detail, and find that for a dense, strongly interacting system of small molecules like liquid water, the optimal number of insertions per configuration can be as high as 10 5 for a two-stage approach like Bennett's method. We also find that our GPU implementation accelerates chemical potential calculations by as much as 60-fold when compared to an efficient, widely available CPU code running on a single CPU core.

Original languageEnglish (US)
Pages (from-to)2054-2062
Number of pages9
JournalComputer Physics Communications
Volume183
Issue number10
DOIs
StatePublished - Oct 2012

All Science Journal Classification (ASJC) codes

  • Hardware and Architecture
  • General Physics and Astronomy

Keywords

  • Free energy
  • Graphics processing units
  • Monte Carlo methods
  • Phase equilibria

Fingerprint

Dive into the research topics of 'Massively parallel chemical potential calculation on graphics processing units'. Together they form a unique fingerprint.

Cite this