The SciDAC Software Modules
The modules can be caregorized into Level 1, Level 2 and Level 3 modules as shown in the diagram below. The main levels are
There are also various miscellaneous modules which do not fit into the diagram.
Figure 1: The SciDAC Layers and the software module architecture
We describe the modules below working from the top down from Level 3 to Level 1.
Level 3: High Performance Libraries
QUDA is a Level 3 solver for a variety of fermion actions for use on NVIDIA GPU based systems. Click here to go to the QUDA page on GitHub
QOPQDP is an implementation of the QOP level-three interface using QDP.
It contains various inverters and force terms that can be used across many
platforms and still achieves high performance.
Click here to go to the QOPQDP home page.
MDWF is a Level 3 inverter package, for performing inversions of a variety of Domain Wall Kernels, including Shamir, Moebius and Borici variants. Click Here to go to the MDWF web page
This module provides a Domain-Wall inverter optimized for SSE, BlueGene and AltiVec architectures.
Clover is a Level 3 solver for Clover fermions from MIT.Click here to go to the project page
Level 2 Module: Data Parallel and I/O
QDP++ is the C++ implementation of the QDP (QCD Data Parallel) interface. This implementation is fully integrated with QMP, QIO and provides extra XML I/O features using the 3rd party LibXML2 library. Click here to go to the QDP++ module page.
QDP/C is the C implementation of the QDP (QCD Data Parallel) interface. It provides for lattice wide operations as well as lattice wide communications and uses the QMP, QIO and QLA libraries. Click here to go to the QDP/C home page.
QIO provides as suite of input/output routines for lattice
data. It contains the SciDAC LIME implementation. By default QIO uses QMP
for its parallel communications although it can also be built in scalar
mode in which case no communications harness is required. Click here to go to the QIO module page.
This module provides the LIME record structure for LIME files. It is used by QIO but you can also use it on its own. Click here to go to the C-LIME module page.
Level 1 Modules (Portability)
QMP provides a standard communications layer for Lattice QCD. The communications primitives provided are leaner than say MPI and are suitable for very efficient implementation on a variety of interconnects. By using QMP you can abstract away your parallel interconnect. Click here to go to the QMP module page
QLA provides a standard interface for linear algebra routines that can
act on a site or a array of sites with several indexing options.
This implementation provides a complete library of all the functions in the QLA
name space and includes some code that has been optimized to attain very high
performance on some architectures.
Click here to go to the QLA home page.
QMT is a software library providing OpenMP like fork-join multi-thread APIs. The current implementation works on i386 and x86-64 using pthread and other optimizations. Click here to go to the QMT module page
Miscellaneous Libraries and Packages
Adat is package for carrying out post production data analysis. It is written in C++. Click here to go to the ADAT module Web Page
The BAGEL QDP module is used to produce some optimized linear algebra
routines for use by QDP++ on some machines such the QCDOC and the
BlueGene. It requires the 3rd Party BAGEL Assembly Generator
package to work. If you wish to use the BAGEL Assembly Generator, you
have to Acknowledge its use in any future publications, see the BAGEL Assembly Generator for details. A word of warning: The
BAGEL Assembler Generator page hosts an old copy of the BAGEL QDP
module which is now out of date for recent versions of QDP++ despite
its seemingly recent version number of (1.4.0). Please use the version
linked to from here instead. Click here to go to the BAGEL QDP module page.
Ensbc is small package for files in ensemble format and propagation of means and variances varying jackknife (or bootstrap). It is written in C. Click here to go to the ENSBC module Web Page
QA0 is a Register Transfer Language for writing Single Processor QCD leaf routines (kernels). It provides and abstraction of an actual processor targetted towards lattice codes. Click here to go to the QA0 web page
SUSY LATTICE is parallel code for RHMC simulations of N=4 supersymmetric Yang—Mills theory in four dimensions, and related measurements. Historically based on the MILC code, this package supersedes the serial C++ code presented in arXiv:1108.1503. Click here to go to the SUSY LATTICE web page