130.socorro
SPEC MPI2007 Benchmark Description
Benchmark Name
130.socorro
Benchmark Author
Developed by a number of contributors from Sandia National Labs,
Vanderbilt University, and Wake Forest University.
Our main point of contact is Alan Tackett at Vanderbilt University.
(alan.tackett@accre.vanderbilt.edu)
Benchmark Program General Category
DFT
Benchmark Description
Socorro is a modular, object oriented code for performing self-consistent
electronic-structure calculations utilizing the Kohn-Sham formulation of
density-functional theory. Calculations are performed using a plane wave
basis and either norm-conserving pseudopotentials or projector augmented
wave functions. Several exchange-correlation functionals are available for
use including the local-density approximation (Perdew-Zunger or Perdew-Wang
parameterizations of the Ceperley-Alder QMC correlation results) and the
generalized-gradient approximation (PW91, PBE, and BLYP). Both Fourier-space
and real-space projectors have been implemented, and a variety of methods
are available for relaxing atom positions, optimizing cell parameters, and
performing molecular dynamics calculations.
MPI Usage
MPI usage consists mostly of point to point communications: MPI_Send,
MPI_Irecv, MPI_Waitany. There do exist a few collective MPI operations
as well.
This application seems to spend around 17% of its running time in MPI
operations, by one measure. Most messages seem to be between 4-16 KB in
size, although some large messages are passed as well.
Input Description
Input consists of a set of files:
- argvf is a text file containing a set of parameters used to
specify and control a run. More information about this may obtained from the
Socorro
User Guide.
- data/crystal is a text file continaing lattice vectors, atom
types, and atom positions.
There may exist other input files, which are documented in the
Socorro
User Guide.
Output Description
A series of output files are produced, which are not validated for the
purposes of the SPEC benchmark. The code also produces output on the stdout
stream detailing the density calculation at each step. This information is
validated. The original code produces this output as an iterative process,
which is not optimal for the purposes of a benchmark. Thus, we have fixed
the number of iterations at 20, which has been shown to be more than
sufficient for convergence of the datasets on all currently known systems
that we have been able to test.
Programming Language
Primarily Fortran 90, with some minor amounts of C code.
Also includes FFTW, which is written in C.
Known portability issues
Users will need to specify a number of portability flags, which are described
as follows:
- SPEC_MPI_WINDOWS enables compilation of the code on a Microsoft
Windows based system.
- SPEC_FOUR_BYTE_LONG or SPEC_EIGHT_BYTE_LONG -- one of
these must be defined, depending the size of long integers used by your
system. This is used for properly casting pointer values between C and
Fortran without loss of information.
- SPEC_NO_UNDERSCORE, SPEC_SINGLE_UNDERSCORE, or
SPEC_DOUBLE_UNDERSCORE -- one of these must be defined in accordance
with the symbol mangling convention used by your system's Fortran compiler.
This is necessary to compile C routines that may be linked with and called
from Fortran routines.
- SPEC_HPG_MPI2 must be defined if your MPI implementation is MPI-2
compilant. This has to do with proper conversion of MPI data structure handles
between C and Fortran.
- SPEC_HAS_DBESJN must be defined if your compiler or math library
provides a dbesjn Bessel function.
- SPEC_HAS_JN must be defined if your compiler or math library
provides a jn Bessel function.
For base tunings, you are required to use the BLAS and LAPACK functions found
in the specblas.F90 source file. For peak tunings, you are free to
substitute these functions with functions provided by a library containing
optimized versions for your system, e.g. ACML or MKL.
Version and Licensing
This code is based on Socorro 1.0, with substantial bugfixes and enhancements
from the developers in response to issues raised by SPEC contributors.
Socorro and FFTW are both released under the GNU General Public License.
References
Last updated: February 6, 2007