Optional back ends

These two are present in the sources but are compiled only when qlua is configured for them. The reference build has neither, so in it the tables below do not exist and qcd.quda and _grid are nil. They are listed because they are user-accessible in a build that has them, and because a reader who finds the sources should know what they offer and that they are not in the shipped binary.

QUDA

With HAS_QUDA, two tables appear. The first is a thin wrapper over QUDA's own C interface:

GaugeParam, InvertParam and MultigridParam build parameter objects, each with copy and print methods and with every field readable and writable by name. multigridQuda builds a multigrid inverter, which has a close. The remaining entries map one-to-one onto QUDA calls: initCommsGridQuda, initQuda, initQudaDevice, initQudaMemory, endQuda, setVerbosityQuda, freeGaugeQuda, freeCloverQuda, loadGaugeQuda, loadCloverQuda, invertQuda, performAPEnStep, plaqQuda, qChargeCuda, openMagma and closeMagma.

The second is a higher-level API: laplacian, quarkContract, momentumProject, invert, printQudaMem, checkMemStatus and sandbox.

qlib/quda.qlua wraps all of this in qcd.quda.init, qcd.quda.fini, qcd.quda.inverter.simple and qcd.quda.inverter.multigrid, whose objects have solve, plaqs and close. That Lua file is installed in every build, including this one, but calling into it without the C side raises.

Grid

With HAS_GRID, a _grid table with init, close, init_solver, zmobius_solver and split_solver. A solver state has L5, nrhs, is_split and solve.