diff --git a/citations.bib b/citations.bib index d7b9345..c72a92c 100644 --- a/citations.bib +++ b/citations.bib @@ -483,6 +483,21 @@ journal = {Physical Review Letters} } +@article{McCaskey2018, + doi = {10.1371/journal.pone.0206704}, + url = {https://doi.org/10.1371/journal.pone.0206704}, + year = {2018}, + month = dec, + publisher = {Public Library of Science ({PLoS})}, + volume = {13}, + number = {12}, + pages = {e0206704}, + author = {Alexander McCaskey and Eugene Dumitrescu and Mengsu Chen and Dmitry Lyakh and Travis Humble}, + editor = {Nicholas Chancellor}, + title = {Validating quantum-classical programming models with tensor network simulations}, + journal = {{PLOS} {ONE}} +} + @article{Valiant2002, doi = {10.1137/s0097539700377025}, url = {https://doi.org/10.1137/s0097539700377025}, @@ -634,4 +649,50 @@ archiveprefix = {arXiv}, primaryclass = {quant-ph}, eprint = {2306.14887} +} + +@article{Preskill2018, + doi = {10.22331/q-2018-08-06-79}, + url = {https://doi.org/10.22331/q-2018-08-06-79}, + year = {2018}, + month = aug, + publisher = {Verein zur Forderung des Open Access Publizierens in den Quantenwissenschaften}, + volume = {2}, + pages = {79}, + author = {John Preskill}, + title = {Quantum Computing in the {NISQ} era and beyond}, + journal = {Quantum} +} + +@book{Breuer2002, + title = {The Theory of Open Quantum Systems}, + author = {Breuer, H.P. and Petruccione, F.}, + isbn = {9780198520634}, + lccn = {2002075713}, + url = {https://books.google.pt/books?id=0Yx5VzaMYm8C}, + year = {2002}, + publisher = {Oxford University Press} +} + +@article{Bassi2008, + doi = {10.1103/physreva.77.032323}, + url = {https://doi.org/10.1103/physreva.77.032323}, + year = {2008}, + month = mar, + publisher = {American Physical Society ({APS})}, + volume = {77}, + number = {3}, + author = {Angelo Bassi and Dirk-Andr{\'{e}} Deckert}, + title = {Noise gates for decoherent quantum circuits}, + journal = {Physical Review A} +} + +@software{qsim2020, + author = {Quantum AI team and collaborators}, + title = {qsim}, + month = Sep, + year = 2020, + publisher = {Zenodo}, + doi = {10.5281/zenodo.4023103}, + url = {https://doi.org/10.5281/zenodo.4023103} } \ No newline at end of file diff --git a/main.pdf b/main.pdf index 200c8d1..02a0503 100644 Binary files a/main.pdf and b/main.pdf differ diff --git a/main.tex b/main.tex index 42aaed8..7484297 100644 --- a/main.tex +++ b/main.tex @@ -71,7 +71,7 @@ \begin{document} -\title{Survey on classical quantum computer simulators} +\title{Survey on quantum circuit simulators} \author{Miguel Mur\c{c}a} \affiliation{Instituto Superior T\'{e}cnico, University of Lisbon, Portugal} \date{\today} @@ -554,7 +554,7 @@ in the quantum circuit to be ran, or specifications on the desired output. In this section, we review some key theoretical results regarding classical simulation of quantum computations, as well as some general techniques. -\subsection{Strong simulation \texorpdfstring{\textit{vs.\!}}{vs.} weak simulation} +\subsection{Strong simulation \texorpdfstring{\textit{vs.}}{vs.}~weak simulation} As defined in section \ref{sec:quantum-computation-fundamentals}, the final output of a quantum computation results from a measurement. Due to the nature of @@ -693,10 +693,10 @@ Ref.~\cite{Haner2017}, this is used to ensure that compute resources are maximally utilized via parallelization. Following a different strategy, in Ref.~\cite{Haner2016}, advance knowledge of the action of common blocks of operations in quantum computing is used to speed up over the simulation of each -gate individually. Gate clustering, different encoding techniques and -cache-related considerations, as well as employment of compiler intrinsics, -also allow for speed improvements -\cite{Fatima2021,Haner2016,Haner2017,Markov2018}. +gate individually. Gate fusion, different encoding techniques and cache-related +considerations, as well as employment of compiler intrinsics, also allow for +speed improvements +\cite{Fatima2021,Smelyanskiy2016,Haner2016,Haner2017,Markov2018}. Otherwise, the problem may be regarded as a classical large-sparse-matrix and vector product, a well-researched problem (see, e.g., @@ -786,14 +786,14 @@ This method is well suited for simulating circuits with a grid-like connectivity graph between qubits, as is common in practical implementations \cite{Arute2019,Kim2023,Saffman2010}, and so is used in multiple works pushing the boundary of quantum advantage, allowing for simulation of circuits with -significantly more than $50$ qubits \cite{Chen2018,Li2018,Smelyanskiy2016,Haner2017}. +significantly more than $50$ qubits \cite{Chen2018,Li2018,Haner2017}. \subsection{Tensor network simulation} \label{sec:tensor-network-simulation} Closely related to the Feynman simulation technique, but generalizing the idea, tensor-network based simulation regards quantum circuit simulation as a form of -tensor contraction \cite{Vidal2003,Markov2008,Pednault2020,Villalonga2019,Guo2019}. +tensor contraction \cite{Vidal2003,Markov2008,McCaskey2018,Pednault2020,Villalonga2019,Guo2019}. \FootnoteLater{Terminology regarding tensors is not always consistent across works. For example, the terms \emph{way}, \emph{order}, \emph{degree}, or @@ -822,12 +822,10 @@ is an $(a+c-1,b+d-1)$-type tensor. Now, it is possible to represent a quantum state of $n$ qubits by an $n$-rank tensor, where each index has dimension $2$: % -\begin{equation} - \everymath={\displaystyle} - \begin{array}{r@{\hskip .5cm}c@{\hskip .5cm}l} - \psi^{i_1 i_2 \ldots i_n} & \leftrightarrow & \ket{\psi} = \sum_{i_1, \ldots, i_n = 0,1} \psi^{i_1 \ldots i_n} \ket{i_1}\cdots\ket{i_n} - \end{array} -\end{equation} +\begin{multline} + \psi^{i_1 i_2 \ldots i_n} \quad \leftrightarrow \quad \\ + \ket{\psi} = \sum_{i_1, \ldots, i_n = 0,1} \psi^{i_1 \ldots i_n} \ket{i_1}\cdots\ket{i_n} +\end{multline} It follows that likewise any quantum operation involving $k$ qubits is given by a $(k,k)$-type tensor, and the quantum state vector after the operation is given @@ -838,7 +836,7 @@ by a tensor contraction. E.g., \phi^{i'_a \ldots i'_k i_{k+1} \ldots i_n} = \sum_{\mathclap{i_a \ldots i_k = 0,1}} G^{i'_a \ldots i'_k}_{i_a \ldots i_k} \psi^{i_a \ldots i_k i_{k+1} \ldots i_n} \end{multline} % -where we have above, for simplicity of notation, the action of the gate $G$ to +where we have, for simplicity of notation, taken the action of the gate $G$ to be on the first $k$ qubits. Therefore, it is possible to represent a quantum circuit acting on an input @@ -860,11 +858,64 @@ Nonetheless, one may upper bound the time complexity of the contraction as $T^{\BigO(1)}\exp[\BigO(qD)]$, where $T$ is the total number of gates in the circuit, $q$ is the maximum number of adjacent qubits involved in a single operation, and $D$ is the depth of the circuit \cite{Markov2008}. Note how the -time complexity grows exponentially with the depth of the circuit; since current -real-world implementations are depth-limited by noise, and in conjunction with -other characteristics, like qubit connectivity, this may not be an impeditive -factor when attempting to simulate ``quantum supremacy'' experiments -\cite{Gray2021,Pan2022,Tindall2023}. +time complexity grows exponentially with the depth of the circuit; this +motivated the increase of depth in ``quantum supremacy'' experiments, though +other characteristics, like qubit connectivity or better contraction orderings, +may still allow for tensor-based simulation \cite{Gray2021,Pan2022,Tindall2023}. + +\subsection{Noise simulation} + +In the previous subsections, we have considered simulation of ``perfect'' +quantum circuits, i.e., circuits that do not simulate the presence of noise +(even though they may consider the presence of noise to speed-up the simulation, +such as in \cite{Markov2018}). However, the presence of noise is practically +unavoidable in current experimental settings \cite{Preskill2018}. Therefore, it +may be useful to simulate a noisy quantum circuit. + +\FootnoteLater{For the reader unfamiliar with quantum channels, they may regard + them as a generalization of measurements in the mixed state formulation.} + +Typically, the density matrix formalism (\viz.\ section +\ref{sec:density-matrix}) is used to describe the quantum state resulting from +a quantum circuit affected by noise, by modelling the effects of noise as +\emph{quantum channels}, i.e., completely positive, convex-linear, +non-trace-increasing maps on density matrices\FootnoteNow \cite{Nielsen2012}. +These channels, in turn, reflect physical equational models of noise +\cite{Breuer2002}. + +While, for example, tensor-based simulation (section +\ref{sec:tensor-network-simulation}) naturally extends to density matrix +simulation, it may seem that the overhead of maintaining a density matrix while +employing \Schrodinger\ or Feynman simulation would be impeditive memory-wise. +However, it turns out that the effect of the usual noise channels can be +rephrased as the statistical average of random, non-unitary gates in a quantum +circuit \cite{Bassi2008}. Therefore, with an overhead due to repeating the +simulation multiple times to collect statistics, it is possible to extend also +the pure-state based methods to simulate noise. + +\section{Simulation software} + +In this section we examine some of the publicly available software for +simulating quantum circuits. It is important to note that we do not claim to be +exhaustive in the number of simulators considered, nor on the benchmarking the +considered solutions. The large and growing number of quantum circuit +simulators available, and the different possible goals for such software (e.g., +small-scale \textit{vs.}~supremacy-scale simulation), would make it impossible +for a complete and even comparison. Thus, we focused on offline, small-scale +simulators, such as those that a researcher might use to validate their +algorithms in toy-settings, and that are recognized in the industry as common. + +\subsection{Methodology} + +\FootnoteLater{As of July $16$, $2023$, the Github repositories for the Cirq, + the Microsoft Quantum, and the Qiskit simulators have, respectively, + $3,\!823$, $3,\!737$, and $3,\!678$, ``stars''.} + +We began with the $3$ most popular (at the time of writing) quantum circuit +simulators under the Github ``quantum-computing'' tag\FootnoteNow. Then, we +considered every quantum circuit simulator for which Qiskit provided a backend +interface. For providers of quantum hardware interfacing with Qiskit, we +considered the provider's simulation solution, if it existed. \appendix