Skip to content
/ quda Public
forked from lattice/quda

QUDA is a library for performing calculations in lattice QCD on GPUs.

License

Notifications You must be signed in to change notification settings

alexstrel/quda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Release Notes for QUDA v0.1                          17 November 2009
---------------------------

Overview:

QUDA is a library for performing calculations in lattice QCD on
graphics processing units (GPUs) using NVIDIA's "C for CUDA" API.
This release includes optimized kernels for applying the Wilson Dirac
operator and clover-improved Wilson Dirac operator, kernels for
performing various BLAS-like operations, and full inverters built on
these kernels.  Mixed-precision implementations of both CG and
BiCGstab are provided, with support for double, single, and half
(16-bit fixed-point) precision.


Software compatibility:

The library has been tested under linux (CentOS 5.3 and Ubuntu 8.04)
using release 2.3 of the CUDA toolkit.  There are known issues with
releases 2.1 and 2.2, but 2.0 should work if one is forced to use an
older version (for compatibility with an old driver, for example).

Under Mac OS X, the library fails to compile due to bugs in CUDA 2.3.
It might work with CUDA 2.2 or 2.0, but this hasn't been tested.


Hardware compatibility:

For a list of supported devices, see

http://www.nvidia.com/object/cuda_learn_products.html

Before building the library, you should determine the "compute
capability" of your card, either from NVIDIA's documentation or by
running the deviceQuery example in the CUDA SDK, and set GPU_ARCH in
make.inc appropriately.  Setting 'GPU_ARCH = sm_13' will enable double
precision support.


Installation:

In the source directory, copy 'make.inc.example' to 'make.inc', and
edit the first few lines to specify the CUDA install path, the
platform (x86 or x86_64), and the GPU architecture (see "Hardware
compatibility" above).  Then type 'make' to build the library.


Using the library:

Include the header file include/quda.h in your application, link
against lib/libquda.a, and study tests/invert_test.c for an example of
the interface.  The various inverter options are enumerated in
include/enum_quda.h.


Known issues:

* One of the stages of the build process requires over 5 GB of memory.
  If too little memory is available, the compilation will either take
  a very long time (given enough swap space) or fail completely.

* For compatibility with CUDA, on 32-bit platforms the library is compiled
  with the GCC option -malign-double.  This differs from the GCC default
  and may affect the alignment of various structures, notably those of
  type QudaGaugeParam and QudaInvertParam, defined in invert_quda.h.
  Therefore, any code to be linked against QUDA should also be compiled
  with this option.


Contact information:

For help or to report a bug, please contact Mike Clark
([email protected]) or Ron Babich ([email protected]).

If you find this code useful in your work, please cite:

M. A. Clark et al., "Solving Lattice QCD systems of equations using mixed
precision solvers on GPUs" (2009), arXiv:0911.3191 [hep-lat].

Please also drop us a note so that we can inform you of updates and
bug-fixes.  The most recent public release will always be available
online at http://lattice.bu.edu/quda/

About

QUDA is a library for performing calculations in lattice QCD on GPUs.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 52.2%
  • C 39.1%
  • Shell 7.2%
  • Python 1.5%