Began work on the simulators section

This commit is contained in:
Meeg Leeto 2023-07-18 14:03:44 +01:00
parent 9552809373
commit a92cc8d656
3 changed files with 154 additions and 37 deletions

View File

@ -763,12 +763,65 @@
journal = {Physical Review A}
}
@software{cirq2022,
author = {{Cirq Developers}},
title = {Cirq},
month = dec,
year = 2022,
note = {{See full list of authors on Github: https://github
.com/quantumlib/Cirq/graphs/contributors}},
publisher = {Zenodo},
version = {v1.1.0},
doi = {10.5281/zenodo.7465577},
url = {https://doi.org/10.5281/zenodo.7465577}
}
@manual{cirq2022simulator,
author = {{Cirq Developers}},
title = {cirq.Simulator},
year = {2023},
month = {06},
note = {\url{https://quantumai.google/reference/python/cirq/Simulator}}
}
@software{qsim2020,
author = {Quantum AI team and collaborators},
title = {qsim},
author = {{Quantum AI team} and collaborators},
title = {qsim, qsimh},
month = Sep,
year = 2020,
publisher = {Zenodo},
doi = {10.5281/zenodo.4023103},
url = {https://doi.org/10.5281/zenodo.4023103}
}
@article{numpy2020,
title = {Array programming with {NumPy}},
author = {Charles R. Harris and K. Jarrod Millman and St{\'{e}}fan J.
van der Walt and Ralf Gommers and Pauli Virtanen and David
Cournapeau and Eric Wieser and Julian Taylor and Sebastian
Berg and Nathaniel J. Smith and Robert Kern and Matti Picus
and Stephan Hoyer and Marten H. van Kerkwijk and Matthew
Brett and Allan Haldane and Jaime Fern{\'{a}}ndez del
R{\'{i}}o and Mark Wiebe and Pearu Peterson and Pierre
G{\'{e}}rard-Marchant and Kevin Sheppard and Tyler Reddy and
Warren Weckesser and Hameer Abbasi and Christoph Gohlke and
Travis E. Oliphant},
year = {2020},
month = sep,
journal = {Nature},
volume = {585},
number = {7825},
pages = {357--362},
doi = {10.1038/s41586-020-2649-2},
publisher = {Springer Science and Business Media {LLC}},
url = {https://doi.org/10.1038/s41586-020-2649-2}
}
@manual{microsoft2023,
author = {Microsoft},
title = {What are {Q\#} and the Quantum Development Kit?},
year = {2023},
url = {https://learn.microsoft.com/en-gb/azure/quantum/overview-what-is-qsharp-and-qdk},
urldate = {\today},
note = {\url{https://learn.microsoft.com/en-gb/azure/quantum/overview-what-is-qsharp-and-qdk}},
}

BIN
main.pdf

Binary file not shown.

134
main.tex
View File

@ -16,44 +16,55 @@
\usepackage{physics}
\usepackage{float}
\usepackage{qcircuit}
\usepackage{marginnote}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{definition}{Definition}
\ExplSyntaxOn
\clist_new:N \l_my_footlist
\cs_new:Nn \my_footnotelater:n {
\clist_gput_right:Nn \l_my_footlist {{#1}}
}
\cs_new:Nn \my_footnotenow: {
\clist_gpop:NN \l_my_footlist \l_tmpa_tl
\exp_args:Nv\footnote{l_tmpa_tl}
}
\NewDocumentCommand{\FootnoteLater}{m}{\my_footnotelater:n{#1}}
\NewDocumentCommand{\FootnoteNow}{}{\my_footnotenow:}
\ExplSyntaxOff
\clist_new:N \l_my_footlist
\cs_new:Nn \my_footnotelater:n {
\clist_gput_right:Nn \l_my_footlist {{#1}}
}
\cs_new:Nn \my_footnotenow: {
\clist_gpop:NN \l_my_footlist \l_tmpa_tl
\exp_args:Nv\footnote{l_tmpa_tl}
}
\NewDocumentCommand{\FootnoteLater}{m}{\my_footnotelater:n{#1}}
\NewDocumentCommand{\FootnoteNow}{}{\my_footnotenow:}
\ExplSyntaxOn
\cs_new:Nn \postulate:nn {
\emph{#2}
%\hyperlink{#1}{#2}
}
\NewDocumentCommand \Postulate { m }
\cs_new:Nn \postulate:nn {
\emph{#2}
%\hyperlink{#1}{#2}
}
\NewDocumentCommand \Postulate { m }
{
\str_case_e:nnF { \str_foldcase:n { #1 } }
{
\str_case_e:nnF { \str_foldcase:n { #1 } }
{
{ state\space space }{\postulate:nn{postulate:state-space}{#1}}
{ evolution }{\postulate:nn{postulate:evolution}{#1}}
{ measurement }{\postulate:nn{postulate:measurement}{#1}}
{ composite\space systems }{\postulate:nn{postulate:composite-systems}{#1}}
}{
\textbf{!!}#1\textbf{!!}
}
{ state\space space }{\postulate:nn{postulate:state-space}{#1}}
{ evolution }{\postulate:nn{postulate:evolution}{#1}}
{ measurement }{\postulate:nn{postulate:measurement}{#1}}
{ composite\space systems }{\postulate:nn{postulate:composite-systems}{#1}}
}{
\textbf{!!}#1\textbf{!!}
}
}
\cs_new:Nn \my_simulator_slug:Nn {
\tl_set:Nn #1 {#2}
\tl_set:Nx #1 {\text_lowercase:n {#2}}
\tl_remove_all:Nn #1 { () }
\tl_replace_all:Nnn #1 { ~_/ } { - }
\tl_put_left:Nn #1 {sec:simulator-}
}
\NewDocumentCommand{\Simulator}{m}{
\my_simulator_slug:Nn \l_tmpa_tl {#1}
\subsubsection{#1}
\exp_args:No \label \l_tmpa_tl
}
\ExplSyntaxOff
\def\Cpp{{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\tiny\bf ++}}}
\def\viz.{\textit{viz}.}
\NewDocumentCommand{\Naturals}{}{\mathbb{N}}
\let\NN\Naturals
@ -666,7 +677,7 @@ eliminated, by giving a superclass of Clifford circuits, ``$HT$ circuits'', that
is equivalent to classical computation and can be weakly simulated.
Finally, note also that certain classes of efficiently simulatable circuits not
discussed here, such as \emph{matchgate} circuits, may relate non-trivially
discussed here, such as \emph{matchgate circuits}, may relate non-trivially
with Clifford circuits \cite{Valiant2002,Jozsa2008,Brod2016}.
\subsection{Schr\"{o}dinger simulation}
@ -925,21 +936,74 @@ 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,
industry-recognized simulators, such as those that a researcher might use to
validate their algorithms in toy-settings using their laptop.
for a complete and even comparison. Thus, we focused on a subset of offline,
small-scale, industry-recognized simulators, such as those that a researcher
might use to validate their algorithms in toy-settings using their laptop.
\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''.}
$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.
considered simulators for which Qiskit or Cirq provided backend interface. For
providers of quantum hardware interfacing with Qiskit, we considered the
provider's simulation solution, if it existed. We then proceeded to traverse
the reference graph of the simulator's reference publications, gathering a
total of $20$ simulators. A graph outlining the citation chains followed is
given in figure \ref{fig:citation-graph}.
\begin{figure}[thb]
\includegraphics[page=2]{assets/reference_spider.pdf}
\caption{Graph illustrating the citation chains followed to enumerate the
simulators considered.}
\label{fig:citation-graph}
\end{figure}
\subsection{Simulators}
\Simulator{Cirq (internal/qsim/qsimh simulators)}
Cirq \cite{cirq2022} is Google's solution for quantum circuit related tasks,
from design to real-world execution. Besides third-party backends (see sections
\ref{sec:simulator-qflex},\ref{sec:simulator-quimb}), Cirq contains three
separate simulators: the built-in Python simulator \cite{cirq2022simulator},
qsim, and qsimh \cite{qsim2020}. The built-in Python simulator performs
\Schrodinger-based simulation (thus, maintains the state vector) using a Numpy
\cite{numpy2020} sparse-matrix representation, and is meant for testing small
circuits. qsim and qsimh, in contrast, are Google's optimized and
high-performance simulation solutions. Both are written in \Cpp, and are,
respectively, a \Schrodinger\ and a \Schrodinger-Feynman simulator (\viz.\
sections
\ref{sec:schrodinger-simulation},\ref{sec:schrodinger-feynman-simulation}).
qsim and qsimh employ gate fusion, vectorized instructions and multi-threading
for computational speed-up. qsimh supports trading computational time by
lower-fidelity simulation, as outlined in section \ref{sec:feynman-simulation}.
Both qsim and qsimh integrate with Cirq's Python interface.
\Simulator{Microsoft Quantum}
Microsoft's ``Quantum Development Kit'' is a tool-kit for quantum computation,
including quantum circuit simulation \cite{microsoft2023}. It is integrated with
\Simulator{Qiskit}
\Simulator{qFlex}
\Simulator{quimb}
\Simulator{Rigetti Forest}
\Simulator{NVIDIA cuStateVec}
\Simulator{NVIDIA cuTensorNet}
\Simulator{Amazon SV1}
\Simulator{Amazon TN1}
\Simulator{Amazon DM1}
\Simulator{MQT/DDSIM}
\Simulator{Intel Quantum Simulator}
\Simulator{Xanadu's Strawberry Fields}
\Simulator{Pennylane Lightning}
\Simulator{Qibo}
\Simulator{QCGPU}
\Simulator{Quantum++}
\appendix