Software Home



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.

[ IMAGE: The SciDAC Layers]

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.
The download page is here.


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