Abstract

Molecular mechanics applications model the interactions among large ensembles of discrete particles. They are used where probabilistic methods are inadequate, such as drug chemistry. This methodology is difficult to parallelize with good performance, due to its poor locality, uneven partitions, and dynamic behavior. Imperative programs have been written that attempt this on shared and distributed memory machines. Given such a program, the computational kernel can be rewritten in Sisal, a functional programming language, and integrated with the rest of the imperative program under the Sisal Foreign Language Interface. This allows minimal effort and maximal return from parallelization work, and leaves the work appropriate to imperative implementation in its original form. We describe such an effort, focusing on the parts of the application that are appropriate for Sisal implementation, the specifics of mixed-language programming, and the complex performance behavior of the resulting hybrid code.