Began work on the simulators section
This commit is contained in:
parent
9552809373
commit
3cd79dcc0b
Binary file not shown.
|
@ -763,12 +763,65 @@
|
||||||
journal = {Physical Review A}
|
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,
|
@software{qsim2020,
|
||||||
author = {Quantum AI team and collaborators},
|
author = {{Quantum AI team} and collaborators},
|
||||||
title = {qsim},
|
title = {qsim, qsimh},
|
||||||
month = Sep,
|
month = Sep,
|
||||||
year = 2020,
|
year = 2020,
|
||||||
publisher = {Zenodo},
|
publisher = {Zenodo},
|
||||||
doi = {10.5281/zenodo.4023103},
|
doi = {10.5281/zenodo.4023103},
|
||||||
url = {https://doi.org/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{physics}
|
||||||
\usepackage{float}
|
\usepackage{float}
|
||||||
\usepackage{qcircuit}
|
\usepackage{qcircuit}
|
||||||
\usepackage{marginnote}
|
|
||||||
|
|
||||||
\newtheorem{theorem}{Theorem}
|
\newtheorem{theorem}{Theorem}
|
||||||
\newtheorem{lemma}{Lemma}
|
\newtheorem{lemma}{Lemma}
|
||||||
\newtheorem{definition}{Definition}
|
\newtheorem{definition}{Definition}
|
||||||
|
|
||||||
\ExplSyntaxOn
|
\ExplSyntaxOn
|
||||||
\clist_new:N \l_my_footlist
|
\clist_new:N \l_my_footlist
|
||||||
\cs_new:Nn \my_footnotelater:n {
|
\cs_new:Nn \my_footnotelater:n {
|
||||||
\clist_gput_right:Nn \l_my_footlist {{#1}}
|
\clist_gput_right:Nn \l_my_footlist {{#1}}
|
||||||
}
|
}
|
||||||
\cs_new:Nn \my_footnotenow: {
|
\cs_new:Nn \my_footnotenow: {
|
||||||
\clist_gpop:NN \l_my_footlist \l_tmpa_tl
|
\clist_gpop:NN \l_my_footlist \l_tmpa_tl
|
||||||
\exp_args:Nv\footnote{l_tmpa_tl}
|
\exp_args:Nv\footnote{l_tmpa_tl}
|
||||||
}
|
}
|
||||||
\NewDocumentCommand{\FootnoteLater}{m}{\my_footnotelater:n{#1}}
|
\NewDocumentCommand{\FootnoteLater}{m}{\my_footnotelater:n{#1}}
|
||||||
\NewDocumentCommand{\FootnoteNow}{}{\my_footnotenow:}
|
\NewDocumentCommand{\FootnoteNow}{}{\my_footnotenow:}
|
||||||
\ExplSyntaxOff
|
|
||||||
|
|
||||||
\ExplSyntaxOn
|
\cs_new:Nn \postulate:nn {
|
||||||
\cs_new:Nn \postulate:nn {
|
\emph{#2}
|
||||||
\emph{#2}
|
%\hyperlink{#1}{#2}
|
||||||
%\hyperlink{#1}{#2}
|
}
|
||||||
}
|
\NewDocumentCommand \Postulate { m }
|
||||||
\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}}
|
||||||
{ state\space space }{\postulate:nn{postulate:state-space}{#1}}
|
{ measurement }{\postulate:nn{postulate:measurement}{#1}}
|
||||||
{ evolution }{\postulate:nn{postulate:evolution}{#1}}
|
{ composite\space systems }{\postulate:nn{postulate:composite-systems}{#1}}
|
||||||
{ measurement }{\postulate:nn{postulate:measurement}{#1}}
|
}{
|
||||||
{ composite\space systems }{\postulate:nn{postulate:composite-systems}{#1}}
|
\textbf{!!}#1\textbf{!!}
|
||||||
}{
|
|
||||||
\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
|
\ExplSyntaxOff
|
||||||
|
|
||||||
|
\def\Cpp{{C\nolinebreak[4]\hspace{-.05em}\raisebox{.4ex}{\tiny\bf ++}}}
|
||||||
\def\viz.{\textit{viz}.}
|
\def\viz.{\textit{viz}.}
|
||||||
\NewDocumentCommand{\Naturals}{}{\mathbb{N}}
|
\NewDocumentCommand{\Naturals}{}{\mathbb{N}}
|
||||||
\let\NN\Naturals
|
\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.
|
is equivalent to classical computation and can be weakly simulated.
|
||||||
|
|
||||||
Finally, note also that certain classes of efficiently simulatable circuits not
|
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}.
|
with Clifford circuits \cite{Valiant2002,Jozsa2008,Brod2016}.
|
||||||
|
|
||||||
\subsection{Schr\"{o}dinger simulation}
|
\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
|
considered solutions. The large and growing number of quantum circuit
|
||||||
simulators available, and the different possible goals for such software (e.g.,
|
simulators available, and the different possible goals for such software (e.g.,
|
||||||
small-scale \textit{vs.}~supremacy-scale simulation), would make it impossible
|
small-scale \textit{vs.}~supremacy-scale simulation), would make it impossible
|
||||||
for a complete and even comparison. Thus, we focused on offline, small-scale,
|
for a complete and even comparison. Thus, we focused on a subset of offline,
|
||||||
industry-recognized simulators, such as those that a researcher might use to
|
small-scale, industry-recognized simulators, such as those that a researcher
|
||||||
validate their algorithms in toy-settings using their laptop.
|
might use to validate their algorithms in toy-settings using their laptop.
|
||||||
|
|
||||||
\subsection{Methodology}
|
\subsection{Methodology}
|
||||||
|
|
||||||
\FootnoteLater{As of July $16$, $2023$, the Github repositories for the Cirq,
|
\FootnoteLater{As of July $16$, $2023$, the Github repositories for the Cirq,
|
||||||
the Microsoft Quantum, and the Qiskit simulators have, respectively,
|
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
|
We began with the $3$ most popular (at the time of writing) quantum circuit
|
||||||
simulators under the Github ``quantum-computing'' tag\FootnoteNow. Then, we
|
simulators under the Github ``quantum-computing'' tag\FootnoteNow. Then, we
|
||||||
considered every quantum circuit simulator for which Qiskit provided a backend
|
considered simulators for which Qiskit or Cirq provided backend interface. For
|
||||||
interface. For providers of quantum hardware interfacing with Qiskit, we
|
providers of quantum hardware interfacing with Qiskit, we considered the
|
||||||
considered the provider's simulation solution, if it existed.
|
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
|
\appendix
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue