QuEST is currently in prerelease and may be unstable.
Latest version: 0.7.0
This is the repository for the GPU version of the code. The CPU version is available here. The GPU version is behind the CPU version -- the full API is listed here and the subset of this implemented for the GPU is listed here.
Please report errors or feedback to anna.brown@oerc.ox.ac.uk
The Quantum Exact Simulation Toolkit is a high performance simulator of universal quantum circuits. QuEST is written in C, hybridises OpenMP and MPI, and can run on a GPU. Needing only compilation, QuEST is easy to run both on laptops and supercomputers, where it can take advantage of multicore and networked machines to quickly simulate circuits on many qubits.
QuEST has a simple interface, independent of its run environment (on CPUs, GPUs or over networks),
hadamard(qubits, 0);
controlledNot(qubits, 0, 1);
rotateY(qubits, 0, .1);
though is flexible
Vector v;
v.x = 1; v.y = 0; v.z = 0;
rotateAroundAxis(qubits, 0, 3.14/2, v);
and powerful
ComplexMatrix2 u;
u.r0c0 = (Complex) {.real=.5, .imag= .5};
u.r0c1 = (Complex) {.real=.5, .imag=-.5};
u.r1c0 = (Complex) {.real=.5, .imag=-.5};
u.r1c1 = (Complex) {.real=.5, .imag= .5};
unitary(qubits, 0, u);
int[] controls = {1, 2, 3, 4, 5};
multiControlledUnitary(qureg, controls, 5, 0, u);
QuEST is contained entirely in the .c
and .h
files in the QuEST/
folder. To use QuEST, copy these files to your computer and include QuEST.h
in your C code. We include make files for compiling QuEST, and submission scripts for using QuEST with SLURM and PBS. See here for an introduction. Clone or download this entire repository to include all examples as well as tests and documentation.
View the API for the GPU version here, and the full documentation at https://aniabrown.github.io/QuEST_GPU/
QuEST is released under a MIT Licence