QA0, a QCD Register Transfer Language

QA0 is a language for writing single-processor QCD leaf routines. It provides an abstraction of an actual processor targetted toward lattice codes. In particular:

QA0 uses an s-expression syntax for implementation convenience. This might change in a future release.

QA0 uses the same input for multiple backends. This allows one to develop and debug the code on one platform and deploy it on others. In some cases support for new platforms is confined to the backend, while no change to the source code is needed. This might be not possible to achieve full platform independence, though the need to change source is being kept to the minimum.

Currently QA0 supports the following backends:

cee The current C standard, ISO/IEC 9899 without complex arithmetics, for 32-bit address space machines.
cee-64 The current C standard, ISO/IEC 9899 without complex arithmetics, for 64-bit address space machines.
c99 The current C standard, ISO/IEC 9899 with complex numbers, for 32-bit address space machines.
c99-64 The current C standard, ISO/IEC 9899 with complex numbers, for 64-bit address space machines.
header Inteface generation: produce a .h file with function prototypes.
bgl/xlc Output for Blue Gene /L and /P with the Double Hummer support using IBM's XLC intrinsics.
bgq/xlc Output for Blue Gene /Q with QPX support using IBM's XLC intrinsics.

To install QA0, get the latest download from the link on the right, untar it and follow instructions in the README file in the top distribution directory.