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)
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 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 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 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 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 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++ 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 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.
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)
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 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
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 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 is a Level 3 solver for Clover fermions from MIT Click here to get from TRAC
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
|
|
|