The objective of pyQCD is to provide a library to facilitate lattice QCD simulations using Python. Most current lattice QCD software is highly nested and complex, making an understanding of the codebase difficult. Furthermore, the data outputted by simulations must be converted into a suitable format before it can be analysed. pyQCD gets around this problem by performing the simulation in Python itself, so the results can easily be converted into numpy arrays or similar before being analysed. In addition, the simulation is object-orientated, so performing operations on the lattice is intuitive and straightforward.
Lattice QCD simulations are computationally intensive, so much of the simulation code for pyQCD is written in C++ and wrapped using the boost::python library. Furthermore, many routines are multithreaded using OpenMP. Finally, pyQCD takes advantage of any nVidia GPUs on the host computer when computing propagators, which further reduces the time taken to perform simulations.
Unfortunately, since pyQCD does not use MPI at present, lattice sizes are limited by the amount of memory and the number of cores available on the host machine. Furthermore, if a GPU is being used during propagator computation, the amount of GPU memory can severely constrain the maximum permissible lattice size used in the simulation. As a result of all this, pyQCD is currently best used for coarse lattice simulations with tadpole-improved actions. Extending the computational capabilities of pyQCD is something we would like to achieve in the future, and we welcome those interested in helping achieve this objective to get in touch.
Physical Systems and Engineering simulation: QCD