Skip to content

Commit

Permalink
Docs preview for PR #2657.
Browse files Browse the repository at this point in the history
  • Loading branch information
cuda-quantum-bot committed Feb 26, 2025
1 parent 46fb873 commit 3ce0666
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 10 deletions.
1 change: 1 addition & 0 deletions pr-2657/_sources/api/languages/python_api.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ Noisy Simulation

.. autoclass:: cudaq::NoiseModel
:members:
:exclude-members: register_channel
:special-members: __init__

.. autoclass:: cudaq::BitFlipChannel
Expand Down
56 changes: 53 additions & 3 deletions pr-2657/api/languages/cpp_api.html
Original file line number Diff line number Diff line change
Expand Up @@ -2740,7 +2740,7 @@ <h2>Noise Modeling<a class="headerlink" href="#noise-modeling" title="Permalink
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq11noise_model11noise_modelEv">
<span class="target" id="classcudaq_1_1noise__model_1a5c366911696095b18a8bcf1c55fe1dac"></span><span class="sig-name descname"><span class="n"><span class="pre">noise_model</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="k"><span class="pre">default</span></span><a class="headerlink" href="#_CPPv4N5cudaq11noise_model11noise_modelEv" title="Permalink to this definition">¶</a><br /></dt>
<span class="target" id="classcudaq_1_1noise__model_1adc4449f34e0319ce95a80bc6124f5d15"></span><span class="sig-name descname"><span class="n"><span class="pre">noise_model</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5cudaq11noise_model11noise_modelEv" title="Permalink to this definition">¶</a><br /></dt>
<dd><p>default constructor </p>
</dd></dl>

Expand Down Expand Up @@ -2826,8 +2826,7 @@ <h2>Noise Modeling<a class="headerlink" href="#noise-modeling" title="Permalink
<dl class="cpp enum-class">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_typeE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5"></span><span class="k"><span class="pre">enum</span></span><span class="w"> </span><span class="k"><span class="pre">class</span></span><span class="w"> </span><span class="sig-prename descclassname"><a class="reference internal" href="#_CPPv45cudaq" title="cudaq"><span class="n"><span class="pre">cudaq</span></span></a><span class="p"><span class="pre">::</span></span></span><span class="sig-name descname"><span class="n"><span class="pre">noise_model_type</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_typeE" title="Permalink to this definition">¶</a><br /></dt>
<dd><p>Noise model enumerated type that allows downstream simulators of <code class="docutils literal notranslate"><a class="reference internal" href="#classcudaq_1_1kraus__channel"><span class="std std-ref"><span class="pre">kraus_channel</span></span></a></code> objects to apply simulator-specific logic for well-known noise models. </p>
<p><em>Values:</em></p>
<dd><p><em>Values:</em></p>
<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type7unknownE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5aad921d60486366258809553a3db49a4a"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">unknown</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type7unknownE" title="Permalink to this definition">¶</a><br /></dt>
Expand All @@ -2853,6 +2852,51 @@ <h2>Noise Modeling<a class="headerlink" href="#noise-modeling" title="Permalink
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a47d7b6d93e6a7373d773f10e9971fba6"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">phase_flip_channel</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type18phase_flip_channelE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type7x_errorE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a20ccc71de1bdb05475ee924e5f8ecf41"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">x_error</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type7x_errorE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type7y_errorE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5aeeb6d6807691c67a1110e04a3cde2cec"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">y_error</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type7y_errorE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type7z_errorE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a743745d72843c03bf23ecf46214237ac"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">z_error</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type7z_errorE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type17amplitude_dampingE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5ab3de5faaf1f45abc76779a1236609b86"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">amplitude_damping</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type17amplitude_dampingE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type13phase_dampingE">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a9110851341133106609dc4567991cb25"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">phase_damping</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type13phase_dampingE" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type6pauli1E">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a444d61d3ef68f4747f0e2e7a8ac9de4e"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pauli1</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type6pauli1E" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type6pauli2E">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a8069aa5fd7f7d50ae0efd4444f372ec1"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pauli2</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type6pauli2E" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type15depolarization1E">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5abf9638080b9c0e60da383218767d187d"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">depolarization1</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type15depolarization1E" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

<dl class="cpp enumerator">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16noise_model_type15depolarization2E">
<span class="target" id="NoiseModel_8h_1a8410c9abbed0e7dfcf2c5db0919e46e5a91509198e0aaa4c1ebb996ca0bb1ae70"></span><span class="k"><span class="pre">enumerator</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">depolarization2</span></span></span><a class="headerlink" href="#_CPPv4N5cudaq16noise_model_type15depolarization2E" title="Permalink to this definition">¶</a><br /></dt>
<dd></dd></dl>

</dd></dl>

</section>
Expand Down Expand Up @@ -3865,6 +3909,12 @@ <h2>Platform<a class="headerlink" href="#platform" title="Permalink to this head
<dd><p>Set the noise model for future invocations of quantum kernels. </p>
</dd></dl>

<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4N5cudaq16quantum_platform9get_noiseEv">
<span class="target" id="classcudaq_1_1quantum__platform_1aa523466e2bde7c9d7e4bce7ef4322f73"></span><span class="k"><span class="pre">const</span></span><span class="w"> </span><a class="reference internal" href="#_CPPv4N5cudaq11noise_modelE" title="cudaq::noise_model"><span class="n"><span class="pre">noise_model</span></span></a><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">get_noise</span></span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#_CPPv4N5cudaq16quantum_platform9get_noiseEv" title="Permalink to this definition">¶</a><br /></dt>
<dd><p>Return the current noise model or <code class="docutils literal notranslate"><span class="pre">nullptr</span></code> if none set. </p>
</dd></dl>

<dl class="cpp function">
<dt class="sig sig-object cpp" id="_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE">
<span class="target" id="classcudaq_1_1quantum__platform_1a1459a03708bb0236c804148fb6775cbf"></span><a class="reference internal" href="#_CPPv4N5cudaq18RemoteCapabilitiesE" title="cudaq::RemoteCapabilities"><span class="n"><span class="pre">RemoteCapabilities</span></span></a><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">get_remote_capabilities</span></span></span><span class="sig-paren">(</span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="n"><span class="pre">std</span></span><span class="p"><span class="pre">::</span></span><span class="n"><span class="pre">size_t</span></span><span class="w"> </span><span class="n sig-param"><span class="pre">qpuId</span></span><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="m"><span class="pre">0</span></span><span class="sig-paren">)</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><a class="headerlink" href="#_CPPv4NK5cudaq16quantum_platform23get_remote_capabilitiesEKNSt6size_tE" title="Permalink to this definition">¶</a><br /></dt>
Expand Down
4 changes: 2 additions & 2 deletions pr-2657/applications/python/deutschs_algorithm.html
Original file line number Diff line number Diff line change
Expand Up @@ -816,7 +816,7 @@ <h2>XOR <span class="math notranslate nohighlight">\(\oplus\)</span><a class="he
</section>
<section id="Quantum-oracles">
<h2>Quantum oracles<a class="headerlink" href="#Quantum-oracles" title="Permalink to this heading"></a></h2>
<p><img alt="56dd55eb37b44fe680d5bc941c0c8ad7" class="no-scaled-link" src="../../_images/oracle.png" style="width: 300px; height: 150px;" /></p>
<p><img alt="31e4dc39577047b9bf4e32a2d6021480" class="no-scaled-link" src="../../_images/oracle.png" style="width: 300px; height: 150px;" /></p>
<p>Suppose we have <span class="math notranslate nohighlight">\(f(x): \{0,1\} \longrightarrow \{0,1\}\)</span>. We can compute this function on a quantum computer using oracles which we treat as black box functions that yield the output with an appropriate sequence of logical gates.</p>
<p>Above you see an oracle represented as <span class="math notranslate nohighlight">\(U_f\)</span> which allows us to transform the state <span class="math notranslate nohighlight">\(\ket{x}\ket{y}\)</span> into:</p>
<div class="math notranslate nohighlight">
Expand Down Expand Up @@ -864,7 +864,7 @@ <h2>Quantum parallelism<a class="headerlink" href="#Quantum-parallelism" title="
<h2>Deutsch’s Algorithm:<a class="headerlink" href="#Deutsch's-Algorithm:" title="Permalink to this heading"></a></h2>
<p>Our aim is to find out if <span class="math notranslate nohighlight">\(f: \{0,1\} \longrightarrow \{0,1\}\)</span> is a constant or a balanced function? If constant, <span class="math notranslate nohighlight">\(f(0) = f(1)\)</span>, and if balanced, <span class="math notranslate nohighlight">\(f(0) \neq f(1)\)</span>.</p>
<p>We step through the circuit diagram below and follow the math after the application of each gate.</p>
<p><img alt="9ca868fdd0f24f498ae488388b80e6b1" class="no-scaled-link" src="../../_images/deutsch.png" style="width: 500px; height: 210px;" /></p>
<p><img alt="0486fea71fb445d28ccfa4042947a93c" class="no-scaled-link" src="../../_images/deutsch.png" style="width: 500px; height: 210px;" /></p>
<div class="math notranslate nohighlight">
\[\ket{\psi_0} = \ket{01}
\tag{1}\]</div>
Expand Down
4 changes: 2 additions & 2 deletions pr-2657/examples/python/performance_optimizations.html
Original file line number Diff line number Diff line change
Expand Up @@ -744,9 +744,9 @@ <h1>Optimizing Performance<a class="headerlink" href="#Optimizing-Performance" t
<section id="Gate-Fusion">
<h2>Gate Fusion<a class="headerlink" href="#Gate-Fusion" title="Permalink to this heading"></a></h2>
<p>Gate fusion is an optimization technique where consecutive gates are combined into a single gate operation to improve the efficiency of the simulation (See figure below). By targeting the <code class="docutils literal notranslate"><span class="pre">nvidia-mgpu</span></code> backend and setting the <code class="docutils literal notranslate"><span class="pre">CUDAQ_MGPU_FUSE</span></code> environment variable, you can select the degree of fusion that takes place. A full command line example would look like <code class="docutils literal notranslate"><span class="pre">CUDAQ_MGPU_FUSE=4</span> <span class="pre">python</span> <span class="pre">c2h2VQE.py</span> <span class="pre">--target</span> <span class="pre">nvidia</span> <span class="pre">--target-option</span> <span class="pre">fp64,mgpu</span></code></p>
<p><img alt="bc69eb69978343d998304783516a79ab" src="../../_images/gate-fuse.png" /></p>
<p><img alt="e393b1044ec041598cd2c3f6d5133210" src="../../_images/gate-fuse.png" /></p>
<p>The importance of gate fusion is system dependent, but can have a large influence on the performance of the simulation. See the example below for a 24 qubit VQE experiment where changing the fusion level resulted in significant performance boosts.</p>
<p><img alt="f1ec2be19e4d42d4a97029bccaf2c1a5" src="../../_images/gatefusion.png" /></p>
<p><img alt="8a51c94a4d0f4b7eb448e44b4a3b7105" src="../../_images/gatefusion.png" /></p>
</section>
</section>

Expand Down
24 changes: 22 additions & 2 deletions pr-2657/genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -1179,16 +1179,34 @@ <h2 id="C">C</h2>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq11noise_model15PredicateFuncTyE">cudaq::noise_model::PredicateFuncTy (C++ type)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_typeE">cudaq::noise_model_type (C++ enum)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type17amplitude_dampingE">cudaq::noise_model_type::amplitude_damping (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type25amplitude_damping_channelE">cudaq::noise_model_type::amplitude_damping_channel (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type16bit_flip_channelE">cudaq::noise_model_type::bit_flip_channel (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type15depolarization1E">cudaq::noise_model_type::depolarization1 (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type15depolarization2E">cudaq::noise_model_type::depolarization2 (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type22depolarization_channelE">cudaq::noise_model_type::depolarization_channel (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type6pauli1E">cudaq::noise_model_type::pauli1 (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type6pauli2E">cudaq::noise_model_type::pauli2 (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type13phase_dampingE">cudaq::noise_model_type::phase_damping (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type18phase_flip_channelE">cudaq::noise_model_type::phase_flip_channel (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type7unknownE">cudaq::noise_model_type::unknown (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type7x_errorE">cudaq::noise_model_type::x_error (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type7y_errorE">cudaq::noise_model_type::y_error (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16noise_model_type7z_errorE">cudaq::noise_model_type::z_error (C++ enumerator)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq18num_available_gpusEv">cudaq::num_available_gpus (C++ function)</a>
</li>
Expand Down Expand Up @@ -1244,6 +1262,8 @@ <h2 id="C">C</h2>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4NK5cudaq3QPU21getRemoteCapabilitiesEv">cudaq::QPU::getRemoteCapabilities (C++ function)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU10isEmulatedEv">cudaq::QPU::isEmulated (C++ function)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU11isSimulatorEv">cudaq::QPU::isSimulator (C++ function)</a>
Expand All @@ -1252,8 +1272,6 @@ <h2 id="C">C</h2>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU29launchSerializedCodeExecutionERKNSt6stringERN5cudaq30SerializedCodeExecutionContextE">cudaq::QPU::launchSerializedCodeExecution (C++ function)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU15onRandomSeedSetENSt6size_tE">cudaq::QPU::onRandomSeedSet (C++ function)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU3QPUENSt6size_tE">cudaq::QPU::QPU (C++ function)</a>, <a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU3QPUERR3QPU">[1]</a>, <a href="api/languages/cpp_api.html#_CPPv4N5cudaq3QPU3QPUEv">[2]</a>
Expand Down Expand Up @@ -1335,6 +1353,8 @@ <h2 id="C">C</h2>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16quantum_platform15get_current_qpuEv">cudaq::quantum_platform::get_current_qpu (C++ function)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4NK5cudaq16quantum_platform12get_exec_ctxEv">cudaq::quantum_platform::get_exec_ctx (C++ function)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16quantum_platform9get_noiseEv">cudaq::quantum_platform::get_noise (C++ function)</a>
</li>
<li><a href="api/languages/cpp_api.html#_CPPv4N5cudaq16quantum_platform14get_num_qubitsENSt6size_tE">cudaq::quantum_platform::get_num_qubits (C++ function)</a>, <a href="api/languages/cpp_api.html#_CPPv4N5cudaq16quantum_platform14get_num_qubitsEv">[1]</a>
</li>
Expand Down
Binary file modified pr-2657/objects.inv
Binary file not shown.
2 changes: 1 addition & 1 deletion pr-2657/searchindex.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions pr-2657/sphinx/api/languages/python_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ Noisy Simulation

.. autoclass:: cudaq::NoiseModel
:members:
:exclude-members: register_channel
:special-members: __init__

.. autoclass:: cudaq::BitFlipChannel
Expand Down

0 comments on commit 3ce0666

Please sign in to comment.