Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/guides/DAG-representation.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -453,7 +453,7 @@
"<Admonition type=\"tip\" title=\"Recommendations\">\n",
" - Review the guide on creating a [custom transpiler pass](./custom-transpiler-pass)\n",
" - Learn how to [Create and transpile against custom backends](./custom-backend)\n",
" - Try the [Compare transpiler settings](/docs/tutorials/circuit-transpilation-settings) tutorial.\n",
" - Try the [Compare transpiler settings](/docs/guides/circuit-transpilation-settings) guide.\n",
" - Review the [DAG Circuit API documentation.](/docs/api/qiskit/dagcircuit)\n",
"</Admonition>"
]
Expand Down
8 changes: 8 additions & 0 deletions docs/guides/_toc.json
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@
}
]
},
{
"title": "Compare transpiler settings",
"url": "/docs/guides/circuit-transpilation-settings"
},
{
"title": "Approximate quantum compilation (AQC-Tensor)",
"children": [
Expand Down Expand Up @@ -505,6 +509,10 @@
"title": "Configure error suppression",
"url": "/docs/guides/configure-error-suppression"
},
{
"title": "Combine error mitigation options with the Estimator primitive",
"url": "/docs/guides/combine-error-mitigation-techniques"
},
{
"title": "Sample-based quantum diagonalization (SQD)",
"children":[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,16 @@
"*Usage estimate: under one minute on an Eagle r3 processor (NOTE: This is an estimate only. Your runtime might vary.)*"
]
},
{
"cell_type": "markdown",
"id": "c909d475-622d-4526-80ef-1d14328237c1",
"metadata": {
"tags": [
"version-info"
]
},
"source": []
},
{
"cell_type": "markdown",
"id": "3609dc34-10de-47ea-9d1d-f516493a7b91",
Expand All @@ -18,7 +28,7 @@
"\n",
"To ensure faster and more efficient results, as of 1 March 2024, circuits and observables need to be transformed to only use instructions supported by the QPU (quantum processing unit) before being submitted to the Qiskit Runtime primitives. We call these *instruction set architecture* (ISA) circuits and observables. One common way to do this is to use the transpiler's `generate_preset_pass_manager` function. However, you might choose to follow a more manual process.\n",
"\n",
"For example, you might want to target a specific subset of qubits on a specific device. This tutorial tests the performance of different transpiler settings by completing the full process of creating, transpiling, and submitting circuits."
"For example, you might want to target a specific subset of qubits on a specific device. This walkthrough tests the performance of different transpiler settings by completing the full process of creating, transpiling, and submitting circuits."
]
},
{
Expand All @@ -28,10 +38,10 @@
"source": [
"## Requirements\n",
"\n",
"Before starting this tutorial, ensure that you have the following installed:\n",
"Before you begin, ensure that you have the following installed:\n",
"\n",
"* Qiskit SDK 1.2 or later, with visualization support (`pip install 'qiskit[visualization]'`)\n",
"* Qiskit Runtime 0.28 or later (`pip install qiskit-ibm-runtime`)"
"* Qiskit SDK v1.2 or later, with visualization support (`pip install 'qiskit[visualization]'`)\n",
"* Qiskit Runtime v0.28 or later (`pip install qiskit-ibm-runtime`)"
]
},
{
Expand Down Expand Up @@ -119,7 +129,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/circuit-transpilation-settings/extracted-outputs/7e7944c5-68ac-40cf-a0eb-5f4a44d53931-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/circuit-transpilation-settings/extracted-outputs/7e7944c5-68ac-40cf-a0eb-5f4a44d53931-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 29,
Expand All @@ -145,7 +155,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/circuit-transpilation-settings/extracted-outputs/761afe09-b669-453f-8363-55070d6c8f57-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/circuit-transpilation-settings/extracted-outputs/761afe09-b669-453f-8363-55070d6c8f57-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 30,
Expand Down Expand Up @@ -254,7 +264,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/circuit-transpilation-settings/extracted-outputs/4ada6498-b9d7-4d88-b8a9-ef1dc0a85bf7-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/circuit-transpilation-settings/extracted-outputs/4ada6498-b9d7-4d88-b8a9-ef1dc0a85bf7-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 33,
Expand Down Expand Up @@ -313,7 +323,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/circuit-transpilation-settings/extracted-outputs/525777ea-d438-4f3b-acb6-53e579f24a0e-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/circuit-transpilation-settings/extracted-outputs/525777ea-d438-4f3b-acb6-53e579f24a0e-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 35,
Expand Down Expand Up @@ -369,22 +379,10 @@
"for prob in binary_prob:\n",
" print(f\"{hellinger_fidelity(prob, ideal_distribution):.3f}\")"
]
},
{
"cell_type": "markdown",
"id": "e6c0a85f-80a9-48e4-9910-5cfdab75863d",
"metadata": {},
"source": [
"## Tutorial survey\n",
"\n",
"Please take this short survey to provide feedback on this tutorial. Your insights will help us improve our content offerings and user experience.\n",
"\n",
"[Link to survey](https://your.feedback.ibm.com/jfe/form/SV_0j1SlLPkooyeFJY)"
]
}
],
"metadata": {
"description": "In this tutorial, we'll explore the transpilation pipeline and take you through the full process of creating, transpiling, and submitting circuits.",
"description": "In this walkthrough, we'll explore the transpilation pipeline and take you through the full process of creating, transpiling, and submitting circuits.",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,24 @@
"*Usage estimate: Seven minutes on a Heron r2 processor (NOTE: This is an estimate only. Your runtime might vary.)*"
]
},
{
"cell_type": "markdown",
"id": "95263dce-783f-48a4-88f7-45426dfd5a49",
"metadata": {
"tags": [
"version-info"
]
},
"source": []
},
{
"cell_type": "markdown",
"id": "018313d1-d959-4011-81df-59bf7c157470",
"metadata": {},
"source": [
"## Background\n",
"\n",
"This tutorial explores the error suppression and error mitigation options available with the Estimator primitive from Qiskit Runtime. You will construct a circuit and observable and submit jobs using the Estimator primitive using different combinations of error mitigation settings. Then, you will plot the results to observe the effects of the various settings. Most of the tutorial uses a 10-qubit circuit to make visualizations easier, and at the end, you can scale up the workflow to 50 qubits.\n",
"This walkthrough explores the error suppression and error mitigation options available with the Estimator primitive from Qiskit Runtime. You will construct a circuit and observable and submit jobs using the Estimator primitive using different combinations of error mitigation settings. Then, you will plot the results to observe the effects of the various settings. Most of the examples use a 10-qubit circuit to make visualizations easier, and at the end, you can scale up the workflow to 50 qubits.\n",
"\n",
"These are the error suppression and mitigation options you will use:\n",
"\n",
Expand All @@ -33,7 +43,7 @@
"source": [
"## Requirements\n",
"\n",
"Before starting this tutorial, ensure that you have the following installed:\n",
"Before starting this walkthrough, ensure that you have the following installed:\n",
"\n",
"- Qiskit SDK v2.1 or later with visualization support (`pip install 'qiskit[visualization]'`)\n",
"- Qiskit Runtime v0.40 or later (`pip install qiskit-ibm-runtime`)"
Expand Down Expand Up @@ -72,7 +82,7 @@
"source": [
"## Step 1: Map classical inputs to a quantum problem\n",
"\n",
"This tutorial assumes that the classical problem has already been mapped to quantum. Begin by constructing a circuit and observable to measure. While the techniques used in this tutorial apply to many different kinds of circuits, for simplicity this tutorial uses the [`efficient_su2`](/docs/api/qiskit/qiskit.circuit.library.efficient_su2) circuit included in Qiskit's circuit library.\n",
"This walkthrough assumes that the classical problem has already been mapped to quantum. Begin by constructing a circuit and observable to measure. While the techniques used here apply to many different kinds of circuits, for simplicity this walkthrough uses the [`efficient_su2`](/docs/api/qiskit/qiskit.circuit.library.efficient_su2) circuit included in the Qiskit circuit library.\n",
"\n",
"`efficient_su2` is a parameterized quantum circuit designed to be efficiently executable on quantum hardware with limited qubit connectivity, while still being expressive enough to solve problems in application domains like optimization and chemistry. It's built by alternating layers of parameterized single-qubit gates with a layer containing a fixed pattern of two-qubit gates, for a chosen number of repetitions. The pattern of two-qubit gates can be specified by the user. Here you can use the built-in `pairwise` pattern because it minimizes the circuit depth by packing the two-qubit gates as densely as possible. This pattern can be executed using only linear qubit connectivity."
]
Expand All @@ -86,7 +96,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/24abd7ba-bbb8-443b-9e81-866795d39a6c-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/24abd7ba-bbb8-443b-9e81-866795d39a6c-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 4,
Expand All @@ -96,7 +106,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/24abd7ba-bbb8-443b-9e81-866795d39a6c-1.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/24abd7ba-bbb8-443b-9e81-866795d39a6c-1.avif\" alt=\"Output of the previous code cell\" />"
]
},
"metadata": {},
Expand Down Expand Up @@ -156,7 +166,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/4dbde811-1ba9-47a8-85a0-dcaff054ed60-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/4dbde811-1ba9-47a8-85a0-dcaff054ed60-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 8,
Expand All @@ -166,7 +176,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/4dbde811-1ba9-47a8-85a0-dcaff054ed60-1.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/4dbde811-1ba9-47a8-85a0-dcaff054ed60-1.avif\" alt=\"Output of the previous code cell\" />"
]
},
"metadata": {},
Expand Down Expand Up @@ -204,7 +214,7 @@
"- Translate the gates in your circuit to [Instruction Set Architecture (ISA)](/docs/guides/transpile#instruction-set-architecture) instructions that can directly be executed on the hardware.\n",
"- Perform circuit optimizations to minimize the circuit depth and gate count.\n",
"\n",
"The transpiler built into Qiskit can perform all of these steps for you. Because this tutorial uses a hardware-efficient circuit, the transpiler should be able to pick a qubit layout that does not require any swap gates to be inserted for routing interactions.\n",
"The transpiler built into Qiskit can perform all of these steps for you. Because this example uses a hardware-efficient circuit, the transpiler should be able to pick a qubit layout that does not require any swap gates to be inserted for routing interactions.\n",
"\n",
"You need to choose the hardware device to use before you optimize your circuit. The following code cell requests the least busy device with at least 127 qubits."
]
Expand Down Expand Up @@ -239,7 +249,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/027e829a-44d3-455e-b2bf-8ce0d7e26b9b-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/027e829a-44d3-455e-b2bf-8ce0d7e26b9b-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"execution_count": 10,
Expand All @@ -249,7 +259,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/027e829a-44d3-455e-b2bf-8ce0d7e26b9b-1.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/027e829a-44d3-455e-b2bf-8ce0d7e26b9b-1.avif\" alt=\"Output of the previous code cell\" />"
]
},
"metadata": {},
Expand Down Expand Up @@ -390,7 +400,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/eef38976-0ca2-429a-b2dc-41aac69605f7-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/eef38976-0ca2-429a-b2dc-41aac69605f7-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"metadata": {},
Expand Down Expand Up @@ -445,7 +455,7 @@
"source": [
"## Scale the experiment up\n",
"\n",
"When developing an experiment, it's useful to start with a small circuit to make visualizations and simulations easier. Now that you've developed and tested our workflow on a 10-qubit circuit, you can scale it up to 50 qubits. The following code cell repeats all of the steps in this tutorial, but now applies them to a 50-qubit circuit."
"When developing an experiment, it's useful to start with a small circuit to make visualizations and simulations easier. Now that you've developed and tested our workflow on a 10-qubit circuit, you can scale it up to 50 qubits. The following code cell repeats all of the steps in this walkthrough, but now applies them to a 50-qubit circuit."
]
},
{
Expand All @@ -457,7 +467,7 @@
{
"data": {
"text/plain": [
"<Image src=\"/docs/images/tutorials/combine-error-mitigation-techniques/extracted-outputs/d7d8408b-faf1-4eda-ab9c-bdeaab01ff53-0.avif\" alt=\"Output of the previous code cell\" />"
"<Image src=\"/docs/images/guides/combine-error-mitigation-techniques/extracted-outputs/d7d8408b-faf1-4eda-ab9c-bdeaab01ff53-0.avif\" alt=\"Output of the previous code cell\" />"
]
},
"metadata": {},
Expand Down Expand Up @@ -571,19 +581,7 @@
"\n",
"## Conclusion\n",
"\n",
"In this tutorial, you investigated different error mitigation options available for the Qiskit Runtime Estimator primitive. You developed a workflow using a 10-qubit circuit, and then scaled it up to 50 qubits. You might have observed that enabling more error suppression and mitigation options doesn't always improve performance (specifically, enabling dynamical decoupling in this case). Most of the options accept additional configuration, which you can test out in your own work!"
]
},
{
"cell_type": "markdown",
"id": "9de59efa-f79e-4a8e-b985-3ea8ea10953f",
"metadata": {},
"source": [
"## Tutorial survey\n",
"\n",
"Please take this short survey to provide feedback on this tutorial. Your insights will help us improve our content offerings and user experience.\n",
"\n",
"[Link to survey](https://your.feedback.ibm.com/jfe/form/SV_cUCGeqAAI7suE3I)"
"In this walkthrough, you investigated different error mitigation options available for the Qiskit Runtime Estimator primitive. You developed a workflow using a 10-qubit circuit, and then scaled it up to 50 qubits. You might have observed that enabling more error suppression and mitigation options doesn't always improve performance (specifically, enabling dynamical decoupling in this case). Most of the options accept additional configuration, which you can test out in your own work!"
]
}
],
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/common-parameters.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@
"<Admonition type=\"tip\" title=\"Recommendation\">\n",
" - Review the [Default options and configuration settings](defaults-and-configuration-options) topic.\n",
" - Learn how to [Set the optimization level.](set-optimization)\n",
" - Try the [Compare transpiler settings](/docs/tutorials/circuit-transpilation-settings) tutorial.\n",
" - Try the [Compare transpiler settings](/docs/guides/circuit-transpilation-settings) guide.\n",
" - Review the [transpiler API documentation.](/docs/api/qiskit/transpiler)\n",
"\n",
"</Admonition>"
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/custom-transpiler-pass.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@
"\n",
"<Admonition type=\"tip\" title=\"Recommendations\">\n",
" - To learn how to use the `generate_preset_passmanager` function instead of writing your own passes, start with the [Transpilation default settings and configuration options](defaults-and-configuration-options) topic.\n",
" - Try the [Compare transpiler settings](/docs/tutorials/circuit-transpilation-settings) tutorial.\n",
" - Try the [Compare transpiler settings](/docs/guides/circuit-transpilation-settings) guide.\n",
" - Review the [transpiler API documentation.](/docs/api/qiskit/transpiler)\n",
"</Admonition>"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/debug-qiskit-runtime-jobs.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -633,7 +633,7 @@
" - Learn about [available Qiskit Runtime options.](/docs/guides/runtime-options-overview)\n",
" - Learn about [Error mitigation and suppression techniques.](/docs/guides/error-mitigation-and-suppression-techniques)\n",
" - Visit the [Transpile with pass managers](transpile-with-pass-managers) topic.\n",
" - Learn [how to transpile circuits](/docs/tutorials/circuit-transpilation-settings#compare-transpiler-settings) as part of Qiskit patterns workflows using Qiskit Runtime.\n",
" - Learn [how to transpile circuits](/docs/guides/circuit-transpilation-settings#compare-transpiler-settings) as part of Qiskit patterns workflows using Qiskit Runtime.\n",
" - Review the [Debugging tools API documentation.](/docs/api/qiskit-ibm-runtime/debug-tools)\n",
"</Admonition>"
]
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/defaults-and-configuration-options.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@
" - Learn how to [Set the optimization level when using Qiskit Runtime.](./runtime-options-overview)\n",
" - Visit the [Transpile with pass managers](transpile-with-pass-managers) topic.\n",
" - For examples, see [Representing quantum computers.](./represent-quantum-computers)\n",
" - Learn [how to transpile circuits](/docs/tutorials/circuit-transpilation-settings) as part of the Qiskit patterns workflow using Qiskit Runtime.\n",
" - Learn [how to transpile circuits](/docs/guides/circuit-transpilation-settings) as part of the Qiskit patterns workflow using Qiskit Runtime.\n",
" - Review the [Transpile API documentation](/docs/api/qiskit/transpiler).\n",
"</Admonition>"
]
Expand Down
Loading