OpenAtom
Version1.5a
|
OpenAtom is a Car-Parrinello Ab-Initio Molecular Dynamics software developed by the Parallel Programing Laboratory, UIUC in collaboration with IBM, NYU, and Yale. See also the OpenAtom webpage.
OpenAtom is parallel simulation software for studying atomic and molecular systems based on quantum chemical principles. In contrast to classical computational molecular dynamics based on Newtonian mechanims, it uses the Car-Parrinello Ab Initio Molecular Dynamics (CPAIMD) approach. Instead of using an empirical force function, the CPAIMD algorithm computes the forces acting on each atom as the summation of multiple terms derived from plane-wave density functional theory. This allows OpenAtom to study complex atomic and electronic physics in semiconductor, metallic, biological and other molecular systems.
OpenAtom is implemented on top of Charm++, which is an over-decomposition based parallel programming framework that provides
support for message-driven execution of migratable entities empowered by an adaptive runtime system. Charm++ encourages decomposition of parallel computation using units that are natural to the application domain, instead of dividing data into as many pieces as processors. In particular, OpenAtom decomposes the data and the computation across a number of chare objects, whose type and/or number only depend on the CPAIMD algorithm and the desired grainsize. This allows OpenAtom to exploit the underlying mathematics via a seamless mix of both data and functional decompositions resulting in greater expressed parallelism, and several overlapping phases of computation combined with a longer critical path of dependent computations. The current implementation of OpenAtom in Charm++ is highly scalable, and has exhibited portable performance across three generations of the IBM Blue Gene family, apart from other supercomputing platforms.
OpenAtom is hosted using git and can be downloaded using the following command:
git clone http://Charm.cs.uiuc.edu/gerrit/openatom.git
Recent commit history can be view here.
You will also need to download either a stable version of Charm++ from this weblink or the nightly version using the following command:
git clone http://Charm.cs.uiuc.edu/gerrit/charm.git
Sample data sets can be obtained using one of the following commands:
git clone http://Charm.cs.uiuc.edu/gerrit/datasets/openatom/water_32M_10Ry.git git clone http://Charm.cs.uiuc.edu/gerrit/datasets/openatom/water_32M_70Ry.git git clone http://Charm.cs.uiuc.edu/gerrit/datasets/openatom/water_64M_70Ry.git git clone http://Charm.cs.uiuc.edu/gerrit/datasets/openatom/water_128_70Ry.git
Before OpenAtom is compiled, one needs to get access to a compiled version of Charm++. Detailed instructions on compiling Charm++ can be obtained here. On a typical 64-bit linux machine, Charm++ can be compiled using the following command (executed within Charm++ directory):
./build charm++ net-linux-x86_64 --with-production -j8 (production version) ./build charm++ net-linux-x86_64 -j8 -g (debug version)
You will also need FFTW library, configured for double precision, to compile OpenAtom.
The INSTALL file in OpenAtom provides detailed instruction for its compilation. Here is a quick summary:
Before executing OpenAtom, obtain a dataset using the git command mentioned in the download section, and either place it in the data directory, or modify the w3210 variable in config.mk.
If the dataset uses the old format, you will need to execute setup in dataset directory. setup is located in BASEDIR/util directory.
OpenAtom is to be executed as a Charm++ application, which is explained in detail at this link. The general syntax is as follows:
./charmrun +p<N> ./OpenAtom <path to cpaimd config> <path to water input> (N is the number of processors to execute the job on)
On most machine layers (excluding net), a Charm++ application can be launched in the same manner as an MPI application. For example, if built on top of MPI, one can launch OpenAtom as follows
mpirun -np <N> ./OpenAtom <path to cpaimd config> <path to water input>
In the datasets downloaded using the command listed above, these files are located in regression directory. You can also use tidy located in the util directory to clean up the dataset directory before performing a new run.
See GSpaceDriver::driveGSpace for SDAG flow of control.