\( \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}} \)

Classical simulation of quantum circuits

Jingzhe Guo

1 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:

2 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:

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.”

3 Contacts

Jingzhe Guo (gjz20@mails.tsinghua.edu.cn)

4 References

  1. Simulating Quantum Computations on Classical Machines: A Survey. https://arxiv.org/abs/2311.16505
  2. Simulation of Quantum Computers: Review and Acceleration Opportunities. https://arxiv.org/abs/2410.12660v1
  3. A Herculean task: Classical simulation of quantum computers. https://arxiv.org/abs/2302.08880
  4. HyQuas: Hybrid Partitioner Based Quantum Circuit Simulation System on GPU. https://dl.acm.org/doi/10.1145/3447818.3460357
  5. Atlas: Hierarchical Partitioning for Quantum Circuit Simulation on GPUs (Extended Version). https://arxiv.org/abs/2408.09055v2
  6. QueenV2: Future of Quantum Circuit Simulation. https://arxiv.org/abs/2409.14697
  7. Simulating quantum circuits with tensor networks (Tutorial slides). https://www.icfo.eu/download-file/files/event_documents/30032023132546000000.pdf
  8. Hyper-optimized tensor network contraction. https://quantum-journal.org/papers/q-2021-03-15-410/
  9. Clifford-based Circuit Cutting for Quantum Simulation. https://arxiv.org/abs/2303.10788
  10. Qiskit Aer. https://github.com/Qiskit/qiskit-aer
  11. Leveraging Secondary Storage to Simulate Deep 54-qubit Sycamore Circuits. https://arxiv.org/abs/1910.09534
  12. Improved classical simulation of quantum circuits dominated by Clifford gates. https://arxiv.org/abs/1601.07601