The Quantum Exact Simulation Toolkit is a high performance simulator of quantum circuits, state-vectors and density matrices. QuEST uses multithreading, GPU acceleration and distribution to run lightning first on laptops, desktops and networked supercomputers. QuEST just works; it is stand-alone, requires no installation, and trivial to compile and getting running.
QuEST is developed by the QTechTheory group at the University of Oxford, and these authors. To learn more:
- see the tutorial
- view the documentation
- visit our website
- see some examples
- read our whitepaper, which featured in Scientific Report's Top 100 in Physics :trophy:
:tada: Introduction
QuEST has a simple interface, which is agnostic to its runtime environment, between CPUs, GPUs and over networks.
Yet, it is flexible
and extremely powerful
:white_check_mark: Features
QuEST supports:
- :ballot_box_with_check: density matrices for precise simulation of noisy quantum computers
- :ballot_box_with_check: general unitaries with any number of control and target qubits
- :ballot_box_with_check: general decoherence channels of any dimension
- :ballot_box_with_check: general Hermitian operators in the Pauli basis
- :ballot_box_with_check: many many operators, including even Pauli gadgets, analytic phase functions and Trotter circuits
- :ballot_box_with_check: many tools to analyse quantum states, such as calculations of probability, fidelity, and expected value
- :ballot_box_with_check: variable precision through a
qreal
numerical type which can use single, double or quad precision
- :ballot_box_with_check: QASM output to verify simulated circuits
- :ballot_box_with_check: direct access to amplitudes for rapid custom modification of the quantum state
- :ballot_box_with_check: native compilation on MacOS, Linux and Windows, through Clang, GNU, Intel, and MSVC compilers
:book: Documentation
- The tutorial includes instructions for
- compiling QuEST
- running QuEST locally and on supercomputers
- testing QuEST using the comprehensive unit tests
- The documentation is divided into the following modules (collated here)
- Additional utilities for debugging and testing are documented below
For developers: To regenerate the doc after making changes to the code, run
doxygen doxyconfig/config
in the root directory. This will generate documentation inDoxygen_doc/html
, the contents of which should be copied intodocs/
:rocket: Getting started
To rocket right in, download QuEST with git at the terminal
Compile the tutorial example (source) using cmake and make
then run it with
Windows users should install Build Tools for Visual Studio, and CMake, and run the above commmands in the Developer Command Prompt for VS, though using build commands
cmake .. -G "NMake Makefiles"nmakeIf using MSVC and NMake in this way fails, users can forego GPU acceleration, download MinGW-w64, and compile via
cmake .. -G "MinGW Makefiles"make
:heart: Acknowledgements
We sincerely thank the following external contributors to QuEST.
- HQS Quantum simulations for contributing
mixDamping
on CPU. - Kshitij Chhabra for patching some validation bugs.
- Drew Silcock for patching the multithreaded build on MacOS.
- Zach van Rijn for patching the multithreading code for GCC-9 OpenMP-5 compatibility.
- SchineCompton for patching the GPU CMake release build.
- Christopher J. Anders for patching the multithreading (when default off) and GPU builds (revising min cmake).
- Gleb Struchalin for patching the cmake standalone build
- Milos Prokop for serial prototyping of
initDiagonalOpFromPauliHamil
QuEST uses the mt19937ar Mersenne Twister algorithm for random number generation, under the BSD licence. QuEST optionally (by additionally importing QuEST_complex.h
) integrates the language agnostic complex type by Randy Meyers and Dr. Thomas Plum
:newspaper: Related projects
- QuESTlink
a Mathematica package enabling symbolic circuit manipulation, analytic simulation, visualisation and high performance simulation with remote accelerated hardware. - pyQuEST
a python interface to QuEST, based on Cython, developed within the QTechTheory group. Please note, pyQuEST is currently in the alpha stage. - PyQuEST-cffi
a python interface to QuEST based on cffi developed by HQS Quantum Simulations. Please note, PyQuEST-cffi is currently in the alpha stage and not an official QuEST project.