Skip to content

Simulators

QuEST

Maintained by aniabrown

Because this file doubles as the doxygen mainpage, it must use absolute paths.

C++MITArchive
QuEST illustration

Resource snapshot

Category

Simulators

Stars

473

Last pushed

May 27, 2026Updated 3mo ago

Open issues

48

Quickstart

Get running in a few lines.

Quickstart
git clone https://github.com/quest-kit/QuEST.git
cd QuEST

What it is

QuEST is maintained by aniabrown and sits in the Simulators lane of the open-source quantum map.

Because this file doubles as the doxygen mainpage, it must use absolute paths.

Last verified by Qtangl generator on May 27, 2026

Who it's for

Developers and researchers who need to test ideas locally before running on hardware or who want to compare simulation strategies.

What you can build or learn

  • Benchmark how different simulation methods trade accuracy for runtime.
  • Inspect circuit behavior, noise assumptions, or state evolution offline.
  • Choose the right simulator for a debugging, teaching, or research workflow.

License

MIT

SPDX identifier detected from the repository metadata or license files.

Repository README

Preview from the project README.

Rendered as Markdown inside a scrollable preview. Long READMEs stay contained; expand or open on GitHub for the full document.

~1,175 words · about 5 min readOpen on GitHub

The Quantum Exact Simulation Toolkit (QuEST) is a high-performance simulator of quantum statevectors and density matrices. It hybridises multithreading, GPU acceleration and distribution to run lightning fast on laptops, desktops and supercomputers, parallelising over multiple cores, CPUs and GPUs. Behind the scenes, QuEST leverages OpenMP, MPI, CUDA, HIP, Thrust, cuQuantum and GPUDirect for cutting-edge performance on modern multi-GPU clusters, and compatibility with older NVIDIA and AMD GPUs. These deployments can be combined in any combination, or automatically decided at runtime, yet are abstracted behind a single, seamless interface, accessible by both C and C++ and all the major compilers (detailed here).

As of v4.2, QuEST development is led by the EPCC team at the University of Edinburgh, with support and former development by the QTechTheory group at the University of Oxford. QuEST has also received contributions and support from the below organisations. In particular, QuEST v4.0 was made possible through the support of the UK National Quantum Computing centre (NQCC200921) and the UKRI SEEQA project.

           

To learn more:


🎉  Introduction

QuEST has a simple interface which is agnostic to whether it's running on CPUs, GPUs or a networked supercomputer.

Qureg qureg = createQureg(30);
initRandomPureState(qureg);

applyHadamard(qureg, 0);
applyControlledRotateX(qureg, 0, 1, angle);
applyFullQuantumFourierTransform(qureg);

reportQureg(qureg);

qreal prob  = calcProbOfQubitOutcome(qureg, 0, outcome);
qreal expec = calcExpecPauliStr(qureg, getPauliStr("XYZ"));

Yet, it is flexible

mixDepolarising(qureg, targ, prob);
mixKrausMap(qureg, targs, ntargs, krausmap);

applyQubitMeasurement(qureg, targ);
applyMultiQubitProjector(qureg, targs, outcomes, ntargs);

applyControlledPauliGadget(qureg, ctrl, paulistr, angle);
applyMultiStateControlledSwap(qureg, ctrls, states, nctrls, targ1, targ2);

leftapplyCompMatr1(qureg, targ, getInlineCompMatr1( {{1,2i},{3i,4}} ));
leftapplyDiagMatrPower(qureg, targs, ntargs, diagmatr, exponent);

and extremely powerful

setFullStateDiagMatrFromMultiVarFunc(fullmatr, myfunc, ntargsPerVar, nvars);
applyFullStateDiagMatrPower(qureg, fullmatr, exponent);

CompMatr matr = createCompMatr(10);
setCompMatr(matr, ...);
applyCompMatr(qureg, targs, 10, matr);

PauliStrSum observ = createInlinePauliStrSum(R"(
    0.123 XXIXX
    1.23i XYZXZ
    -1-6i IIZII
)");
applyTrotterizedPauliStrSumGadget(qureg, observ, time, order, nreps);

Qureg reduce = calcPartialTrace(qureg, targs, ntargs);
qreal expec1 = calcExpecPauliStrSum(reduce, observ);
qreal expec2 = calcExpecFullStateDiagMatr(qureg, fullmatr);

✅  Features

QuEST supports:

  • ☑️   density matrices for precise simulation of noisy quantum computers
  • ☑️   general unitaries with any number of control, control-states, and target qubits
  • ☑️   general decoherence channels of any dimension
  • ☑️   general observables in the Pauli or diagonal-Z bases
  • ☑️   many many operators, including Pauli gadgets, trotterised time evolutions, and projectors
  • ☑️   many tools to analyse quantum states, such as calculations of probability, fidelity, expectation value, distances and partial traces
  • ☑️   variable precision through qreal and qcomp numerical types which can use single, double or quad precision
  • ☑️   direct access to amplitudes for rapid custom modification of the quantum state
  • ☑️   native compilation on MacOS, Linux and Windows, through Clang, GNU, Intel, and MSVC compilers
  • ☑️   hybridisation of multithreading, GPU-acceleration, distribution and GPU-distribution
  • ☑️   optimisation using NVLink'd GPUs, cuQuantum, and CUDA-aware MPI
  • ☑️   automatic deployment of a Qureg to the optimal hardware at runtime
  • ☑️   hardware probing to determine how many qubits can be simulated at runtime
  • ☑️   bespoke algorithms to optimally simulate a wide variety of esoteric operations

📖  Documentation

[!IMPORTANT] QuEST v4's documentation is still under construction!

Visit the docs for guides and tutorials, or the API which is divided into:


🚀  Getting started

To rocket right in, download QuEST with git at the terminal

git clone https://github.com/quest-kit/QuEST.git
cd QuEST

We recommend working in a build directory:

mkdir build
cd build

Compile the minimum example using cmake:

cmake .. 
make

then run it with

./min_example

See the docs for enabling acceleration and running the unit tests.


❤  Acknowledgements

In addition to QuEST's authors, we sincerely thank the following external contributors to QuEST.


📰  Related projects

Read on GitHub

Activity

Latest release

—

Watchers

18

Python support

—

Learn digest

Get monthly updates when library entries change.

Monthly digest: new library entries, updated flagships, and one editorial pick.

Related resources

Keep exploring nearby tools.

cda-tum

mqt-ddsim

MQT DDSIM - A quantum circuit simulator based on decision diagrams written in C++

C++MIT

160 stars · Updated 3mo ago

qosf

os_quantum_software

Curated list of open-source quantum software projects.

CC0-1.0

2,105 stars · Updated 4mo ago

BBN-Q

PySimulator

Python with C++ Backend Simulator for Superconducting Circuits QIP

PythonApache-2.0

8 stars · Updated 12y ago

QISKit

qiskit-tutorial

A collection of Jupyter notebooks showing how to use the Qiskit SDK

Jupyter NotebookApache-2.0Archive

2,522 stars · Updated 3y ago

0tt3r

QuaC

Time Dependent Open Quantum Systems Solver written by Matthew Otten (mjotten@wisc.edu)

CMIT

30 stars · Updated 2y ago

adamisntdead

QuSimPy

A Multi-Qubit Ideal Quantum Computer Simulator

PythonAGPL-3.0

724 stars · Updated 5y ago