Began work on the simulators section
This commit is contained in:
parent
9552809373
commit
a92cc8d656
|
@ -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}},
|
||||
}
|
134
main.tex
134
main.tex
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue