QEX is a high-level framework for lattice field operations written in the language Nim.
It provides optimized lattice field operations, including SIMD support, for CPU architectures (native GPU support is currently experimental). Since Nim compiles to native C/C++, directly calling any C/C++ lattice code or library from QEX is relatively easy to do.
Some simple code examples are here ex0.nim ex1.nim.
Some of the operations it supports are
- U(1), SU(2..4) gauge fields in any dimension
- SciDAC I/O
- Gauge fixing
- Staggered solver and forces (Asqtad, HISQ, nHYP)
- Wilson solver (no clover yet)
- Interface for Chroma, Grid, QUDA interoperability
QEX is under active development and new capabilities are constantly being added.
Installation guide: INSTALL.md
Build guide: BUILD.md
Further examples: