QUDA: A library for QCD on GPUs
QUDA is a library for performing calculations in lattice QCD on
graphics processing units (GPUs), leveraging NVIDIA's CUDA platform.
The current release includes optimized Dirac operators and solvers for
the following fermion actions:
- Wilson
- Clover-improved Wilson
- Twisted mass
- Improved staggered (asqtad or HISQ)
- Domain wall
Implementations of CG, multi-shift CG, BiCGstab, and DD-preconditioned
GCR are provided, including robust mixed-precision variants supporting
combinations of double, single, and half (16-bit "block floating
point") precision. The library also includes routines for HISQ link
fattening and force terms for the HISQ fermion action and one-loop
improved Symanzik gauge action. Use of many GPUs in parallel is
supported throughout, with communication handled by QMP or MPI.
Several commonly-used packages integrate support for QUDA as a compile-time
option, including
Chroma,
MILC,
CPS, and
BQCD
(in a specific branch available
here).
Download
Disclaimer: This package is undergoing active development, and
the interface may change between releases. See
the README
and NEWS files for the most recent
changes.
The current release
is here
(20 March 2013).
Past releases are here.
The very latest (likely unstable) version may be found in
QUDA's source code
repository.
Documentation
Current documentation is minimal, consisting mainly of the README file
and the examples in the tests/ directory. For those interested in QUDA's
internals, reference pages generated by doxygen are available for the
current release.
Mailing List
To receive announcements of future QUDA releases, please subscribe to
the quda-announce
mailing list by entering your address in the box below or by sending
an email message
to quda-announce+subscribe@googlegroups.com.
An archive of past announcements is
here.
Getting Help
The preferred method for requesting help is
to submit an
issue, but this currently requires a (free) GitHub account. An
alternative is to simply email the developers at
quda-developers[at]googlegroups[dot]com. If reporting a bug, please
be sure to specify which version of QUDA you're using.
Acknowledgments
Authors:
Ronald Babich,
Kipton Barros,
Richard Brower,
Michael Clark,
Justin Foley,
Joel Giedt,
Steven Gottlieb,
Bálint Joó,
Claudio Rebbi,
Guochun Shi,
Alexei Strelchenko
If you find this code useful in your work, please cite
(arXiv,
INSPIRE):
- M. A. Clark, R. Babich, K. Barros, R. Brower, and C. Rebbi,
"Solving Lattice QCD systems of equations using mixed precision
solvers on GPUs," Comput. Phys. Commun. 181, 1517 (2010)
[arXiv:0911.3191 [hep-lat]].
When taking advantage of multi-GPU support, please also cite
(arXiv,
INSPIRE):
- R. Babich, M. A. Clark, B. Joo, G. Shi, R. C. Brower, and S. Gottlieb,
"Scaling lattice QCD beyond 100 GPUs," International Conference for
High Performance Computing, Networking, Storage and Analysis (SC),
2011 [arXiv:1109.2935 [hep-lat]].
Acknowledgment: This material is based upon work
supported in part by the U.S. Department of Energy
under grants DE-FC02-06ER41440, DE-FC02-06ER41449, and
DE-AC05-06OR23177; the National Science Foundation under grants
DGE-0221680, PHY-0427646, PHY-0835713, OCI-0946441, and OCI-1060067;
as well as the PRACE project funded in part by the EUs 7th Framework
Programme (FP7/2007-2013) under grants RI-211528 and FP7-261557. Any
opinions, findings, and conclusions or recommendations expressed in
this material are those of the authors and do not necessarily reflect
the views of the Department of Energy, the National Science
Foundation, or the PRACE project.