\(
\newcommand{\ket}[1]{\vert#1\rangle}
\newcommand{\bra}[1]{\langle#1\vert}
\newcommand{\bigket}[1]{\bigl\vert#1\bigr\rangle}
\newcommand{\bigbra}[1]{\bigl\langle#1\bigr\vert}
\newcommand{\class}[1]{\mathrm{#1}}
\newcommand{\problem}[1]{\mathrm{#1}}
\renewcommand{\natural}{\mathbb{N}}
\newcommand{\real}{\mathbb{R}}
\newcommand{\complex}{\mathbb{C}}
\newcommand{\ip}[2]{\left\langle#1, #2 \right\rangle}
\newcommand{\Tr}{\mathop{\mathrm{Tr}}\nolimits}
\newcommand{\tr}{\mathop{\mathrm{tr}}\nolimits}
\newcommand{\abs}[1]{\left\lvert#1 \right\rvert}
\newcommand{\norm}[1]{\left\lVert#1 \right\rVert}
\newcommand{\floor}[1]{\left\lfloor#1 \right\rfloor}
\newcommand{\X}{\mathcal{X}}
\newcommand{\Y}{\mathcal{Y}}
\newcommand{\A}{\mathcal{A}}
\newcommand{\B}{\mathcal{B}}
\newcommand{\E}{\mathop{\mathbb{E}}}
\newcommand{\Var}{\mathop{\mathrm{Var}}}
\newcommand{\dif}{\mathrm{d}}
\newcommand{\eps}{\epsilon}
\newcommand{\sign}{\mathrm{sign}}
\newcommand{\poly}{\mathrm{poly}}
\newcommand{\polylog}{\mathrm{polylog}}
\newcommand{\negl}{\mathrm{negl}}
\newcommand{\church}[1]{\overline{#1}}
\newcommand{\defeq}{\stackrel{\text{def}}{=}}
\newcommand{\pair}[2]{\langle#1, #2\rangle}
\newcommand{\tuple}[1]{\langle#1\rangle}
\newcommand{\red}{\rightarrow}
\newcommand{\reds}{\twoheadrightarrow}
\newcommand{\betared}{\rightarrow_{\beta}}
\newcommand{\betareds}{\twoheadrightarrow_{\beta}}
\newcommand{\betaeq}{=_{\beta}}
\newcommand{\betaetared}{\rightarrow_{\beta\eta}}
\newcommand{\betaetareds}{\twoheadrightarrow_{\beta\eta}}
\newcommand{\parared}{\rightarrow_{\|}}
\newcommand{\parareds}{\twoheadrightarrow_{\|}}
\newcommand{\desc}[1]{\langle#1 \rangle}
\newcommand{\adv}{\mathcal{A}}
\newcommand{\dis}{\mathcal{D}}
\newcommand{\labelsty}[1]{\mathrm{#1}}
\newcommand{\Enc}{\labelsty{Enc}}
\newcommand{\Dec}{\labelsty{Dec}}
\newcommand{\plain}{\labelsty{p}}
\newcommand{\cipher}{\labelsty{c}}
\newcommand{\PRG}{\labelsty{PRG}}
\newcommand{\Commit}{\labelsty{Com}}
\newcommand{\oracle}{\mathcal{O}}
\newcommand{\Sim}{\labelsty{Sim}}
\newcommand{\comp}{\labelsty{c}}
\newcommand{\view}{\labelsty{view}}
\newcommand\TIME{\class{TIME}}
\newcommand\SPACE{\class{SPACE}}
\newcommand\SIZE{\class{SIZE}}
\newcommand\NTIME{\class{NTIME}}
\newcommand\NSPACE{\class{NSPACE}}
\newcommand\BQP{\class{BQP}}
\newcommand\BPP{\class{BPP}}
\newcommand\QMA{\class{QMA}}
\renewcommand\P{\class{P}}
\newcommand\Ppoly{\class{P{/}poly}}
\newcommand\NP{\class{NP}}
\newcommand\NPC{\class{NP}\text{-complete}}
\newcommand\coNP{\class{coNP}}
\newcommand\MA{\class{MA}}
\newcommand\AM{\class{AM}}
\newcommand\QCMA{\class{QCMA}}
\newcommand\EXP{\class{EXP}}
\newcommand\NEXP{\class{NEXP}}
\newcommand\PP{\class{PP}}
\newcommand\GapP{\class{GapP}}
\newcommand\IP{\class{IP}}
\newcommand\QIP{\class{QIP}}
\newcommand\PSPACE{\class{PSPACE}}
\newcommand\NPSPACE{\class{NPSPACE}}
\newcommand\MIP{\class{MIP}}
\newcommand\RE{\class{RE}}
\newcommand\QMAM{\class{QMAM}}
\newcommand\PH{\class{PH}}
\renewcommand\L{\class{L}}
\newcommand\NL{\class{NL}}
\newcommand\coNL{\class{coNL}}
\newcommand\NLC{\class{NL}\text{-complete}}
\newcommand\PPAD{\class{PPAD}}
\newcommand\SharpP{\#\class{P}}
\newcommand\HVPZK{\class{HVPZK}}
\newcommand\HVSZK{\class{HVSZK}}
\newcommand\PZK{\class{PZK}}
\newcommand\SZK{\class{SZK}}
\newcommand\CZK{\class{CZK}}
\newcommand\val{\mathrm{val}}
\newcommand\vale{\mathrm{val}^*}
\newcommand\perm{\mathop{\mathrm{perm}}\nolimits}
\newcommand\pathfunc{\mathrm{path}}
\newcommand\SELF{\problem{SELF}}
\newcommand\HALT{\problem{HALT}}
\newcommand\MINTM{\problem{MIN}_\text{TM}}
\newcommand\ACCTM{\problem{ACC}_\text{TM}}
\newcommand\TQBF{\problem{TQBF}}
\newcommand\PAL{\problem{PAL}}
\newcommand\PATH{\problem{PATH}}
\newcommand\LONGPATH{\problem{LONGEST\text{-}PATH}}
\newcommand\SHORTPATH{\problem{SHORTEST\text{-}PATH}}
\newcommand\HAMPATH{\problem{HAM\text{-}PATH}}
\newcommand\HAMCYCLE{\problem{HAM\text{-}CYCLE}}
\newcommand\INDSET{\problem{IND\text{-}SET}}
\newcommand\MINCUT{\problem{MIN\text{-}CUT}}
\newcommand\MAXFLOW{\problem{MAX\text{-}FLOW}}
\newcommand\MAXCUT{\problem{MAX\text{-}CUT}}
\newcommand\MAXCUTAPP{\problem{MAX\text{-}CUT\text{-}APPROX}}
\newcommand\SAT{\problem{SAT}}
\newcommand\PERM{\problem{PERMANENT}}
\newcommand\THREESAT{3\text{-}\problem{SAT}}
\newcommand\TWOSAT{2\text{-}\problem{SAT}}
\newcommand\TWOUNSAT{2\text{-}\problem{UNSAT}}
\newcommand\NAESAT{\problem{NAESAT}}
\newcommand\REACHABILITY{\problem{REACHABILITY}}
\newcommand\THREECOL{3\text{-}\problem{COLORING}}
\newcommand\CLIQUE{\problem{CLIQUE}}
\newcommand\COL{\problem{COLORING}}
\newcommand\COMPOSITE{\problem{COMPOSITE}}
\newcommand\PRIME{\problem{PRIME}}
\newcommand\TSP{\problem{TSP}}
\newcommand\VC{\problem{VERTEX\text{-}COVER}}
\newcommand\FACTOR{\problem{FACTOR}}
\newcommand\GI{\problem{GRAPH\text{-}ISO}}
\newcommand\GNI{\problem{GRAPH\text{-}NONISO}}
\newcommand\SHORTPROOF{\problem{SHORT\text{-}PROOF}}
\newcommand\UHALT{\problem{UNARY\text{-}HALT}}
\newcommand\GG{\problem{GENERAL\text{-}GEOGRAPHY}}
\newcommand\FG{\problem{FORMULA\text{-}GAME}}
\)
Background
In this project, you are required to optimize the simulation of
quantum circuits on classical computers.
Quantum computing is believed to be more powerful than classical
computing, as certain computational problems that are intractable for
classical systems can be solved efficiently by quantum computers. This
advantage stems from quantum mechanics’ ability to represent and
manipulate exponentially large state spaces—requiring \(2^n\) complex amplitudes for an \(n\)-qubit system. Consequently, classical
computers will ultimately be unable to simulate large-scale,
general-purpose quantum devices due to this exponential resource
requirement.
Yet, building efficient classical simulators for small-scale quantum
circuits is still an important task in the development of quantum
computing:
- Quantum simulators draw an upper bound on the advantage of quantum
computing over classical computing. For example, several months after
Google’s quantum supremacy on the Sycamore chip, IBM proposes a
simulation scheme [11] that can simulate Google’s sampling task in ~2.5
days instead of the original ~10000 years.
- Quantum simulators allow us to simulate small-scale quantum
algorithms on a classical computer, especially when there are still no
perfect or fault-tolerant quantum computers. It is essential since
quantum algorithms are less intuitive, harder to understand, and
therefore more bug-prone compared to classical algorithms.
- Quantum simulators help with understanding realistic hardware: by
building an error model and simulating it on a classical computer, we
may know how probabilistic errors interact with computation, how to
design better error-correction schemes, etc.
- Quantum simulators allow beginners to have hands-on experience while
learning: You learn quantum algorithms by writing quantum circuit into
code, running it and seeing results.
Problems
There is a rich literature on this topic and you may survey the
related research as a first step. Some survey of classical quantum
simulators can be found at [1, 2, 3].
As a research-level problem, you may try to propose one new
improvement for efficient classical simulation of quantum
circuits on a classical computer. You are free to choose a sub-topic,
including but not limited to:
Exploiting locality in simulation. Simply simulating all gates
one by one on a large state vector would suffer from low cache
utilization. For example, several works [4, 5, 6] focus on exploiting a
technique called gate fusion by aggregating several
gates into one ``gate block’’ to exploit cache locality.
Hint: If you decide to show the advantage of your statevector
simulator by experiments, you may want to look at
qiskit-aer
[10], which implemented the most basic
accelerations (e.g., SIMD acceleration, multi-threading, optimized
diagonal-gate kernel, simple gate-fusion) on both CPU and GPU, but no
extra complicated optimizations.
Accelerating tensor network contraction. A quantum circuit is
inherently a tensor network; the left-to-right order of simulation of a
quantum circuit is just one of the many orders to perform tensor
contraction. Finding a proper tensor contraction order
would significantly reduce the time and space consumption of the entire
tensor contraction (therefore simulation) procedure. You may start from
[7, 8].
Efficient simulation of Clifford fragments: Gottesman-Knill
theorem tells us a Clifford circuit can be simulated efficiently in
polynomial time, but even if there is only one non-Clifford gate, the
theorem fails. Is there an approach (like in [9]) that can efficiently
simulate Clifford fragments in a circuit? For example,
if we have decomposed a quantum circuit into the Clifford+\(T\) gate set, we may want the simulation
cost to grow only exponentially in the number of \(T\) gates in the circuit[12].
Nonetheless, you are free to choose any sub-topic other than the
above, as long as it is related to “speeding up classical simulations of
a quantum subroutine.”
Jingzhe Guo (gjz20@mails.tsinghua.edu.cn)
References
- Simulating Quantum Computations on Classical Machines: A Survey. https://arxiv.org/abs/2311.16505
- Simulation of Quantum Computers: Review and Acceleration
Opportunities. https://arxiv.org/abs/2410.12660v1
- A Herculean task: Classical simulation of quantum computers. https://arxiv.org/abs/2302.08880
- HyQuas: Hybrid Partitioner Based Quantum Circuit Simulation System
on GPU. https://dl.acm.org/doi/10.1145/3447818.3460357
- Atlas: Hierarchical Partitioning for Quantum Circuit Simulation on
GPUs (Extended Version). https://arxiv.org/abs/2408.09055v2
- QueenV2: Future of Quantum Circuit Simulation. https://arxiv.org/abs/2409.14697
- Simulating quantum circuits with tensor networks (Tutorial slides).
https://www.icfo.eu/download-file/files/event_documents/30032023132546000000.pdf
- Hyper-optimized tensor network contraction. https://quantum-journal.org/papers/q-2021-03-15-410/
- Clifford-based Circuit Cutting for Quantum Simulation. https://arxiv.org/abs/2303.10788
- Qiskit Aer. https://github.com/Qiskit/qiskit-aer
- Leveraging Secondary Storage to Simulate Deep 54-qubit Sycamore
Circuits. https://arxiv.org/abs/1910.09534
- Improved classical simulation of quantum circuits dominated by
Clifford gates. https://arxiv.org/abs/1601.07601