1 Introduction
This is the detailed user's guide for the C binding of the QDP Data Parallel
Applications Programmer Interface developed under the auspices of the
U.S. Department of Energy Scientific Discovery through Advanced
Computing (SciDAC) program.
The QDP Level 2 API has the following features:
- Can specify a physical lattice of any size and number of dimensions.
- Automatically handles the layout of the lattice across the machine.
- Provides functions for creating and destroying fields on the lattice
along with a large set of data parallel operations (logically SIMD)
acting on all sites across the lattice or on subsets of these sites.
- Allows creation of arbitrary subsets of sites.
- All math operations are handled by the SciDAC QLA library which has
optimized versions for SSE (Intel, AMD) and 440 (QCDOC, BG/L) architectures.
- Allows asynchronous (non-blocking) shifts of lattice level
objects over any permutation map of sites onto sites.
- Automatically handles dependency of shifts and waits on the results only
when needed.
- Uses the SciDAC QMP library for communications which is available for
all MPI platforms and QCDOC.
- Provides some combined shift and linear algebra instructions for
convenience and optimization.
- Provides fill operations (filling a lattice quantity from a
scalar value(s)), global reduction operations, and lattice-wide
operations on various data-type primitives, such as matrices, vectors
and propagators.
- Has flexible I/O capabilities allowing reading and writing of all lattice
fields and also global data.
- Uses SciDAC QIO library for I/O which is compatible with the USQCD and ILDG
standards.