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 is trivial to compile and run.
QuEST hybridises OpenMP and MPI with huge compiler support to run on all sorts of multicore, multi-CPU and distributed hardware, uses HIP to run on AMD GPUs, integrates cuQuantum and Thrust for cutting-edge performance on modern NVIDIA GPUs, and has a custom kernel backend to run on older CUDA-compatible GPUs.
And it hides these deployment modes behind a single, seamless interface.
QuEST is developed by the QTechTheory group at the University of Oxford, and these authors. To learn more:
For developers: QuEST’s doc is automatically regenerated when the master branch is updated via Github Actions. To locally regenerate the doc, run doxygen doxyconfig/config in the root directory, which generates html documentation in Doxygen_doc/html.
🚀 Getting started
To rocket right in, download QuEST with git at the terminal
git clone https://github.com/quest-kit/QuEST.git
cd QuEST
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"
nmake
If using MSVC and NMake in this way fails, users can forego GPU acceleration, download
MinGW-w64, and compile via
cmake .. -G "MinGW Makefiles"
make
Acknowledgements
We sincerely thank the following external contributors to QuEST.
Jakub Adamski for optimising distributed communication of max-size messages.
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
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.
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 is trivial to compile and run. QuEST hybridises OpenMP and MPI with huge compiler support to run on all sorts of multicore, multi-CPU and distributed hardware, uses HIP to run on AMD GPUs, integrates cuQuantum and Thrust for cutting-edge performance on modern NVIDIA GPUs, and has a custom kernel backend to run on older CUDA-compatible GPUs. And it hides these deployment modes behind a single, seamless interface.
QuEST is developed by the QTechTheory group at the University of Oxford, and these authors. To learn more:
🎉 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
✅ Features
QuEST supports:
qreal
numerical type which can use single, double or quad precisionDocumentation
🚀 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
Acknowledgements
We sincerely thank the following external contributors to QuEST.
mixDamping
on CPU.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 PlumRelated projects
a Mathematica package enabling symbolic circuit manipulation, analytic simulation, visualisation and high performance simulation with remote accelerated hardware.
a python interface to QuEST, based on Cython, developed within the QTechTheory group. Please note, pyQuEST is currently in the alpha stage.
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.