qiskit-documentation/docs/guides/qiskit-addons-cutting-gates...

487 lines
131 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "8fd79758-2771-41ce-b17e-e8bfdf5b1023",
"metadata": {},
"source": [
"# Get started with circuit cutting using gate cuts"
]
},
{
"cell_type": "markdown",
"id": "091552e5",
"metadata": {
"tags": [
"version-info"
]
},
"source": []
},
{
"cell_type": "markdown",
"id": "d6a15cd2",
"metadata": {},
"source": [
"This guide demonstrates two working examples of gate cuts with the `qiskit-addon-cutting` package. The first example shows how to reduce circuit depth (the number of circuit instructions) by cutting entangling gates on non-adjacent qubits that would otherwise incur a SWAP overhead when transpiled to hardware. The second example covers how to use gate cutting to reduce the circuit width (the number of qubits) by splitting a circuit into several circuits with fewer qubits.\n",
"\n",
"Both examples will use the [`efficient_su2`](/api/qiskit/qiskit.circuit.library.efficient_su2) ansatz and reconstructs the same observable."
]
},
{
"cell_type": "markdown",
"id": "e58752cf-2628-4c99-805b-4d82055b547a",
"metadata": {},
"source": [
"## Gate cutting to reduce circuit depth\n",
"\n",
"The following workflow reduces a circuit's depth by cutting distant gates, avoiding a large series of SWAP gates that would otherwise be introduced.\n",
"\n",
"Start with the [`efficient_su2`](/api/qiskit/qiskit.circuit.library.efficient_su2) ansatz, with \"circular\" entanglement to introduce distant gates."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "1551c440-c158-478a-a8fe-86df834c59bd",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Observable: SparsePauliOp(['ZZII', 'IZZI', 'IIZZ', 'XIXI', 'ZIZZ', 'IXIX'],\n",
" coeffs=[ 1.+0.j, 1.+0.j, -1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j])\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABGQAAAD2CAYAAACQlVGeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXnFJREFUeJzt3Xl4TGcbBvB7ssoqJGQiCVHEviRiCUVQRamiluqComhRSrVKaYsq3atfqa0orbVVuyJ2RbW2xJoQJJEhu+yZ5Xx/pBKRbSaZc87M5P5dV6/LnHnnncf3OXcmz7znPQpBEAQQEREREREREZFkrOQugIiIiIiIiIiosmFDhoiIiIiIiIhIYmzIEBERERERERFJjA0ZIiIiIiIiIiKJsSFDRERERERERCQxNmSIiIiIiIiIiCTGhgwRERERERERkcTYkCEiIiIiIiIikhgbMkREREREREREEmNDhoiIiIiIiIhIYmzIEBERERERERFJjA0ZIiIiIiIiIiKJsSFDRERERERERCQxNmSIiIiIiIiIiCTGhgwRERERERERkcTYkCEiIiIiIiIikhgbMkREREREREREEmNDhoiIiIiIiIhIYmzIEBERERERERFJjA0ZIiIiIiIiIiKJsSFDRERERERERCQxNmSIiIiIiIiIiCTGhgwRERERERERkcTYkCEiIiIiIiIikhgbMkREREREREREEmNDhoiIiIiIiIhIYmzIEBERERERERFJjA0ZIiIiIiIiIiKJsSFDRERERERERCQxNmSIiIiIiIiIiCTGhgwRERERERERkcTYkCEiIiIiIiIikpiN3AVYmtARC5F2WyV3GXDxU6L72hkVmuOdM0BsptFKqhBvR+CbdnJXQWLheSMOnjdE8mCmiYOZRiQPZpo4mGkENmSML+22Cik3YuQuwyhiM4FbaXJXQZUBzxsisiTMNCKyJMw0IvHwkiUiIiIiIiIiIomxIUNEREREREREJDFeskSkh7SMXFy/nYqsbC1sbazwlI8Laro7yF0WEVG5pGeqcS0qJT/T6vq4wJOZRkRmKiNTjWu3U5GRqYatrRX8arnAq4aj3GUREZWJDRmiElyPSsGPW65h38kYXL+dCkEo/Lyv0gldgpQYN6gROgZ4QqFQyFUqEVGZIu8+xI+br2LPiRhci0opkmneNR3RubUS4wY3QufWSmYaEZm0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",
"text/plain": [
"<Figure size 1434x294.311 with 1 Axes>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"from qiskit.circuit.library import efficient_su2\n",
"from qiskit.quantum_info import SparsePauliOp\n",
"from qiskit.transpiler import generate_preset_pass_manager\n",
"from qiskit_ibm_runtime.fake_provider import FakeManilaV2\n",
"from qiskit_ibm_runtime import SamplerV2, Batch\n",
"from qiskit_aer.primitives import EstimatorV2\n",
"from qiskit_addon_cutting import (\n",
" cut_gates,\n",
" partition_problem,\n",
" generate_cutting_experiments,\n",
" reconstruct_expectation_values,\n",
")\n",
"\n",
"circuit = efficient_su2(num_qubits=4, entanglement=\"circular\")\n",
"circuit.assign_parameters([0.4] * len(circuit.parameters), inplace=True)\n",
"\n",
"\n",
"observable = SparsePauliOp([\"ZZII\", \"IZZI\", \"-IIZZ\", \"XIXI\", \"ZIZZ\", \"IXIX\"])\n",
"print(f\"Observable: {observable}\")\n",
"circuit.draw(\"mpl\", scale=0.8)"
]
},
{
"cell_type": "markdown",
"id": "87b8819b-75d7-4a9e-b91a-00b6155fda9a",
"metadata": {},
"source": [
"Each of the [`CNOT`](/api/qiskit/qiskit.circuit.library.CXGate) gates between qubits $q_0$ and $q_3$ introduce two SWAP gates after transpilation (assuming the qubits are connected in a straight line). To avoid this increase in depth, you can replace these distant gates with [`TwoQubitQPDGate`s](/api/qiskit-addon-cutting/qpd-two-qubit-qpd-gate) using the [`cut_gates()`](/api/qiskit-addon-cutting/qiskit-addon-cutting#cut_gates) method. This function also returns a list of [`QPDBasis`](../api/qiskit-addon-cutting/qpd-qpd-basis) instances - one for each decomposition."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "66dc0a14-ab51-4190-9cda-1c0373e91b9e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABP4AAAD2CAYAAABGHEm+AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXfpJREFUeJzt3Xd4U2X/BvA7aVPopFBKU9pCyyh7FRDKHqJMBWSIA3GhIAqKKKiACKK8KiC+iiyZssQfgggIFJmyZ8ssuy0NdNK9kvP7oy+FQkfSJjknT+7PdXFd5uTJybcmuXv6zTnPo5IkSQIREREREREREREJRS13AURERERERERERGR+bPwREREREREREREJiI0/IiIiIiIiIiIiAbHxR0REREREREREJCA2/oiIiIiIiIiIiATExh8REREREREREZGA2PgjIiIiIiIiIiISEBt/REREREREREREAmLjj4iIiIiIiIiISEBs/BEREREREREREQmIjT8iIiIiIiIiIiIBsfFHREREREREREQkIDb+iIiIiIiIiIiIBMTGHxERERERERERkYDY+CMiIiIiIiIiIhIQG39EREREREREREQCYuOPiIiIiIiIiIhIQGz8ERERERERERERCYiNPyIiIiIiIiIiIgGx8UdERERERERERCQgNv6IiIiIiIiIiIgExMYfERERERERERGRgNj4IyIiIiIiIiIiEhAbf0RERERERERERAJi44+IiIiIiIiIiEhAbPwREREREREREREJiI0/IiIiIiIiIiIiAbHxR0REREREREREJCA2/oiIiIiIiIiIiATExh8REREREREREZGA2PgjIiIiIiIiIiISEBt/REREREREREREAnKUuwDRhL3yNVJv6OQuA+6BWnRfPrFc+3j/CBCTYbaSysXPBZjTxrrPqZTX0trM8d6xZ0p634iUA3JkACmbkj5r1sJ8Lj+lvG9Eymcwo+kRSvmcWRszunyU9L4RKaOZzwQ2/swv9YYOyZej5S7DLGIygGupclchH5FeS7Ie0d439p4DpFyifdbIOkR63zCfSalE+pyR9Yj2vmFGk5LwUl8iIiIiIiIiIiIBsfFHREREREREREQkIDb+iIiIiIiIiIiIBMTGHxERERERERERkYC4uIdMOsx9B3WGdgUAGPR6ZN5JRuzBCJyc+SsydIlyl2eyG9+PQMLu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9sW7pYmU0aLks3G//ckicpLTELk6DL02TockGXB40mL4dW0OJ083XN94AFt6fgwA0IY2QlD/9rj62165Sy6Ro3sVVO3xBi5N6gSo1ajx1o+4d3I79KmJqNL5BTSYfRwAkBq+B4n718Kr23C5SyYiM7n/x+XL/erg4Kk72H4wGifOJ+D8tSRkZOmhcVSjlr87WjbwQqeWWvTrUgNOGge5yy6RSBnNfCayb9WruWLh1A745oMn8NuO6zh89i5OXIiHLj4Ter2ESu5OaBZcBS0bVsVzTwYiOLCS3CWXSKR8BjOayK6pVCoMfioIg58KwtHwOPy1LwonLsQj4koS0jPzoHFUo6avK1o2rIoOLXzQv1tNVKyg7DaOSBktSj6rJEkq/oJxMtkfncch+XK03GXAM9gf/ffOLdc+hvwDXEs1W0nlUssdWN/Vus+plNfS2szx3iFSIiV9pkXKaDnyGQp7Pa2F+UwiU8pnWqR8Bo+hrYoZTaJS0mdapIy2Zj7zUl8iIiIiIiIiIiIBsfFHREREREREREQkIDb+iIiIiIiIiIiIBKTsWSFtkHugMlanNEcdfi5mKcUs5KhFKa+ltdnrz03iU9J7W6SMlqsOJb2e1mKPPzPZD6W8v0XKZ/AY2qrs9ecm8SnpvS1SRluzDi7uQUREREREREREJCBe6ktERERERERERCQgNv6IiIiIiIiIiIgExMYfERERERERERGRgNj4IyIiIiIiIiIiEhAbf0RERERERERERAJi44+IiIiIiIiIiEhAbPwREREREREREREJiI0/IiIiIiIiIiIiAbHxR0REREREREREJCA2/oiIiIiIiIiIiATExh8REREREREREZGA2PgjIiIiIiIiIiISEBt/REREREREREREAmLjj4iIiIiIiIiISEBs/BEREREREREREQmIjT8iIiIiIiIiIiIBsfFHREREREREREQkIDb+iIiIiIiIiIiIBMTGHxERERERERERkYDY+CMiIiIiIiIiIhIQG39EREREREREREQCYuOPiIiIiIiIiIhIQP8PydFlFzKXqWIAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1634.66x294.311 with 1 Axes>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Find the indices of the distant gates\n",
"cut_indices = [\n",
" i\n",
" for i, instruction in enumerate(circuit.data)\n",
" if {circuit.find_bit(q)[0] for q in instruction.qubits} == {0, 3}\n",
"]\n",
"\n",
"# Decompose distant CNOTs into TwoQubitQPDGate instances\n",
"qpd_circuit, bases = cut_gates(circuit, cut_indices)\n",
"\n",
"qpd_circuit.draw(\"mpl\", scale=0.8)"
]
},
{
"cell_type": "markdown",
"id": "e9871e55-59f8-48e2-a9ca-2645dcb7d2bf",
"metadata": {},
"source": [
"Now that the cut gate instructions have been added, the subexperiments will have a smaller depth after transpilation than the original circuit. The code snippet below generates the subexperiments using the [`generate_cutting_experiments`](/api/qiskit-addon-cutting/qiskit-addon-cutting#generate_cutting_experiments), which ingests the circuit and observable to reconstruct.\n",
"\n",
"<Admonition type=\"note\" title=\"Note about the number of samples\">\n",
" The `num_samples` argument specifies how many samples to draw from the quasi-probability distribution and determines the accuracy of the coefficients used for the reconstruction. Passing infinity (`np.inf`) will ensure all coefficients are calculated exactly. Read the API docs on [generating weights](/api/qiskit-addon-cutting/qpd#generate_qpd_weights) and [generating cutting experiments](/api/qiskit-addon-cutting/qiskit-addon-cutting#generate_cutting_experiments) for more information.\n",
"</Admonition>\n",
"\n",
"Once the subexperiments are generated, you can then transpile them and use the `Sampler` primitive to sample the distribution and reconstruct the estimated expectation values. The following code block generates, transpiles, and executes the subexperiments. It then reconstructs the results and compares them to the exact expectation value."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "682d5724-d8bc-40e6-b42e-9224a600fe7a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reconstructed expectation value: 0.50201416\n",
"Exact expectation value: 0.50497603\n",
"Error in estimation: -0.00296187\n",
"Relative error in estimation: -0.00586537\n"
]
}
],
"source": [
"# Generate the subexperiments and sampling coefficients\n",
"subexperiments, coefficients = generate_cutting_experiments(\n",
" circuits=qpd_circuit, observables=observable.paulis, num_samples=np.inf\n",
")\n",
"\n",
"# Set a backend to use and transpile the subexperiments\n",
"backend = FakeManilaV2()\n",
"pass_manager = generate_preset_pass_manager(\n",
" optimization_level=1, backend=backend\n",
")\n",
"isa_subexperiments = pass_manager.run(subexperiments)\n",
"\n",
"# Set up the Qiskit Runtime Sampler primitive, submit the subexperiments, and retrieve the results\n",
"sampler = SamplerV2(backend)\n",
"job = sampler.run(isa_subexperiments, shots=4096 * 3)\n",
"results = job.result()\n",
"\n",
"\n",
"# Reconstruct the results\n",
"reconstructed_expval_terms = reconstruct_expectation_values(\n",
" results,\n",
" coefficients,\n",
" observable.paulis,\n",
")\n",
"\n",
"# Apply the coefficients of the original observable\n",
"reconstructed_expval = np.dot(reconstructed_expval_terms, observable.coeffs)\n",
"\n",
"estimator = EstimatorV2()\n",
"exact_expval = (\n",
" estimator.run([(circuit, observable, [0.4] * len(circuit.parameters))])\n",
" .result()[0]\n",
" .data.evs\n",
")\n",
"print(\n",
" f\"Reconstructed expectation value: {np.real(np.round(reconstructed_expval, 8))}\"\n",
")\n",
"print(f\"Exact expectation value: {np.round(exact_expval, 8)}\")\n",
"print(\n",
" f\"Error in estimation: {np.real(np.round(reconstructed_expval-exact_expval, 8))}\"\n",
")\n",
"print(\n",
" f\"Relative error in estimation: {np.real(np.round((reconstructed_expval-exact_expval) / exact_expval, 8))}\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "64f44348-3ad1-4bf4-9a3a-cf0d73ca3431",
"metadata": {},
"source": [
"<Admonition type=\"caution\" title=\"Note about observable coefficients\">\n",
" To accurately reconstruct the expectation value, the coefficients of the original observable (which are different from the coefficients in the output of `generate_cutting_experiments()`) must be applied to the output of the reconstruction, since this information was lost when the cutting experiments were generated or when the observable was expanded.\n",
"\n",
" Typically these coefficients can be applied through `numpy.dot()` as shown above.\n",
"</Admonition>"
]
},
{
"cell_type": "markdown",
"id": "1eaf95b7-7c95-4c65-9ab6-d2654bc2b988",
"metadata": {},
"source": [
"## Gate cutting to reduce circuit width\n",
"\n",
"This section demonstrates using gate cutting to reduce circuit width. Start with the same [`efficient_su2`](/api/qiskit/qiskit.circuit.library.efficient_su2) but use \"linear\" entanglement."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "64010a14-8360-47e2-bb77-af9b2e0dbbfc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Observable: SparsePauliOp(['ZZII', 'IZZI', 'IIZZ', 'XIXI', 'ZIZZ', 'IXIX'],\n",
" coeffs=[ 1.+0.j, 1.+0.j, -1.+0.j, 1.+0.j, 1.+0.j, 1.+0.j])\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 831.997x294.311 with 1 Axes>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qc = efficient_su2(4, entanglement=\"linear\", reps=2)\n",
"qc.assign_parameters([0.4] * len(qc.parameters), inplace=True)\n",
"\n",
"\n",
"observable = SparsePauliOp([\"ZZII\", \"IZZI\", \"-IIZZ\", \"XIXI\", \"ZIZZ\", \"IXIX\"])\n",
"print(f\"Observable: {observable}\")\n",
"\n",
"qc.draw(\"mpl\", scale=0.8)"
]
},
{
"cell_type": "markdown",
"id": "65ddc1d5-b0c6-45e9-88e1-6df2616e3f96",
"metadata": {},
"source": [
"Then generate the *subcircuits* and *subobservables* you'll execute using the [`partition_problem()`](/api/qiskit-addon-cutting/qiskit-addon-cutting#partition_problem) function. This function takes in the circuit, observable, and an optional partitioning scheme and returns the cut circuits and observables in the form of a dictionary.\n",
"\n",
"The partitioning is defined by a label string of the form `\"AABB\"` where each label in this string corresponds to the qubit in the same index of the `circuit` argument. Qubits sharing a common partition label are grouped together, and any non-local gates that span more than one partition will be cut.\n",
"\n",
"<Admonition type=\"information\" title=\"Note\">\n",
" The `observables` kwarg to `partition_problem` is of type [`PauliList`](/api/qiskit/qiskit.quantum_info.PauliList). Observable term coefficients and phases are ignored during decomposition of the problem and execution of the subexperiments. They may be re-applied during reconstruction of the expectation value.\n",
"</Admonition>"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a5454265-3785-4a54-b423-baf7815b97ec",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sampling overhead: 81.0\n",
"Subobservables: {'A': PauliList(['II', 'ZI', 'ZZ', 'XI', 'ZZ', 'IX']), 'B': PauliList(['ZZ', 'IZ', 'II', 'XI', 'ZI', 'IX'])}\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 913.309x160.533 with 1 Axes>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"partitioned_problem = partition_problem(\n",
" circuit=qc, partition_labels=\"AABB\", observables=observable.paulis\n",
")\n",
"subcircuits = partitioned_problem.subcircuits\n",
"subobservables = partitioned_problem.subobservables\n",
"bases = partitioned_problem.bases\n",
"\n",
"\n",
"print(f\"Sampling overhead: {np.prod([basis.overhead for basis in bases])}\")\n",
"print(f\"Subobservables: {subobservables}\")\n",
"subcircuits[\"A\"].draw(\"mpl\", scale=0.8)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1c527720-0d06-48a1-88b6-9ff95a77a068",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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rri66zC+f/ZdAIBPSBs0G/IkLn8dX+M2xSR3awDv/hNwcU5PwNERTf8Ribun9kGbm4UGT49Cq09PAgByEw8h65cd8OozTuySyQ717OyL/Z19kXztLv5z4Br+9/ttnE3Owt3cEsOlhju18kbXdg0xYkAzeNR3ErvkakkpB5gBZA0uKjnCJwdj7huPY0/cDfxySoP/nb+DK2m5KC3TwcVZhtaPeqJTay8M7NEE3Ts0sskP0g9IKQMgoRxw0Ov1VR8wRBb17dPTkZOcJnYZAACPIH8Mif+sVtsYGQdcyTVbSYI96gbE9Ba7CiLj2EoOSCkDwBwgO2IrGQCJ5YA1M4CHeRARERERCcRmmoiIiIhIIDbTREREREQC8QREEbkF+IhdgoE5avFzMWKQFdhKHUTGsJUckFIGwMZqIaqOrWQAJJYD1qyDJyASEREREQnEwzyIiIiIiARiM01EREREJBCbaSIiIiIigdhMExEREREJxGaaiIiIiEggNtNERERERAKxmSYiIiIiEojNNBERERGRQGymiYiIiIgEYjNNRERERCQQm2kiIiIiIoHYTBMRERERCcRmmoiIiIhIIDbTREREREQCsZkmIiIiIhKIzTQRERERkUBspomIiIiIBGIzTUREREQkEJtpIiIiIiKB2EwTEREREQnEZpqIiIiISCA200REREREAv0/NxOfGDS3mzwAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 913.47x160.533 with 1 Axes>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"subcircuits[\"B\"].draw(\"mpl\", scale=0.8)"
]
},
{
"cell_type": "markdown",
"id": "8a03df45-252b-424f-9fe0-9748084f14c3",
"metadata": {},
"source": [
"The next step is then to use the subcircuits and subobservables to generate the *subexperiments* to be executed on a QPU using the [`generate_cutting_experiments`](/api/qiskit-addon-cutting/qiskit-addon-cutting#generate_cutting_experiments) method.\n",
"\n",
"To estimate the expectation value of the full-sized circuit, many subexperiments are generated from the decomposed gates' joint quasi-probability distribution and then executed on one or more QPUs. The number of samples to be taken from this distribution is controlled by the `num_samples` argument.\n",
"\n",
"The following code block generates the subexperiments and executes them using the `Sampler` primitive on a local simulator. (To run these on a QPU, change the `backend` to your chosen QPU resource.)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1be6d145-4a18-4c41-bf59-d9b24d2ce024",
"metadata": {},
"outputs": [],
"source": [
"subexperiments, coefficients = generate_cutting_experiments(\n",
" circuits=subcircuits, observables=subobservables, num_samples=np.inf\n",
")\n",
"\n",
"# Set a backend to use and transpile the subexperiments\n",
"backend = FakeManilaV2()\n",
"pass_manager = generate_preset_pass_manager(\n",
" optimization_level=1, backend=backend\n",
")\n",
"isa_subexperiments = {\n",
" label: pass_manager.run(partition_subexpts)\n",
" for label, partition_subexpts in subexperiments.items()\n",
"}\n",
"\n",
"# Submit each partition's subexperiments to the Qiskit Runtime Sampler\n",
"# primitive, in a single batch so that the jobs will run back-to-back.\n",
"with Batch(backend=backend) as batch:\n",
" sampler = SamplerV2(mode=batch)\n",
" jobs = {\n",
" label: sampler.run(subsystem_subexpts, shots=4096 * 3)\n",
" for label, subsystem_subexpts in isa_subexperiments.items()\n",
" }\n",
"\n",
"# Retrieve results\n",
"results = {label: job.result() for label, job in jobs.items()}"
]
},
{
"cell_type": "markdown",
"id": "64e762ad-0660-4c78-8ea7-fb9d226357d7",
"metadata": {},
"source": [
"Lastly, the expectation value of the full circuit is reconstructed using the [`reconstruct_expectation_values`](/api/qiskit-addon-cutting/qiskit-addon-cutting#reconstruct_expectation_values) method.\n",
"\n",
"The code block below reconstructs the results and compares them with the exact expectation value."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b3cf1b65-df16-4bd4-a083-f65cec6c49dc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reconstructed expectation value: 0.5725264\n",
"Exact expectation value: 0.56254612\n",
"Error in estimation: 0.00998027\n",
"Relative error in estimation: 0.01774125\n"
]
}
],
"source": [
"# Get expectation values for each observable term\n",
"reconstructed_expval_terms = reconstruct_expectation_values(\n",
" results,\n",
" coefficients,\n",
" subobservables,\n",
")\n",
"\n",
"# Reconstruct final expectation value\n",
"reconstructed_expval = np.dot(reconstructed_expval_terms, observable.coeffs)\n",
"\n",
"\n",
"estimator = EstimatorV2()\n",
"exact_expval = (\n",
" estimator.run([(qc, observable, [0.4] * len(qc.parameters))])\n",
" .result()[0]\n",
" .data.evs\n",
")\n",
"print(\n",
" f\"Reconstructed expectation value: {np.real(np.round(reconstructed_expval, 8))}\"\n",
")\n",
"print(f\"Exact expectation value: {np.round(exact_expval, 8)}\")\n",
"print(\n",
" f\"Error in estimation: {np.real(np.round(reconstructed_expval-exact_expval, 8))}\"\n",
")\n",
"print(\n",
" f\"Relative error in estimation: {np.real(np.round((reconstructed_expval-exact_expval) / exact_expval, 8))}\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "faf4620d-6782-4fce-a99b-9e1d01f29951",
"metadata": {},
"source": [
"## Next steps\n",
"\n",
"<Admonition type=\"tip\" title=\"Recommendations\">\n",
" - Read the [Get started with circuit cutting using wire cuts](/guides/qiskit-addons-cutting-wires) guide.\n",
" - Read the arXiv paper on [circuit knitting with classical communication.](https://ieeexplore.ieee.org/document/10236453)\n",
"</Admonition>"
]
}
],
"metadata": {
"description": "Two worked examples of gate cutting using the circuit cutting addon to get started with the package",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3"
},
"title": "Get started with gate cutting"
},
"nbformat": 4,
"nbformat_minor": 2
}