-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path01_getting_started.html
268 lines (236 loc) · 17.4 KB
/
01_getting_started.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Getting started — myQLM documentation documentation</title>
<link rel="stylesheet" type="text/css" href="static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="static/css/custom.css?v=ccfc9eea" />
<link rel="stylesheet" type="text/css" href="static/sphinx-design.min.css?v=95c83b7e" />
<link rel="shortcut icon" href="static/favicon.png"/>
<script src="static/jquery.js?v=5d32c60e"></script>
<script src="static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="static/documentation_options.js?v=8a448e45"></script>
<script src="static/doctools.js?v=9bcbadda"></script>
<script src="static/sphinx_highlight.js?v=dc90522c"></script>
<script src="static/design-tabs.js?v=f930bc37"></script>
<script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
<script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
<script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script src="static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Installing myQLM" href="01_getting_started/%3Amyqlm%3A01_install.html" />
<link rel="prev" title="myQLM – Quantum Python Package" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
myQLM documentation
<img src="static/myqlm-doc-logo.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="01_getting_started/%3Amyqlm%3A01_install.html">Installing myQLM</a></li>
<li class="toctree-l2"><a class="reference internal" href="01_getting_started/02_write.html">Writing quantum programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="01_getting_started/03_execute.html">Executing quantum programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="01_getting_started/04_variational.html">Variational algorithms with Qaptiva</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="02_user_guide.html">User guide</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="04_api_reference.html">API reference</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="05_demos.html">Demos</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="%3Amyqlm%3A06_support.html">Contributing to myQLM</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="07_release_notes.html">Release notes</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">myQLM documentation</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Getting started</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<span class="target" id="getting-started"></span><section id="id1">
<h1>Getting started<a class="headerlink" href="#id1" title="Link to this heading"></a></h1>
<p>myQLM contains tools for <strong>writing</strong>, <strong>optimizing</strong> and <strong>simulating</strong> quantum programs. These tools are packaged
in a <strong>Python library</strong> named <a class="reference internal" href="04_api_reference/module_qat.html#module-qat" title="qat"><code class="xref py py-mod docutils literal notranslate"><span class="pre">qat</span></code></a>, for <em>Qaptiva Application Toolset</em>.</p>
<p>myQLM also interfaces with the Qaptiva™ Appliance, the quantum programming appliance of Eviden.</p>
<p>This library provides powerful semantics for creating quantum circuits, analog schedules, and quantum annealing jobs. These objects can be parametrized
with abstract parameters (for variational quantum computing) and composed of user defined items (custom gates in a circuit, custom time-dependent coefficients
in an analog schedule, etc.)</p>
<div class="sd-card sd-sphinx-override sd-mb-3 sd-shadow-sm docutils">
<div class="sd-card-body docutils">
<div class="sd-card-title sd-font-weight-bold docutils">
Quantum Hello World</div>
<p class="sd-card-text">The following code snippet creates and simulates a simple Bell pair circuit:</p>
<figure class="align-default">
<a class="reference internal image-reference" href="images/bell_pair.png"><img alt="images/bell_pair.png" src="images/bell_pair.png" style="width: 153.0px; height: 76.0px;" />
</a>
</figure>
<div class="sd-tab-set docutils">
<input checked="checked" id="sd-tab-item-0" name="sd-tab-set-0" type="radio">
<label class="sd-tab-label" for="sd-tab-item-0">
Functional mode</label><div class="sd-tab-content docutils">
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">qat.lang</span><span class="w"> </span><span class="kn">import</span> <span class="n">qrout</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">CNOT</span>
<span class="nd">@qrout</span>
<span class="k">def</span><span class="w"> </span><span class="nf">bell_pair</span><span class="p">():</span>
<span class="n">H</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">CNOT</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">bell_pair</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
<span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"State </span><span class="si">{</span><span class="n">sample</span><span class="o">.</span><span class="n">state</span><span class="si">}</span><span class="s2"> amplitude </span><span class="si">{</span><span class="n">sample</span><span class="o">.</span><span class="n">amplitude</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">State</span> <span class="o">|</span><span class="mi">00</span><span class="o">></span> <span class="n">amplitude</span> <span class="p">(</span><span class="mf">0.7071067811865475</span><span class="o">+</span><span class="mi">0</span><span class="n">j</span><span class="p">)</span>
<span class="n">State</span> <span class="o">|</span><span class="mi">11</span><span class="o">></span> <span class="n">amplitude</span> <span class="p">(</span><span class="mf">0.7071067811865475</span><span class="o">+</span><span class="mi">0</span><span class="n">j</span><span class="p">)</span>
</pre></div>
</div>
<p class="sd-card-text">The first line of code imports a decorator and two quantum gates. The decorator is used to declare
a function that describes our quantum circuit. A detailed description of the quantum circuit
generation tools can be found in the <a class="reference internal" href="02_user_guide/01_write.html#writing"><span class="std std-ref">programming section</span></a>.</p>
<p class="sd-card-text">This function can be directly sampled via the <cite>.run</cite> method that will look for an available QPU and use it to
execute the circuit. More information about this process can be found in the <a class="reference internal" href="02_user_guide/02_execute.html#executing"><span class="std std-ref">executing section</span></a>.</p>
</div>
<input id="sd-tab-item-1" name="sd-tab-set-0" type="radio">
<label class="sd-tab-label" data-sync-group="tab" data-sync-id="sequential_mode" for="sd-tab-item-1">
Sequential mode</label><div class="sd-tab-content docutils">
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">qat.lang</span><span class="w"> </span><span class="kn">import</span> <span class="n">Program</span><span class="p">,</span> <span class="n">H</span><span class="p">,</span> <span class="n">CNOT</span>
<span class="c1"># Create a Program</span>
<span class="n">qprog</span> <span class="o">=</span> <span class="n">Program</span><span class="p">()</span>
<span class="c1"># Number of qbits</span>
<span class="n">nbqbits</span> <span class="o">=</span> <span class="mi">2</span>
<span class="c1"># Allocate some qbits</span>
<span class="n">qbits</span> <span class="o">=</span> <span class="n">qprog</span><span class="o">.</span><span class="n">qalloc</span><span class="p">(</span><span class="n">nbqbits</span><span class="p">)</span>
<span class="c1"># Apply some quantum Gates</span>
<span class="n">H</span><span class="p">(</span><span class="n">qbits</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">CNOT</span><span class="p">(</span><span class="n">qbits</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">qbits</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="c1"># Export this program into a quantum circuit</span>
<span class="n">circuit</span> <span class="o">=</span> <span class="n">qprog</span><span class="o">.</span><span class="n">to_circ</span><span class="p">()</span>
<span class="c1"># Import a Quantum Processor Unit Factory (the default one)</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">qat.qpus</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_default_qpu</span>
<span class="c1"># Create a Quantum Processor Unit</span>
<span class="n">qpu</span> <span class="o">=</span> <span class="n">get_default_qpu</span><span class="p">()</span>
<span class="c1"># Create a job</span>
<span class="n">job</span> <span class="o">=</span> <span class="n">circuit</span><span class="o">.</span><span class="n">to_job</span><span class="p">()</span>
<span class="c1"># Submit the job to the QPU</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">qpu</span><span class="o">.</span><span class="n">submit</span><span class="p">(</span><span class="n">job</span><span class="p">)</span>
<span class="c1"># Iterate over the final state vector to get all final components</span>
<span class="k">for</span> <span class="n">sample</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"State </span><span class="si">%s</span><span class="s2"> amplitude </span><span class="si">%s</span><span class="s2">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">sample</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="n">sample</span><span class="o">.</span><span class="n">amplitude</span><span class="p">))</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">State</span> <span class="o">|</span><span class="mi">00</span><span class="o">></span> <span class="n">amplitude</span> <span class="p">(</span><span class="mf">0.7071067811865475</span><span class="o">+</span><span class="mi">0</span><span class="n">j</span><span class="p">)</span>
<span class="n">State</span> <span class="o">|</span><span class="mi">11</span><span class="o">></span> <span class="n">amplitude</span> <span class="p">(</span><span class="mf">0.7071067811865475</span><span class="o">+</span><span class="mi">0</span><span class="n">j</span><span class="p">)</span>
</pre></div>
</div>
<p class="sd-card-text">The first few lines of code are dedicated to the generation of a quantum circuit and a job,
an atomic computation task in the Qaptiva™ language. A detailed description of the quantum circuit
generation tools can be found in the <a class="reference internal" href="02_user_guide/01_write.html#writing"><span class="std std-ref">programming section</span></a>.</p>
<p class="sd-card-text">Then the remaining lines instantiate a simulator, submit the job, and print the simulation results.
More information about this process can be found in the <a class="reference internal" href="02_user_guide/02_execute.html#executing"><span class="std std-ref">executing section</span></a>.</p>
</div>
</div>
</div>
</div>
<div class="toctree-wrapper compound">
</div>
<div class="toctree-wrapper compound">
</div>
<div class="toctree-wrapper compound">
</div>
<div class="toctree-wrapper compound">
</div>
<div class="sd-container-fluid sd-sphinx-override sd-mb-4 docutils">
<div class="sd-row sd-row-cols-1 sd-row-cols-xs-1 sd-row-cols-sm-2 sd-row-cols-md-2 sd-row-cols-lg-3 sd-g-4 sd-g-xs-4 sd-g-sm-4 sd-g-md-4 sd-g-lg-4 docutils">
<div class="sd-col sd-d-flex-row docutils">
<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm sd-card-hover docutils">
<div class="sd-card-body docutils">
<div class="sd-card-title sd-font-weight-bold docutils">
Installing myQLM</div>
</div>
<a class="sd-stretched-link sd-hide-link-text reference internal" href="01_getting_started/%3Amyqlm%3A01_install.html"><span class="doc">01_getting_started/:myqlm:01_install.rst</span></a></div>
</div>
<div class="sd-col sd-d-flex-row docutils">
<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm sd-card-hover docutils">
<div class="sd-card-body docutils">
<div class="sd-card-title sd-font-weight-bold docutils">
Writing quantum programs</div>
</div>
<a class="sd-stretched-link sd-hide-link-text reference internal" href="01_getting_started/02_write.html"><span class="doc">01_getting_started/02_write.rst</span></a></div>
</div>
<div class="sd-col sd-d-flex-row docutils">
<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm sd-card-hover docutils">
<div class="sd-card-body docutils">
<div class="sd-card-title sd-font-weight-bold docutils">
Executing quantum programs</div>
</div>
<a class="sd-stretched-link sd-hide-link-text reference internal" href="01_getting_started/03_execute.html"><span class="doc">01_getting_started/03_execute.rst</span></a></div>
</div>
<div class="sd-col sd-d-flex-row docutils">
<div class="sd-card sd-sphinx-override sd-w-100 sd-shadow-sm sd-card-hover docutils">
<div class="sd-card-body docutils">
<div class="sd-card-title sd-font-weight-bold docutils">
Variational algorithms with Qaptiva</div>
</div>
<a class="sd-stretched-link sd-hide-link-text reference internal" href="01_getting_started/04_variational.html"><span class="doc">01_getting_started/04_variational.rst</span></a></div>
</div>
</div>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="myQLM – Quantum Python Package" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="01_getting_started/%3Amyqlm%3A01_install.html" class="btn btn-neutral float-right" title="Installing myQLM" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright Eviden 2016-2025.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>