Individual Module Web Pages

QMP

QMT

QLA

QIO

C-LIME

QDP/C

QDP/C++

QOPQDP

CG DWF

ADAT

BAGEL QDP

ENSBC

MDWF

CLOVER

QA0

QUDA

Application Code Web Pages

Chroma

CPS

FermiQCD

MILC

QLua

QCD Visualization


Tutorials

HackLatt'08 Chroma Tutorial

HackLatt'07 Chroma Tutorial

HackLatt'06 Chroma Tutorial

Numerical methods lecture

Lattice Practices 2008 tutorials by A.Juettner and C.Urbach

HackLatt'08 Chroma Tutorial

HackLatt'07 Chroma Tutorial

HackLatt'06 Chroma Tutorial

Numerical methods lecture

Lattice Practices 2008 tutorials by A.Juettner and C.Urbach

QLUA Tutorials and Build Notes

Software Releases

About the Software

USQCD has developed a suite of software enabling lattice QCD computations to be peformed with high performance across a variety of architectures, including both custom facilities and commodity clusters.  This software is made up of software library modules that can be re-used by higher level applications.  On this page you can find links to the project web pages of the individual software modules, as well as to complete lattice QCD packages which use them.

The approximate organisation of the packages into layers is depicted  below (we omit here 3rd party packages or packages auxiliary to another package)


[ IMAGE: The SciDAC Layers]


Figure 1: The SciDAC Layers and the software module architecture


Applications Packages that use SciDAC modules

The Lattice QCD science output comes from applications packages (in figure 1 above) which provide a context in which the underlying SciDAC modules can perform their work. We list the application packages used by USQCD below:
The Level 1, Level 2, and Level 3 packages can be built independently of the applications and used in
your own codes if you wish. However, please heed this warning:

 Given the number of modules and the combinatorically larger variety of possible ways to combine them, we suggest that if you are new to this game you can save yourself a lot of frustration by checking out one of the application suites above.

Having said  all that,  the currently available SciDAC modules are described and listed below

The SciDAC Software Modules

QMP

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

QMT

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

QLA

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.

QIO

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.

QDP/C

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.

QDP/C++

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.

QOPQDP

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.

CG-DWF

This module provides a Domain-Wall inverter optimized for SSE, BlueGene and AltiVec architectures.
The download page is here.

SSE Wilson Dslash

This module provides a Wilson Dslash Operator implementation for SSE. Click here to go to the SSE Dslash module home page (page under construction)

C-LIME

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.

ADAT

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

BAGEL QDP

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

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

MDWF

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

QA0

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

Clover

Clover is a Level 3 solver for Clover fermions from MIT Click here to get from TRAC

QUDA

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
Webmaster