FermiQCD is a C++ library for Fast Development of Optimized Parallel Algorithms. It includes a Parallel Random Number Generator, Complex Linear Algebra Algorithms, Advanced Statistical Functions (such as jackknife and bootstrap), Parallel Inverters for Sparse Matrices and supports customizable Data-Parallel Structures. If you do not have a parallel computer, no problem, it will emulate it for you on your laptop.
FermiQCD includes, but it is not limited to, algorithms for Lattice Quantum Field Theory and Lattice Quantum Chromodynamics.
Notice that:
The fields U and V are
automatically distributed
over the parallel architecture,
so is the forallsites(x) loop.
U(x) is a 3x3 complex matrix
stored at lattice site x.
If x is a site, x+0, x-0, x+1, x-1
are the sites shifted to the
right, left, above, below x
respectively.
space.random(x).SU(3) generates a random SU(3) matrix using the random number generator localized at site x of the lattice space.
U.update() performs the required communications to sync the parallel processes.
U.save(name) saves the field in parallel.