534 lines
184 KiB
Plaintext
534 lines
184 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f2f7c189-f44e-41f8-a854-105b3bc49397",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Transpiler stages"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ad073954-5ac3-4291-bbef-5ae4b9db1da9",
|
|
"metadata": {
|
|
"tags": [
|
|
"version-info"
|
|
]
|
|
},
|
|
"source": [
|
|
"<details>\n",
|
|
"<summary><b>Package versions</b></summary>\n",
|
|
"\n",
|
|
"The code on this page was developed using the following requirements.\n",
|
|
"We recommend using these versions or newer.\n",
|
|
"\n",
|
|
"```\n",
|
|
"qiskit[all]~=1.2.4\n",
|
|
"qiskit-aer~=0.15.1\n",
|
|
"qiskit-ibm-runtime~=0.31.0\n",
|
|
"qiskit-serverless~=0.17.1\n",
|
|
"qiskit-ibm-catalog~=0.1\n",
|
|
"```\n",
|
|
"</details>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e7ea0c93-e691-4130-b614-187346a9e149",
|
|
"metadata": {},
|
|
"source": [
|
|
"This page describes the stages of prebuilt transpilation pipeline in the Qiskit SDK. There are six stages:\n",
|
|
"\n",
|
|
"1. `init`\n",
|
|
"2. `layout`\n",
|
|
"3. `routing`\n",
|
|
"4. `translation`\n",
|
|
"5. `optimization`\n",
|
|
"6. `scheduling`\n",
|
|
"\n",
|
|
"The [`generate_preset_pass_manager`](/api/qiskit/transpiler_preset#qiskit.transpiler.preset_passmanagers.generate_preset_pass_manager) function creates a preset [staged pass manager](/api/qiskit/qiskit.transpiler.StagedPassManager) composed of these stages. The specific passes that make up each stage depends on the arguments passed to `generate_preset_pass_manager`. The `optimization_level` is a positional argument that must be specified; it is an integer that can be 0, 1, 2, or 3. Higher values indicate heavier but more costly optimization (see [Transpilation defaults and configuration options](defaults-and-configuration-options)).\n",
|
|
"\n",
|
|
"The recommended way to transpile a circuit is to create a preset staged pass manager and then run that pass manager on the circuit, as described in [Transpile with pass managers](transpile-with-pass-managers). However, a simpler but less customizable alternative is to use the [`transpile`](/api/qiskit/compiler#qiskit.compiler.transpile) function. This function accepts the circuit directly as an argument. As with `generate_preset_pass_manager`, the specific transpiler passes used depend on the arguments, such as `optimization_level`, passed to `transpile`. In fact, internally the `transpile` function calls `generate_preset_pass_manager` to create a preset staged pass manager and runs it on the circuit."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b17ff66d-44f9-4b61-b7d1-0833dd3cb258",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Init stage\n",
|
|
"\n",
|
|
"This first stage does very little by default and is primarily useful if you want to include your own initial optimizations. Because most layout and routing algorithms are only designed to work with single- and two-qubit gates, this stage is also used to translate any gates that operate on more than two qubits, into gates that only operate on one or two qubits.\n",
|
|
"\n",
|
|
"For more information about implementing your own initial optimizations for this stage, see the section on plugins and customizing pass managers."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "895275e3-913c-482f-aaaa-0232865ba5f6",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Layout stage\n",
|
|
"The next stage involves the layout or connectivity of the backend a circuit will be sent to. In general, quantum circuits are abstract entities whose qubits are \"virtual\" or \"logical\" representations of actual qubits used in computations. To execute a sequence of gates, a one-to-one mapping from the \"virtual\" qubits to the \"physical\" qubits in an actual quantum device is necessary. This mapping is stored as a `Layout` object and is part of the constraints defined within a backend's [instruction set architecture (ISA)](./transpile#instruction-set-architecture).\n",
|
|
"\n",
|
|
"\n",
|
|
"![This image illustrates qubits being mapped from the wire representation to a diagram that represents how the qubits are connected on the QPU.](/images/guides/transpiler-stages/layout-mapping.png \"Qubit mapping\")\n",
|
|
"\n",
|
|
"The choice of mapping is extremely important for minimizing the number of SWAP operations needed to map the input circuit onto the device topology and ensure the most well-calibrated qubits are used. Due to the importance of this stage, the preset pass managers try a few different methods to find the best layout. Typically this involves two steps: first, try to find a \"perfect\" layout (a layout that does not require any SWAP operations), and then, a heuristic pass that tries to find the best layout to use if a perfect layout cannot be found. There are two `Passes` typically used for this first step:\n",
|
|
"\n",
|
|
"- `TrivialLayout`: Naively maps each virtual qubit to the same numbered physical qubit on the device (i.e., [`0`,`1`,`1`,`3`] -> [`0`,`1`,`1`,`3`]). This is historical behavior only used in `optimzation_level=1` to try to find a perfect layout. If it fails, `VF2Layout` is tried next.\n",
|
|
"- `VF2Layout`: This is an `AnalysisPass` that selects an ideal layout by treating this stage as a subgraph isomorphism problem, solved by the VF2++ algorithm. If more than one layout is found, a scoring heuristic is run to select the mapping with the lowest average error.\n",
|
|
"\n",
|
|
"Then for the heuristic stage, two passes are used by default:\n",
|
|
"\n",
|
|
"- `DenseLayout`: Finds the sub-graph of the device with the greatest connectivity and that has the same number of qubits as the circuit (used for optimization level 1 if there are control flow operations (such as IfElseOp) present in the circuit).\n",
|
|
"- `SabreLayout`: This pass selects a layout by starting from an initial random layout and repeatedly running the `SabreSwap` algorithm. This pass is only used in optimization levels 1, 2, and 3 if a perfect layout isn't found via the `VF2Layout` pass. For more details on this algorithm, refer to the paper [arXiv:1809.02573.](https://arxiv.org/abs/1809.02573)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4d34dc67-5c9e-4b74-b8ee-06f336599621",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Routing stage\n",
|
|
"\n",
|
|
"In order to implement a two-qubit gate between qubits that are not directly connected on a quantum device, one or more SWAP gates must be inserted into the circuit to move the qubit states around until they are adjacent on the device gate map. Each SWAP gate represents an expensive and noisy operation to perform. Thus, finding the minimum number of SWAP gates needed to map a circuit onto a given device is an important step in the transpilation process. For efficiency, this stage is typically computed alongside the Layout stage by default, but they are logically distinct from one another. The *Layout* stage selects the hardware qubits to be used, while the *Routing* stage inserts the appropriate amount of SWAP gates in order to execute the circuits using the selected layout.\n",
|
|
"\n",
|
|
"However, finding the optimal SWAP mapping is hard. In fact, it is an NP-hard problem, and is thus prohibitively expensive to compute for all but the smallest quantum devices and input circuits. To work around this, Qiskit uses a stochastic heuristic algorithm called `SabreSwap` to compute a good, but not necessarily optimal, SWAP mapping. The use of a stochastic method means that the circuits generated are not guaranteed to be the same over repeated runs. Indeed, running the same circuit repeatedly results in a distribution of circuit depths and gate counts at the output. It is for this reason that many users choose to run the routing function (or the entire `StagedPassManager`) many times and select the lowest-depth circuits from the distribution of outputs.\n",
|
|
"\n",
|
|
"For example, let's take a 15-qubit GHZ circuit executed 100 times, using a “bad” (disconnected) `initial_layout`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "358cfb50-02fc-48f2-a4ec-657837e0c304",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"Text(0, 0.5, 'Counts')"
|
|
]
|
|
},
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"504.44pt\" height=\"381.27pt\" version=\"1.1\" viewBox=\"0 0 504.44 381.27\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 381.27h504.44v-381.27h-504.44z\" fill=\"#ffffff\"/><path d=\"m44.474 339.84h446.4v-332.64h-446.4z\" fill=\"#ffffff\"/><path d=\"m64.765 339.84h40.582v-316.8h-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m105.35 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m145.93 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m186.51 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m227.09 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m267.67 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m308.26 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m348.84 339.84h40.582v-103.57h-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m389.42 339.84h40.582-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><path d=\"m430 339.84h40.582v-188.86h-40.582z\" clip-path=\"url(#7d212b9cd8c)\" fill=\"#ac557c\"/><defs><path id=\"3aafdb92f5b\" d=\"m0 0v3.5\" stroke=\"#343a3f\" stroke-width=\".8\"/></defs><use x=\"85.056193\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(78.694 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-35\" transform=\"scale(.015625)\" d=\"m691 4666h2478v-532h-1900v-1143q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171-469-417-1322-417-294 0-599 50-304 50-629 150v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z\"/><path id=\"DejaVuSans-39\" transform=\"scale(.015625)\" d=\"m703 97v575q238-113 481-172 244-59 479-59 625 0 954 420 330 420 377 1277-181-269-460-413-278-144-615-144-700 0-1108 423-408 424-408 1159 0 718 425 1152 425 435 1131 435 810 0 1236-621 427-620 427-1801 0-1103-524-1761-523-658-1407-658-238 0-482 47-243 47-506 141zm1256 1978q425 0 673 290 249 291 249 798 0 503-249 795-248 292-673 292t-673-292-248-795q0-507 248-798 248-290 673-290z\"/></defs><use xlink:href=\"#DejaVuSans-35\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-39\"/></g><use x=\"135.783466\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(129.42 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-36\" transform=\"scale(.015625)\" d=\"m2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154-425-434-1131-434-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z\"/><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"186.510739\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(180.15 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/></g><use x=\"237.238011\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(230.88 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-32\" transform=\"scale(.015625)\" d=\"m1228 531h2203v-531h-2962v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-32\"/></g><use x=\"287.965284\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(281.6 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-33\" transform=\"scale(.015625)\" d=\"m2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069-475-378-1350-378-293 0-604 58t-642 174v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-33\"/></g><use x=\"338.692557\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(332.33 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-34\" transform=\"scale(.015625)\" d=\"m2419 4116-1594-2491h1594v2491zm-166 550h794v-3041h666v-525h-666v-1100h-628v1100h-2106v609l1940 2957z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-34\"/></g><use x=\"389.41983\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(383.06 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-35\"/></g><use x=\"440.147102\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(433.78 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-36\"/></g><use x=\"490.874375\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#3aafdb92f5b\"/><g transform=\"translate(484.51 354.44) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-37\" transform=\"scale(.015625)\" d=\"m525 4666h3e3v-269l-1694-4397h-659l1594 4134h-2241v532z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-37\"/></g><g transform=\"translate(246.35 371.16) scale(.14 -.14)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-44\" transform=\"scale(.015625)\" d=\"m1259 4147v-3628h763q966 0 1414 437 448 438 448 1382 0 937-448 1373t-1414 436h-763zm-631 519h1297q1356 0 1990-564 635-564 635-1764 0-1207-638-1773-637-565-1987-565h-1297v4666z\"/><path id=\"DejaVuSans-65\" transform=\"scale(.015625)\" d=\"m3597 1894v-281h-2644q38-594 358-905t892-311q331 0 642 81t618 244v-544q-310-131-635-200t-659-69q-838 0-1327 487-489 488-489 1320 0 859 464 1363 464 505 1252 505 706 0 1117-455 411-454 411-1235zm-575 169q-6 471-264 752-258 282-683 282-481 0-770-272t-333-766l2050 4z\"/><path id=\"DejaVuSans-70\" transform=\"scale(.015625)\" d=\"m1159 525v-1856h-578v4831h578v-531q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331t-399-1332q-398-506-1036-506-384 0-661 152-276 152-458 464zm1957 1222q0 634-261 995t-717 361q-457 0-718-361t-261-995 261-995 718-361q456 0 717 361t261 995z\"/><path id=\"DejaVuSans-74\" transform=\"scale(.015625)\" d=\"m1172 4494v-994h1184v-447h-1184v-1900q0-428 117-550t477-122h590v-481h-590q-666 0-919 248-253 249-253 905v1900h-422v447h422v994h578z\"/><path id=\"DejaVuSans-68\" transform=\"scale(.015625)\" d=\"m3513 2113v-2113h-575v2094q0 497-194 743-194 247-581 247-466 0-735-297-269-296-269-809v-1978h-578v4863h578v-1907q207 316 486 472 280 156 646 156 603 0 912-373 310-373 310-1098z\"/></defs><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-70\"/><use x=\"202.001953\" xlink:href=\"#DejaVuSans-74\"/><use x=\"241.210938\" xlink:href=\"#DejaVuSans-68\"/></g><defs><path id=\"329820d2908\" d=\"m0 0h-3.5\" stroke=\"#343a3f\" stroke-width=\".8\"/></defs><use x=\"44.474375\" y=\"339.84\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(31.112 343.64) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-30\"/></g><use x=\"44.474375\" y=\"278.916923\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(24.749 282.72) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-31\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"44.474375\" y=\"217.993846\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(24.749 221.79) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-32\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"44.474375\" y=\"157.070769\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(24.749 160.87) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-33\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"44.474375\" y=\"96.147692\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(24.749 99.947) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-34\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"44.474375\" y=\"35.224615\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#329820d2908\"/><g transform=\"translate(24.749 39.024) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-35\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><g transform=\"translate(17.838 197.95) rotate(-90) scale(.14 -.14)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-43\" transform=\"scale(.015625)\" d=\"m4122 4306v-665q-319 297-680 443-361 147-767 147-800 0-1225-489t-425-1414q0-922 425-1411t1225-489q406 0 767 147t680 444v-660q-331-225-702-338-370-112-782-112-1060 0-1670 648-609 649-609 1771 0 1125 609 1773 610 649 1670 649 418 0 788-111 371-111 696-333z\"/><path id=\"DejaVuSans-6f\" transform=\"scale(.015625)\" d=\"m1959 3097q-462 0-731-361t-269-989 267-989q268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349-428-489-1178-489-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z\"/><path id=\"DejaVuSans-75\" transform=\"scale(.015625)\" d=\"m544 1381v2119h575v-2097q0-497 193-746 194-248 582-248 465 0 735 297 271 297 271 810v1984h575v-3500h-575v538q-209-319-486-474-276-155-642-155-603 0-916 375-312 375-312 1097zm1447 2203z\"/><path id=\"DejaVuSans-6e\" transform=\"scale(.015625)\" d=\"m3513 2113v-2113h-575v2094q0 497-194 743-194 247-581 247-466 0-735-297-269-296-269-809v-1978h-578v3500h578v-544q207 316 486 472 280 156 646 156 603 0 912-373 310-373 310-1098z\"/><path id=\"DejaVuSans-73\" transform=\"scale(.015625)\" d=\"m2834 3397v-544q-243 125-506 187-262 63-544 63-428 0-642-131t-214-394q0-200 153-314t616-217l197-44q612-131 870-370t258-667q0-488-386-773-386-284-1061-284-281 0-586 55t-642 164v594q319-166 628-249 309-82 613-82 406 0 624 139 219 139 219 392 0 234-158 359-157 125-692 241l-200 47q-534 112-772 345-237 233-237 639 0 494 350 762 350 269 994 269 318 0 599-47 282-46 519-140z\"/></defs><use xlink:href=\"#DejaVuSans-43\"/><use x=\"69.824219\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"131.005859\" xlink:href=\"#DejaVuSans-75\"/><use x=\"194.384766\" xlink:href=\"#DejaVuSans-6e\"/><use x=\"257.763672\" xlink:href=\"#DejaVuSans-74\"/><use x=\"296.972656\" xlink:href=\"#DejaVuSans-73\"/></g><path d=\"m44.474 339.84v-332.64\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><path d=\"m44.474 339.84h446.4\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><defs><clipPath id=\"7d212b9cd8c\"><rect x=\"44.474\" y=\"7.2\" width=\"446.4\" height=\"332.64\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from qiskit import QuantumCircuit\n",
|
|
"from qiskit_ibm_runtime.fake_provider import FakeAuckland, FakeWashingtonV2\n",
|
|
"from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n",
|
|
"\n",
|
|
"backend = FakeAuckland()\n",
|
|
"\n",
|
|
"ghz = QuantumCircuit(15)\n",
|
|
"ghz.h(0)\n",
|
|
"ghz.cx(0, range(1, 15))\n",
|
|
"\n",
|
|
"pass_manager = generate_preset_pass_manager(\n",
|
|
" optimization_level=1,\n",
|
|
" backend=backend,\n",
|
|
" layout_method=\"trivial\", # Fixed layout mapped in circuit order\n",
|
|
")\n",
|
|
"depths = []\n",
|
|
"for _ in range(100):\n",
|
|
" depths.append(pass_manager.run(ghz).depth())\n",
|
|
"\n",
|
|
"plt.figure(figsize=(8, 6))\n",
|
|
"plt.hist(depths, align=\"left\", color=\"#AC557C\")\n",
|
|
"plt.xlabel(\"Depth\", fontsize=14)\n",
|
|
"plt.ylabel(\"Counts\", fontsize=14)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "558e3bea-431e-4ff1-ac4b-54cfb1eeb9e4",
|
|
"metadata": {},
|
|
"source": [
|
|
"This wide distribution demonstrates how difficult it is for the SWAP mapper to compute the best mapping. To gain some insight, let's look at both the circuit being executed as well as the qubits that were chosen on the hardware."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "bb3b8c1f-69fd-4e0c-9b78-9ee67f3361bb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"786.5pt\" height=\"728.25pt\" version=\"1.1\" viewBox=\"0 0 786.5 728.25\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 728.25h786.5v-728.25h-786.5z\" fill=\"#ffffff\"/><path d=\"m74.716 44.283h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 90.637h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 136.99h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 183.35h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 229.7h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 276.05h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 322.41h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 368.76h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 415.12h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 461.47h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 507.82h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 554.18h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 600.53h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 646.89h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.716 693.24h699.95\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m70.081 21.106h-1158.8v741.66h1158.8z\" clip-path=\"url(#221e6ec702c)\" fill=\"#ffffff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><path d=\"m146.1 90.637v-46.354\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m192.46 136.99v-92.708\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m238.81 183.35v-139.06\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m285.16 229.7v-185.42\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m331.52 276.05v-231.77\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m377.87 322.41v-278.12\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m424.23 368.76v-324.48\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m470.58 415.12v-370.83\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m516.93 461.47v-417.19\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m563.29 507.82v-463.54\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m609.64 554.18v-509.89\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m656 600.53v-556.25\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m702.35 646.89v-602.6\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m748.7 693.24v-648.96\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m84.682 59.348h30.13v-30.13h-30.13z\" clip-path=\"url(#221e6ec702c)\" fill=\"#fa4d56\" stroke=\"#fa4d56\" stroke-width=\"1.5\"/><path d=\"m146.1 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m146.1 101.18c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m192.46 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m192.46 147.54c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m238.81 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m238.81 193.89c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m285.16 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m285.16 240.24c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m331.52 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m331.52 286.6c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m377.87 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m377.87 332.95c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m424.23 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m424.23 379.31c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568s-4.6601-3.0887-7.4568-3.0887c-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m470.58 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m470.58 425.66c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m516.93 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m516.93 472.01c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m563.29 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m563.29 518.37c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887s-5.4792 1.1111-7.4568 3.0887c-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m609.64 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m609.64 564.72c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m656 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m656 611.08c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m702.35 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m702.35 657.43c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m748.7 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m748.7 703.78c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#221e6ec702c)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m146.1 96.663v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m140.08 90.637h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m192.46 143.02v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m186.43 136.99h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m238.81 189.37v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m232.78 183.35h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m285.16 235.73v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m279.14 229.7h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m331.52 282.08v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m325.49 276.05h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m377.87 328.43v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m371.85 322.41h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m424.23 374.79v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m418.2 368.76h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m470.58 421.14v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m464.55 415.12h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m516.93 467.5v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m510.91 461.47h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m563.29 513.85v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m557.26 507.82h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m609.64 560.2v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m603.62 554.18h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m656 606.56v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m649.97 600.53h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m702.35 652.91v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m696.32 646.89h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m748.7 699.27v-12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m742.68 693.24h12.052\" clip-path=\"url(#221e6ec702c)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 48.734) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-Oblique-71\" transform=\"scale(.015625)\" d=\"m2669 525q-231-303-546-460-314-156-695-156-531 0-833 358-301 358-301 986 0 506 186 978t533 847q225 244 517 375t614 131q387 0 637-153t363-462l100 525h578l-934-4813h-579l360 1844zm-1778 813q0-463 193-705 194-242 560-242 544 0 928 520t384 1264q0 450-199 689-198 239-569 239-272 0-504-127-231-126-403-370-181-256-286-600-104-343-104-668z\"/><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-30\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 95.088) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 141.44) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-32\" transform=\"scale(.015625)\" d=\"m1228 531h2203v-531h-2962v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-32\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 187.8) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-33\" transform=\"scale(.015625)\" d=\"m2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069-475-378-1350-378-293 0-604 58t-642 174v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-33\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 234.15) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-34\" transform=\"scale(.015625)\" d=\"m2419 4116-1594-2491h1594v2491zm-166 550h794v-3041h666v-525h-666v-1100h-628v1100h-2106v609l1940 2957z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-34\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 280.5) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-35\" transform=\"scale(.015625)\" d=\"m691 4666h2478v-532h-1900v-1143q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171-469-417-1322-417-294 0-599 50-304 50-629 150v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-35\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 326.86) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-36\" transform=\"scale(.015625)\" d=\"m2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154-425-434-1131-434-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-36\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 373.21) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-37\" transform=\"scale(.015625)\" d=\"m525 4666h3e3v-269l-1694-4397h-659l1594 4134h-2241v532z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-37\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 419.57) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-38\" transform=\"scale(.015625)\" d=\"m2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042-414-362-1186-362-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-38\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(47.408 465.92) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-39\" transform=\"scale(.015625)\" d=\"m703 97v575q238-113 481-172 244-59 479-59 625 0 954 420 330 420 377 1277-181-269-460-413-278-144-615-144-700 0-1108 423-408 424-408 1159 0 718 425 1152 425 435 1131 435 810 0 1236-621 427-620 427-1801 0-1103-524-1761-523-658-1407-658-238 0-482 47-243 47-506 141zm1256 1978q425 0 673 290 249 291 249 798 0 503-249 795-248 292-673 292t-673-292-248-795q0-507 248-798 248-290 673-290z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-39\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(40.095 512.27) scale(.1625 -.1625)\"><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(108.01 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-30\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(40.095 558.63) scale(.1625 -.1625)\"><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(108.01 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(40.095 604.98) scale(.1625 -.1625)\"><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(108.01 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-32\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(40.095 651.34) scale(.1625 -.1625)\"><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(108.01 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-33\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(40.095 697.69) scale(.1625 -.1625)\"><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(108.01 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-34\"/></g></g><g clip-path=\"url(#221e6ec702c)\"><g transform=\"translate(94.859 47.87) scale(.13 -.13)\"><defs><path id=\"DejaVuSans-48\" transform=\"scale(.015625)\" d=\"m628 4666h631v-1913h2294v1913h631v-4666h-631v2222h-2294v-2222h-631v4666z\"/></defs><use xlink:href=\"#DejaVuSans-48\"/></g></g><defs><clipPath id=\"221e6ec702c\"><rect x=\"7.2\" y=\"7.2\" width=\"772.1\" height=\"713.85\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 1392.67x1287.61 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ghz.draw(\"mpl\", idle_wires=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "e4cd49ef-5b3e-4ee0-82f8-c83e1f0ae755",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"654.51pt\" height=\"287.28pt\" version=\"1.1\" viewBox=\"0 0 654.51 287.28\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 287.28h654.51v-287.28h-654.51z\" fill=\"#ffffff\"/><g clip-path=\"url(#efae1ec873b)\"><image transform=\"scale(1 -1) translate(0 -272.88)\" x=\"7.2\" y=\"-7.1957\" width=\"640.8\" height=\"272.88\" xlink:href=\"data:image/png;base64, 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Dgd0bwetkuxd05h9NQ1F26DDgA4trLl5dq5pdASc1iM0veuGYfWQ9upo75rWJ0f8VTnnnHMYPnw4YUGejBAWFsa4ceNqNQetoRk6dCijR48OyR5uV199NQMHDgz6eepa7969Offcc2natGnQz3XllVcydOjQoJ+nrnXq1ImxY8fSvHnzoJ9r7NixjBgxIujnqWspKSlceumlIWnoOeussxg9erRte0irxcXFMW7cODp37hz08HXqqacyZswYIiNtuGLIAZwOGNwNWp/4fvTH1SYZTu5orfZpd6d2t+bqBVtyPPTuBE2ig3+uuja4G3RKDf55mkRDvzRrPpnd9esMXVoGv1EiMgwGdIXUhOCeR35zxLuB+Ph4HnroITp27Bi0OQkOh4PRo0dzyy234HLZdJD+AWJjY7njjjvo0aNH0F6vw+Fg2LBh3H333Y2iptHR0dxwww0MGjSoVpt0+8MwDAYPHsx9993XKGoaERHBRRddFNRGCcMw6Nu3L3fffTfR0dG27SWpFhYWxvDhw7n00ktrtH1NTRiGQXp6OrfddhvNmjWzfU2dTid9+/blxhtvJD4+Pmivt0OHDtx000106NDB9jU1DGs45cg+wV10Ij4GhnSzwp7NS4qxbxXM806xQkOwXm50BJzSBbq0sn9NwerVu+hUa95csF5uuAv6pEGvTo1jr7fqmibEBu895HTAyR2sYbA2b4usV45a6pNOOonXXnuNJk2aBLx12Ol00r17d1544QWSk5MDeuz6rFOnTvz73/8mOTk54DV1OBx06dKFF154gdTUEDR11RNt27blqaeeon379gFvlHA4HHTs2JF//OMftG/f3vY3etVSU1O5//776dWrV8DDrWEYtGnThgcffJAePXrYvuepWkJCAjfffDPDhg0LeKOEYRikpKRw++23M3jw4EbRIAHWcOpx48Zx8cUXExER+JUEEhMTueGGGxgzZkzQGpLqG5fTGlI1NEjDuCLDrB6SU06ybqQbA8OArm1gzAAID8IgqTAndG9rDWeMbBxvUwA6pML/nQoRQXjNTgd0bgnnDLDvwjZH0joZxp1pvY8CfbvjMKBdMlx8qj23U6nPjnqX5XA4OO200/jggw9o2rRpwG6iHQ4HXbt25YMPPqBjx44BOWZD4XA4OOWUU5gyZQqJiYkBrWmnTp144403aj1nraEyDINevXrx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iIjUlbKyMj755BOWLl1a62NERETQrl070tPTad68OQ7H4X8OTdNk+vTpfP/994dtzyAiYhert8OyTQdvmRAMpRVW2MsL3Eh7OQ4teBoCbrebadOmsXHjxuO2Cvft25d//OMfuFxH/qf57LPP+Pe//33U45imSVZWFq+++iovvvjiCV+7iEh9Ypomu3fvZuLEicccHREREcHll1/OKaecwvjx49m6dStgraLZs2dP7rnnHk466SRcLhcVFRX89NNPTJgwgaysrIOOU1JSwltvvcXZZ59N8+bNg/raRERCze2BWcuhIgRDKn2mtR/fiq1wZq/gn08U9EJi48aNLFu2jPLy8uM+dufOnZx22mmsWbOGZcuWHfbzvXv3HvcYlZWVfPfdd+zatYtWrVrV6ppFROojr9fLN998w+7du4/5OKfTSYcOHejbty+xsbH7vx8XF8crr7xCQkICb731Fjk5OQwbNozrrruObt26MXbs2IPmUJumybx581izZg3NmjU7Ys+fiEhDtSULsgtCN5yypBw2ZcIpXSFGixoHnYJekJmmyZo1a9i4caNfj9+7dy9r1qwhOjqaRx55hJycnIN673w+n19zRQoLC5k3b97+vaBEROzA4/Hw6aef1nrO3FlnnUXnzp156KGHePPNNzFNk8mTJ/PSSy9xzTXXMHLkSL799tuDnlO92NVpp52moCcitmGasG4nlFeG8JxYm7HvKYAOqaE7b2Olv1hBZpomW7duZdeuXX4/58EHHyQpKYlnnnmGNm3aANbwT7fb7fdqnYWFhSxatKhW1ywiUh+ZpkllZSXz5s2rddBr164d27ZtY/78+Xi9Xnw+H263m48++gifz0d6evphz/F6vcyePTvgqyWLiNQl04Qde6AixFOQc4qs1T0l+BT0gqysrIzs7Owa3SDMmDGD2267jW7duvHee+9x9dVX07Jlyxq1JFdUVLB161atFCcitrJ9+/YT2tvu2WefZeDAgaxYsQIAl8tFQkIC3bt3xzAMNmzYcMTnrVu3TkFPRGylpALKQtibV620HErKtPpmKGjoZpCVlZVRUFBQo+f4fD4+/vhj1qxZw+9//3vuuOMOzjzzTF5++WUWL17s182Gz+ejsLCQyspKIiM1CFpE7GHHjh0nfIzqBrDOnTtzxhln0K1bN8aMGcP333/PTz/9dMTnFBUVUVpaSlRU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Awwr6A3vDeecoprWhmlaw4/LK6HygKAXFR6clSUbA9O0hh+XHRD0qsNzVDhg6L1aU9Vz+MoqrR7oA4NeVIT1Pj2Bmi7RSOR6xjAMnE4nSUlJJCWFYOfaRsLhcJCYmEhiYiPYpTNEHA4HRUVF7NmzZ//38vPz8Xq9unmupeqhxPHx8XV9KbbhcDiIi4sjLi6uri/FNgzD2iohovEsnBt0hmGFktIKq5cPrJs7t0c3zrVlGNYQt2BsFdJYGcZvQ4klMAzDWmAlLio4W0+os1pERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbEZBT0RERERExGYU9ERERERERGxGQU9ERERERMRmFPRERERERERsRkFPRERERETEZhT0REREREREbMZV1xcgIg2HaZrk5+ezZs0a1qxZw7Zt2w76eU5ODp999hklJSWcfPLJtG7dGodD7UkiIocyAdMH2QWQmQurt0Ol++Cfb8uCeWugVRKkJkBEeB1drIg0SIZpmmZdX4SI1G+mabJnzx4++eQTZsyYwfbt28nMzCQ/Px+Px7P/cQ6Hg9jYWFJTU2nRogW9evVi3Lhx9O/fX4FPRGQfrxfW7IQlGyArH4rKoKgUqjwHP87lhNhIiI+BlATo1RF6tofIcDCMOrl0EWk4lijo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\"/></g><defs><clipPath id=\"efae1ec873b\"><rect x=\"7.2\" y=\"7.2\" width=\"640.11\" height=\"272.88\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 1154.6x492.2 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"from qiskit.visualization import plot_circuit_layout\n",
|
|
"\n",
|
|
"# Plot the hardware graph and indicate which hardware qubits were chosen to run the circuit\n",
|
|
"transpiled_circ = pass_manager.run(ghz)\n",
|
|
"plot_circuit_layout(transpiled_circ, backend)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f88a25c8-2449-47de-a8e3-05726b33f35f",
|
|
"metadata": {},
|
|
"source": [
|
|
"As you can see, this circuit has to execute a two-qubit gate between qubits 0 and 14, which are very far apart on the connectivity graph. Running this circuit thus requires inserting SWAP gates to execute all of the two-qubit gates using the `SabreSwap` pass.\n",
|
|
"\n",
|
|
"Note also that the `SabreSwap` algorithm is different from the larger `SabreLayout` method in the previous stage. By default, `SabreLayout` runs both layout and routing, and returns the transformed circuit. This is done for a few particular technical reasons specified in the pass's [API reference page](../api/qiskit/qiskit.transpiler.passes.SabreLayout)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "87ea7bc5-15d6-4723-a0a0-a72b641fb467",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Translation stage\n",
|
|
"\n",
|
|
"When writing a quantum circuit, you are free to use any quantum gate (unitary operation) that you like, along with a collection of non-gate operations such as qubit measurement or reset instructions. However, most quantum devices only natively support a handful of quantum gate and non-gate operations. These native gates are part of the definition of a target's [ISA](./transpile#instruction-set-architecture) and this stage of the preset `PassManagers` translates (or *unrolls*) the gates specified in a circuit to the native basis gates of a specified backend. This is an important step, as it allows the circuit to be executed by the backend, but typically leads to an increase in the depth and number of gates.\n",
|
|
"\n",
|
|
"Two special cases are especially important to highlight, and help illustrate what this stage does.\n",
|
|
"\n",
|
|
"1. If a SWAP gate is not a native gate to the target backend, this requires three CNOT gates:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "31fcf8b6-4f3a-460e-90fd-446813bd4f28",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"native gates:['id', 'if_else', 'sx', 'x', 'delay', 'cx', 'switch_case', 'rz', 'reset', 'for_loop', 'measure']\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"220.03pt\" height=\"125.65pt\" version=\"1.1\" viewBox=\"0 0 220.03 125.65\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 125.65h220.03v-125.65h-220.03z\" fill=\"#ffffff\"/><path d=\"m64.497 44.283h143.7\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m64.497 90.637h143.7\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m59.862 21.106h-1158.8v139.06h1158.8z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#ffffff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><path d=\"m89.528 90.637v-46.354\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m135.88 90.637v-46.354\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m182.24 90.637v-46.354\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m89.528 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m89.528 101.18c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m135.88 95.157c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958s-0.4762-2.3482-1.3237-3.1958c-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958s0.4762 2.3482 1.3237 3.1958c0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m135.88 54.829c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m182.24 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m182.24 101.18c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887s-5.4792 1.1111-7.4568 3.0887c-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d2aa6cd4008)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m89.528 96.663v-12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m83.502 90.637h12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m135.88 50.309v-12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m129.86 44.283h12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m182.24 96.663v-12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m176.21 90.637h12.052\" clip-path=\"url(#d2aa6cd4008)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><g clip-path=\"url(#d2aa6cd4008)\"><g transform=\"translate(37.189 48.734) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-Oblique-71\" transform=\"scale(.015625)\" d=\"m2669 525q-231-303-546-460-314-156-695-156-531 0-833 358-301 358-301 986 0 506 186 978t533 847q225 244 517 375t614 131q387 0 637-153t363-462l100 525h578l-934-4813h-579l360 1844zm-1778 813q0-463 193-705 194-242 560-242 544 0 928 520t384 1264q0 450-199 689-198 239-569 239-272 0-504-127-231-126-403-370-181-256-286-600-104-343-104-668z\"/><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-30\"/></g></g><g clip-path=\"url(#d2aa6cd4008)\"><g transform=\"translate(37.189 95.088) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/></g></g><defs><clipPath id=\"d2aa6cd4008\"><rect x=\"7.2\" y=\"7.2\" width=\"205.63\" height=\"111.25\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 370.906x200.667 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"print(\"native gates:\" + str(backend.operation_names))\n",
|
|
"qc = QuantumCircuit(2)\n",
|
|
"qc.swap(0, 1)\n",
|
|
"qc.decompose().draw(\"mpl\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fa86c03c-f290-472a-9350-83a885ae3c6a",
|
|
"metadata": {},
|
|
"source": [
|
|
"As a product of three CNOT gates, a SWAP is an expensive operation to perform on noisy quantum devices. However, such operations are usually necessary for embedding a circuit into the limited gate connectivities of many devices. Thus, minimizing the number of SWAP gates in a circuit is a primary goal in the transpilation process.\n",
|
|
"\n",
|
|
"2. A Toffoli, or controlled-controlled-not gate (`ccx`), is a three-qubit gate. Given that our basis gate set includes only single- and two-qubit gates, this operation must be decomposed. However, it is quite costly:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "8a2c1913-3324-44b0-859e-d7fd348161c3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"590.97pt\" height=\"172pt\" version=\"1.1\" viewBox=\"0 0 590.97 172\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 172h590.97v-172h-590.97z\" fill=\"#ffffff\"/><path d=\"m64.609 44.283h514.53\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m64.609 90.637h514.53\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m64.609 136.99h514.53\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m59.974 21.106h-1158.8v185.42h1158.8z\" clip-path=\"url(#d05cee50d25)\" fill=\"#ffffff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><path d=\"m135.99 136.99v-46.354\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m228.7 136.99v-92.708\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m321.41 136.99v-46.354\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m414.12 136.99v-92.708\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m460.47 90.637v-46.354\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m553.18 90.637v-46.354\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m74.575 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#fa4d56\" stroke=\"#fa4d56\" stroke-width=\"1.5\"/><path d=\"m135.99 95.157c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958s-0.4762-2.3482-1.3237-3.1958c-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958s0.4762 2.3482 1.3237 3.1958c0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m135.99 147.54c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m167.28 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m228.7 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m228.7 147.54c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m259.99 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m321.41 95.157c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958s-0.4762-2.3482-1.3237-3.1958c-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958s0.4762 2.3482 1.3237 3.1958c0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m321.41 147.54c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m352.7 105.7h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m352.7 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m414.12 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237s-1.3237 1.9972-1.3237 3.1958c0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m414.12 147.54c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568s-4.6601-3.0887-7.4568-3.0887c-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m460.47 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958s-1.9972-1.3237-3.1958-1.3237c-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m460.47 101.18c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m445.41 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m491.76 59.348h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m491.76 105.7h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m491.76 152.06h30.13v-30.13h-30.13z\" clip-path=\"url(#d05cee50d25)\" fill=\"#fa4d56\" stroke=\"#fa4d56\" stroke-width=\"1.5\"/><path d=\"m553.18 48.803c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m553.18 101.18c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887s-5.4792 1.1111-7.4568 3.0887c-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#d05cee50d25)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m135.99 143.02v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m129.97 136.99h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m228.7 143.02v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m222.68 136.99h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m321.41 143.02v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m315.38 136.99h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m414.12 143.02v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m408.09 136.99h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m460.47 96.663v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m454.45 90.637h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m553.18 96.663v-12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m547.15 90.637h12.052\" clip-path=\"url(#d05cee50d25)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(37.301 48.734) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-Oblique-71\" transform=\"scale(.015625)\" d=\"m2669 525q-231-303-546-460-314-156-695-156-531 0-833 358-301 358-301 986 0 506 186 978t533 847q225 244 517 375t614 131q387 0 637-153t363-462l100 525h578l-934-4813h-579l360 1844zm-1778 813q0-463 193-705 194-242 560-242 544 0 928 520t384 1264q0 450-199 689-198 239-569 239-272 0-504-127-231-126-403-370-181-256-286-600-104-343-104-668z\"/><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-30\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(37.301 95.088) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(37.301 141.44) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-32\" transform=\"scale(.015625)\" d=\"m1228 531h2203v-531h-2962v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z\"/></defs><use xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -16.406) scale(.7)\" xlink:href=\"#DejaVuSans-32\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(84.752 140.58) scale(.13 -.13)\"><defs><path id=\"DejaVuSans-48\" transform=\"scale(.015625)\" d=\"m628 4666h631v-1913h2294v1913h631v-4666h-631v2222h-2294v-2222h-631v4666z\"/></defs><use xlink:href=\"#DejaVuSans-48\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(174.03 140.58) scale(.13 -.13)\"><defs><path id=\"DejaVuSans-54\" transform=\"scale(.015625)\" d=\"m-19 4666h3947v-532h-1656v-4134h-634v4134h-1657v532z\"/><path id=\"DejaVuSans-2020\" transform=\"scale(.015625)\" d=\"m1325 4666h550v-1313h1147v-478h-1147v-3491h-550v3491h-1147v478h1147v1313z\"/></defs><use transform=\"translate(0 .68438)\" xlink:href=\"#DejaVuSans-54\"/><use transform=\"translate(75.679 38.966) scale(.7)\" xlink:href=\"#DejaVuSans-2020\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(271.09 140.58) scale(.13 -.13)\"><use xlink:href=\"#DejaVuSans-54\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(363.79 94.224) scale(.13 -.13)\"><use xlink:href=\"#DejaVuSans-54\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(359.44 140.58) scale(.13 -.13)\"><use transform=\"translate(0 .68438)\" xlink:href=\"#DejaVuSans-54\"/><use transform=\"translate(75.679 38.966) scale(.7)\" xlink:href=\"#DejaVuSans-2020\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(456.5 140.58) scale(.13 -.13)\"><use xlink:href=\"#DejaVuSans-54\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(502.86 47.87) scale(.13 -.13)\"><use xlink:href=\"#DejaVuSans-54\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(498.51 94.224) scale(.13 -.13)\"><use transform=\"translate(0 .68438)\" xlink:href=\"#DejaVuSans-54\"/><use transform=\"translate(75.679 38.966) scale(.7)\" xlink:href=\"#DejaVuSans-2020\"/></g></g><g clip-path=\"url(#d05cee50d25)\"><g transform=\"translate(501.94 140.58) scale(.13 -.13)\"><use xlink:href=\"#DejaVuSans-48\"/></g></g><defs><clipPath id=\"d05cee50d25\"><rect x=\"7.2\" y=\"7.2\" width=\"576.57\" height=\"157.6\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 1040x284.278 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"qc = QuantumCircuit(3)\n",
|
|
"qc.ccx(0, 1, 2)\n",
|
|
"qc.decompose().draw(\"mpl\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6c6a13b1-b843-4f74-b712-61b6de99c17f",
|
|
"metadata": {},
|
|
"source": [
|
|
"For every Toffoli gate in a quantum circuit, the hardware may execute up to six CNOT gates and a handful of single-qubit gates. This example demonstrates that any algorithm making use of multiple Toffoli gates will end up as a circuit with large depth and will therefore be appreciably affected by noise."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3832f808-4612-497b-8d50-c76d6da49eb0",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Optimization stage\n",
|
|
"\n",
|
|
"This stage centers around decomposing quantum circuits into the basis gate set of the target device, and must fight against the increased depth from the layout and routing stages. Fortunately, there are many routines for optimizing circuits by either combining or eliminating gates. In some cases, these methods are so effective that the output circuits have lower depth than the inputs, even after layout and routing to the hardware topology. In other cases, not much can be done, and the computation may be difficult to perform on noisy devices. This stage is where the various optimization levels begin to differ.\n",
|
|
"\n",
|
|
"- For `optimization_level=1`, this stage prepares [`Optimize1qGatesDecomposition`](../api/qiskit/qiskit.transpiler.passes.Optimize1qGatesDecomposition) and [`CXCancellation`](../api/qiskit/qiskit.transpiler.passes.CXCancellation), which combine chains of single-qubit gates and cancel any back-to-back CNOT gates.\n",
|
|
"- For `optimization_level=2`, this stage uses the [`CommutativeCancellation`](../api/qiskit/qiskit.transpiler.passes.CommutativeCancellation) pass instead of `CXCancellation`, which removes redundant gates by exploiting commutation relations.\n",
|
|
"- For `optimization_level=3`, this stage prepares the following passes:\n",
|
|
" - [`Collect2qBlocks`](../api/qiskit/qiskit.transpiler.passes.Collect2qBlocks)\n",
|
|
" - [`ConsolidateBlocks`](../api/qiskit/qiskit.transpiler.passes.ConsolidateBlocks)\n",
|
|
" - [`UnitarySynthesis`](../api/qiskit/qiskit.transpiler.passes.UnitarySynthesis)\n",
|
|
" - [`Optimize1qGateDecomposition`](../api/qiskit/qiskit.transpiler.passes.Optimize1qGatesDecomposition)\n",
|
|
" - [`CommutativeCancellation`](../api/qiskit/qiskit.transpiler.passes.CommutativeCancellation)\n",
|
|
"\n",
|
|
"\n",
|
|
"Additionally, this stage also executes a few final checks to make sure that all instructions in the circuit are composed of the basis gates available on the target backend.\n",
|
|
"\n",
|
|
"The example below using a GHZ state demonstrates the effects of different optimization level settings on circuit depth and gate count.\n",
|
|
"\n",
|
|
"<Admonition type=\"note\">\n",
|
|
" The transpilation output varies due to the stochastic SWAP mapper. Therefore, the numbers below will likely change each time you run the code.\n",
|
|
"</Admonition>\n",
|
|
"\n",
|
|
"![15-qubit GHZ state](/images/guides/transpiler-11.png \"15-qubit GHZ state before transpilation\")\n",
|
|
"\n",
|
|
"The following code constructs a 15-qubit GHZ state and compares the `optimization_levels` of transpilation in terms of resulting circuit depth, gate counts, and multi-qubit gate counts."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "2507de9c-1b94-4d56-b5a6-0b2bb1719a80",
|
|
"metadata": {
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"453.23pt\" height=\"336.63pt\" version=\"1.1\" viewBox=\"0 0 453.23 336.63\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 336.63h453.23v-336.63h-453.23z\" fill=\"#ffffff\"/><path d=\"m40.603 131.68h405.43v-109.36h-405.43z\" fill=\"#ffffff\"/><path d=\"m59.032 131.68h77.594v-104.15h-77.594z\" clip-path=\"url(#54365b9dc9d)\" fill=\"#1192e8\"/><path d=\"m156.02 131.68h77.594v-76.487h-77.594z\" clip-path=\"url(#54365b9dc9d)\" fill=\"#1192e8\"/><path d=\"m253.02 131.68h77.594v-74.86h-77.594z\" clip-path=\"url(#54365b9dc9d)\" fill=\"#1192e8\"/><path d=\"m350.01 131.68h77.594v-82.996h-77.594z\" clip-path=\"url(#54365b9dc9d)\" fill=\"#1192e8\"/><defs><path id=\"89778018b64\" d=\"m0 0v3.5\" stroke=\"#343a3f\" stroke-width=\".8\"/></defs><use x=\"97.828891\" y=\"131.678125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(94.648 146.28) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/></defs><use xlink:href=\"#DejaVuSans-30\"/></g><use x=\"194.821714\" y=\"131.678125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(191.64 146.28) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/></defs><use xlink:href=\"#DejaVuSans-31\"/></g><use x=\"291.814536\" y=\"131.678125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(288.63 146.28) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-32\" transform=\"scale(.015625)\" d=\"m1228 531h2203v-531h-2962v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z\"/></defs><use xlink:href=\"#DejaVuSans-32\"/></g><use x=\"388.807359\" y=\"131.678125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(385.63 146.28) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-33\" transform=\"scale(.015625)\" d=\"m2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069-475-378-1350-378-293 0-604 58t-642 174v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z\"/></defs><use xlink:href=\"#DejaVuSans-33\"/></g><g transform=\"translate(196.54 159.95) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-4f\" transform=\"scale(.015625)\" d=\"m2522 4238q-688 0-1093-513-404-512-404-1397 0-881 404-1394 405-512 1093-512 687 0 1089 512 402 513 402 1394 0 885-402 1397-402 513-1089 513zm0 512q981 0 1568-658 588-658 588-1764 0-1103-588-1761-587-658-1568-658-984 0-1574 656-589 657-589 1763t589 1764q590 658 1574 658z\"/><path id=\"DejaVuSans-70\" transform=\"scale(.015625)\" d=\"m1159 525v-1856h-578v4831h578v-531q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331t-399-1332q-398-506-1036-506-384 0-661 152-276 152-458 464zm1957 1222q0 634-261 995t-717 361q-457 0-718-361t-261-995 261-995 718-361q456 0 717 361t261 995z\"/><path id=\"DejaVuSans-74\" transform=\"scale(.015625)\" d=\"m1172 4494v-994h1184v-447h-1184v-1900q0-428 117-550t477-122h590v-481h-590q-666 0-919 248-253 249-253 905v1900h-422v447h422v994h578z\"/><path id=\"DejaVuSans-69\" transform=\"scale(.015625)\" d=\"m603 3500h575v-3500h-575v3500zm0 1363h575v-729h-575v729z\"/><path id=\"DejaVuSans-6d\" transform=\"scale(.015625)\" d=\"m3328 2828q216 388 516 572t706 184q547 0 844-383 297-382 297-1088v-2113h-578v2094q0 503-179 746-178 244-543 244-447 0-707-297-259-296-259-809v-1978h-578v2094q0 506-178 748t-550 242q-441 0-701-298-259-298-259-808v-1978h-578v3500h578v-544q197 322 472 475t653 153q382 0 649-194 267-193 395-562z\"/><path id=\"DejaVuSans-7a\" transform=\"scale(.015625)\" d=\"m353 3500h2731v-525l-2162-2516h2162v-459h-2809v525l2163 2516h-2085v459z\"/><path id=\"DejaVuSans-61\" transform=\"scale(.015625)\" d=\"m2194 1759q-697 0-966-159t-269-544q0-306 202-486 202-179 548-179 479 0 768 339t289 901v128h-572zm1147 238v-1997h-575v531q-197-318-491-470t-719-152q-537 0-855 302-317 302-317 808 0 590 395 890 396 300 1180 300h807v57q0 397-261 614t-733 217q-300 0-585-72-284-72-546-216v532q315 122 612 182 297 61 578 61 760 0 1135-394 375-393 375-1193z\"/><path id=\"DejaVuSans-6f\" transform=\"scale(.015625)\" d=\"m1959 3097q-462 0-731-361t-269-989 267-989q268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349-428-489-1178-489-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z\"/><path id=\"DejaVuSans-6e\" transform=\"scale(.015625)\" d=\"m3513 2113v-2113h-575v2094q0 497-194 743-194 247-581 247-466 0-735-297-269-296-269-809v-1978h-578v3500h578v-544q207 316 486 472 280 156 646 156 603 0 912-373 310-373 310-1098z\"/><path id=\"DejaVuSans-4c\" transform=\"scale(.015625)\" d=\"m628 4666h631v-4135h2272v-531h-2903v4666z\"/><path id=\"DejaVuSans-65\" transform=\"scale(.015625)\" d=\"m3597 1894v-281h-2644q38-594 358-905t892-311q331 0 642 81t618 244v-544q-310-131-635-200t-659-69q-838 0-1327 487-489 488-489 1320 0 859 464 1363 464 505 1252 505 706 0 1117-455 411-454 411-1235zm-575 169q-6 471-264 752-258 282-683 282-481 0-770-272t-333-766l2050 4z\"/><path id=\"DejaVuSans-76\" transform=\"scale(.015625)\" d=\"m191 3500h609l1094-2937 1094 2937h609l-1313-3500h-781l-1312 3500z\"/><path id=\"DejaVuSans-6c\" transform=\"scale(.015625)\" d=\"m603 4863h575v-4863h-575v4863z\"/></defs><use xlink:href=\"#DejaVuSans-4f\"/><use x=\"78.710938\" xlink:href=\"#DejaVuSans-70\"/><use x=\"142.1875\" xlink:href=\"#DejaVuSans-74\"/><use x=\"181.396484\" xlink:href=\"#DejaVuSans-69\"/><use x=\"209.179688\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"306.591797\" xlink:href=\"#DejaVuSans-69\"/><use x=\"334.375\" xlink:href=\"#DejaVuSans-7a\"/><use x=\"386.865234\" xlink:href=\"#DejaVuSans-61\"/><use x=\"448.144531\" xlink:href=\"#DejaVuSans-74\"/><use x=\"487.353516\" xlink:href=\"#DejaVuSans-69\"/><use x=\"515.136719\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"576.318359\" xlink:href=\"#DejaVuSans-6e\"/><use x=\"639.697266\" xlink:href=\"#DejaVuSans-20\"/><use x=\"671.484375\" xlink:href=\"#DejaVuSans-4c\"/><use x=\"725.447266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"786.970703\" xlink:href=\"#DejaVuSans-76\"/><use x=\"846.150391\" xlink:href=\"#DejaVuSans-65\"/><use x=\"907.673828\" xlink:href=\"#DejaVuSans-6c\"/></g><defs><path id=\"ce54bc111a2\" d=\"m0 0h-3.5\" stroke=\"#343a3f\" stroke-width=\".8\"/></defs><use x=\"40.603125\" y=\"131.678125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(27.241 135.48) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"99.130506\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 102.93) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-32\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"66.582887\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 70.382) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-34\" transform=\"scale(.015625)\" d=\"m2419 4116-1594-2491h1594v2491zm-166 550h794v-3041h666v-525h-666v-1100h-628v1100h-2106v609l1940 2957z\"/></defs><use xlink:href=\"#DejaVuSans-34\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"34.035268\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 37.834) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-36\" transform=\"scale(.015625)\" d=\"m2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154-425-434-1131-434-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z\"/></defs><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><g transform=\"translate(14.798 92.228) rotate(-90) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-44\" transform=\"scale(.015625)\" d=\"m1259 4147v-3628h763q966 0 1414 437 448 438 448 1382 0 937-448 1373t-1414 436h-763zm-631 519h1297q1356 0 1990-564 635-564 635-1764 0-1207-638-1773-637-565-1987-565h-1297v4666z\"/><path id=\"DejaVuSans-68\" transform=\"scale(.015625)\" d=\"m3513 2113v-2113h-575v2094q0 497-194 743-194 247-581 247-466 0-735-297-269-296-269-809v-1978h-578v4863h578v-1907q207 316 486 472 280 156 646 156 603 0 912-373 310-373 310-1098z\"/></defs><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-70\"/><use x=\"202.001953\" xlink:href=\"#DejaVuSans-74\"/><use x=\"241.210938\" xlink:href=\"#DejaVuSans-68\"/></g><path d=\"m40.603 131.68v-109.36\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><path d=\"m40.603 131.68h405.43\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><g transform=\"translate(181.08 16.318) scale(.12 -.12)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-75\" transform=\"scale(.015625)\" d=\"m544 1381v2119h575v-2097q0-497 193-746 194-248 582-248 465 0 735 297 271 297 271 810v1984h575v-3500h-575v538q-209-319-486-474-276-155-642-155-603 0-916 375-312 375-312 1097zm1447 2203z\"/><path id=\"DejaVuSans-43\" transform=\"scale(.015625)\" d=\"m4122 4306v-665q-319 297-680 443-361 147-767 147-800 0-1225-489t-425-1414q0-922 425-1411t1225-489q406 0 767 147t680 444v-660q-331-225-702-338-370-112-782-112-1060 0-1670 648-609 649-609 1771 0 1125 609 1773 610 649 1670 649 418 0 788-111 371-111 696-333z\"/><path id=\"DejaVuSans-72\" transform=\"scale(.015625)\" d=\"m2631 2963q-97 56-211 82-114 27-251 27-488 0-749-317t-261-911v-1844h-578v3500h578v-544q182 319 472 473 291 155 707 155 59 0 131-8 72-7 159-23l3-590z\"/><path id=\"DejaVuSans-63\" transform=\"scale(.015625)\" d=\"m3122 3366v-538q-244 135-489 202t-495 67q-560 0-870-355-309-354-309-995t309-996q310-354 870-354 250 0 495 67t489 202v-532q-241-112-499-168-257-57-548-57-791 0-1257 497-465 497-465 1341 0 856 470 1346 471 491 1290 491 265 0 518-55 253-54 491-163z\"/></defs><use xlink:href=\"#DejaVuSans-4f\"/><use x=\"78.710938\" xlink:href=\"#DejaVuSans-75\"/><use x=\"142.089844\" xlink:href=\"#DejaVuSans-74\"/><use x=\"181.298828\" xlink:href=\"#DejaVuSans-70\"/><use x=\"244.775391\" xlink:href=\"#DejaVuSans-75\"/><use x=\"308.154297\" xlink:href=\"#DejaVuSans-74\"/><use x=\"347.363281\" xlink:href=\"#DejaVuSans-20\"/><use x=\"379.150391\" xlink:href=\"#DejaVuSans-43\"/><use x=\"448.974609\" xlink:href=\"#DejaVuSans-69\"/><use x=\"476.757812\" xlink:href=\"#DejaVuSans-72\"/><use x=\"515.621094\" xlink:href=\"#DejaVuSans-63\"/><use x=\"570.601562\" xlink:href=\"#DejaVuSans-75\"/><use x=\"633.980469\" xlink:href=\"#DejaVuSans-69\"/><use x=\"661.763672\" xlink:href=\"#DejaVuSans-74\"/><use x=\"700.972656\" xlink:href=\"#DejaVuSans-20\"/><use x=\"732.759766\" xlink:href=\"#DejaVuSans-44\"/><use x=\"809.761719\" xlink:href=\"#DejaVuSans-65\"/><use x=\"871.285156\" xlink:href=\"#DejaVuSans-70\"/><use x=\"934.761719\" xlink:href=\"#DejaVuSans-74\"/><use x=\"973.970703\" xlink:href=\"#DejaVuSans-68\"/></g><path d=\"m40.603 299.08h405.43v-109.36h-405.43z\" fill=\"#ffffff\"/><path d=\"m59.032 299.08h77.594v-104.15h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#1192e8\"/><path d=\"m156.02 299.08h77.594v-58.132h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#1192e8\"/><path d=\"m253.02 299.08h77.594v-61.765h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#1192e8\"/><path d=\"m350.01 299.08h77.594v-72.664h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#1192e8\"/><path d=\"m59.032 299.08h77.594v-100.52h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#6929c4\"/><path d=\"m156.02 299.08h77.594v-54.498h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#6929c4\"/><path d=\"m253.02 299.08h77.594v-46.021h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#6929c4\"/><path d=\"m350.01 299.08h77.594v-42.388h-77.594z\" clip-path=\"url(#0c6ada6d7fd)\" fill=\"#6929c4\"/><use x=\"97.828891\" y=\"299.078125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(94.648 313.68) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-30\"/></g><use x=\"194.821714\" y=\"299.078125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(191.64 313.68) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-31\"/></g><use x=\"291.814536\" y=\"299.078125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(288.63 313.68) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-32\"/></g><use x=\"388.807359\" y=\"299.078125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#89778018b64\"/><g transform=\"translate(385.63 313.68) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-33\"/></g><g transform=\"translate(196.54 327.35) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-4f\"/><use x=\"78.710938\" xlink:href=\"#DejaVuSans-70\"/><use x=\"142.1875\" xlink:href=\"#DejaVuSans-74\"/><use x=\"181.396484\" xlink:href=\"#DejaVuSans-69\"/><use x=\"209.179688\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"306.591797\" xlink:href=\"#DejaVuSans-69\"/><use x=\"334.375\" xlink:href=\"#DejaVuSans-7a\"/><use x=\"386.865234\" xlink:href=\"#DejaVuSans-61\"/><use x=\"448.144531\" xlink:href=\"#DejaVuSans-74\"/><use x=\"487.353516\" xlink:href=\"#DejaVuSans-69\"/><use x=\"515.136719\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"576.318359\" xlink:href=\"#DejaVuSans-6e\"/><use x=\"639.697266\" xlink:href=\"#DejaVuSans-20\"/><use x=\"671.484375\" xlink:href=\"#DejaVuSans-4c\"/><use x=\"725.447266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"786.970703\" xlink:href=\"#DejaVuSans-76\"/><use x=\"846.150391\" xlink:href=\"#DejaVuSans-65\"/><use x=\"907.673828\" xlink:href=\"#DejaVuSans-6c\"/></g><use x=\"40.603125\" y=\"299.078125\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(27.241 302.88) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"274.856641\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 278.66) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-32\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"250.635157\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 254.43) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-34\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"226.413673\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 230.21) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-36\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><use x=\"40.603125\" y=\"202.192189\" fill=\"#343a3f\" stroke=\"#343a3f\" stroke-width=\".8\" xlink:href=\"#ce54bc111a2\"/><g transform=\"translate(20.878 205.99) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-38\" transform=\"scale(.015625)\" d=\"m2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042-414-362-1186-362-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z\"/></defs><use xlink:href=\"#DejaVuSans-38\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/></g><g transform=\"translate(14.798 286.36) rotate(-90) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-4e\" transform=\"scale(.015625)\" d=\"m628 4666h850l2069-3903v3903h612v-4666h-850l-2068 3903v-3903h-613v4666z\"/><path id=\"DejaVuSans-62\" transform=\"scale(.015625)\" d=\"m3116 1747q0 634-261 995t-717 361q-457 0-718-361t-261-995 261-995 718-361q456 0 717 361t261 995zm-1957 1222q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331t-399-1332q-398-506-1036-506-384 0-661 152-276 152-458 464v-525h-578v4863h578v-1894z\"/><path id=\"DejaVuSans-66\" transform=\"scale(.015625)\" d=\"m2375 4863v-479h-550q-309 0-430-125-120-125-120-450v-309h947v-447h-947v-3053h-578v3053h-550v447h550v244q0 584 272 851 272 268 862 268h544z\"/><path id=\"DejaVuSans-67\" transform=\"scale(.015625)\" d=\"m2906 1791q0 625-258 968-257 344-723 344-462 0-720-344-258-343-258-968 0-622 258-966t720-344q466 0 723 344 258 344 258 966zm575-1357q0-893-397-1329-396-436-1215-436-303 0-572 45t-522 139v559q253-137 500-202 247-66 503-66 566 0 847 295t281 892v285q-178-310-456-463t-666-153q-643 0-1037 490-394 491-394 1301 0 812 394 1302 394 491 1037 491 388 0 666-153t456-462v531h575v-3066z\"/><path id=\"DejaVuSans-73\" transform=\"scale(.015625)\" d=\"m2834 3397v-544q-243 125-506 187-262 63-544 63-428 0-642-131t-214-394q0-200 153-314t616-217l197-44q612-131 870-370t258-667q0-488-386-773-386-284-1061-284-281 0-586 55t-642 164v594q319-166 628-249 309-82 613-82 406 0 624 139 219 139 219 392 0 234-158 359-157 125-692 241l-200 47q-534 112-772 345-237 233-237 639 0 494 350 762 350 269 994 269 318 0 599-47 282-46 519-140z\"/></defs><use xlink:href=\"#DejaVuSans-4e\"/><use x=\"74.804688\" xlink:href=\"#DejaVuSans-75\"/><use x=\"138.183594\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"235.595703\" xlink:href=\"#DejaVuSans-62\"/><use x=\"299.072266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"360.595703\" xlink:href=\"#DejaVuSans-72\"/><use x=\"401.708984\" xlink:href=\"#DejaVuSans-20\"/><use x=\"433.496094\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"494.677734\" xlink:href=\"#DejaVuSans-66\"/><use x=\"529.882812\" xlink:href=\"#DejaVuSans-20\"/><use x=\"561.669922\" xlink:href=\"#DejaVuSans-67\"/><use x=\"625.146484\" xlink:href=\"#DejaVuSans-61\"/><use x=\"686.425781\" xlink:href=\"#DejaVuSans-74\"/><use x=\"725.634766\" xlink:href=\"#DejaVuSans-65\"/><use x=\"787.158203\" xlink:href=\"#DejaVuSans-73\"/></g><path d=\"m40.603 299.08v-109.36\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><path d=\"m40.603 299.08h405.43\" fill=\"none\" stroke=\"#343a3f\" stroke-linecap=\"square\" stroke-width=\".8\"/><g transform=\"translate(150.94 183.72) scale(.12 -.12)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-4e\"/><use x=\"74.804688\" xlink:href=\"#DejaVuSans-75\"/><use x=\"138.183594\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"235.595703\" xlink:href=\"#DejaVuSans-62\"/><use x=\"299.072266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"360.595703\" xlink:href=\"#DejaVuSans-72\"/><use x=\"401.708984\" xlink:href=\"#DejaVuSans-20\"/><use x=\"433.496094\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"494.677734\" xlink:href=\"#DejaVuSans-66\"/><use x=\"529.882812\" xlink:href=\"#DejaVuSans-20\"/><use x=\"561.669922\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"622.851562\" xlink:href=\"#DejaVuSans-75\"/><use x=\"686.230469\" xlink:href=\"#DejaVuSans-74\"/><use x=\"725.439453\" xlink:href=\"#DejaVuSans-70\"/><use x=\"788.916016\" xlink:href=\"#DejaVuSans-75\"/><use x=\"852.294922\" xlink:href=\"#DejaVuSans-74\"/><use x=\"891.503906\" xlink:href=\"#DejaVuSans-20\"/><use x=\"923.291016\" xlink:href=\"#DejaVuSans-63\"/><use x=\"978.271484\" xlink:href=\"#DejaVuSans-69\"/><use x=\"1006.054688\" xlink:href=\"#DejaVuSans-72\"/><use x=\"1044.917969\" xlink:href=\"#DejaVuSans-63\"/><use x=\"1099.898438\" xlink:href=\"#DejaVuSans-75\"/><use x=\"1163.277344\" xlink:href=\"#DejaVuSans-69\"/><use x=\"1191.060547\" xlink:href=\"#DejaVuSans-74\"/><use x=\"1230.269531\" xlink:href=\"#DejaVuSans-20\"/><use x=\"1262.056641\" xlink:href=\"#DejaVuSans-67\"/><use x=\"1325.533203\" xlink:href=\"#DejaVuSans-61\"/><use x=\"1386.8125\" xlink:href=\"#DejaVuSans-74\"/><use x=\"1426.021484\" xlink:href=\"#DejaVuSans-65\"/><use x=\"1487.544922\" xlink:href=\"#DejaVuSans-73\"/></g><path d=\"m152.07 227.07h182.5v-32.356h-182.5z\" fill=\"#ffffff\" opacity=\".8\" stroke=\"#cccccc\"/><path d=\"m156.07 206.32h20v-7h-20z\" fill=\"#1192e8\"/><g transform=\"translate(184.07 206.32) scale(.1 -.1)\" fill=\"#343a3f\"><use xlink:href=\"#DejaVuSans-4e\"/><use x=\"74.804688\" xlink:href=\"#DejaVuSans-75\"/><use x=\"138.183594\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"235.595703\" xlink:href=\"#DejaVuSans-62\"/><use x=\"299.072266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"360.595703\" xlink:href=\"#DejaVuSans-72\"/><use x=\"401.708984\" xlink:href=\"#DejaVuSans-20\"/><use x=\"433.496094\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"494.677734\" xlink:href=\"#DejaVuSans-66\"/><use x=\"529.882812\" xlink:href=\"#DejaVuSans-20\"/><use x=\"561.669922\" xlink:href=\"#DejaVuSans-43\"/><use x=\"631.494141\" xlink:href=\"#DejaVuSans-69\"/><use x=\"659.277344\" xlink:href=\"#DejaVuSans-72\"/><use x=\"698.140625\" xlink:href=\"#DejaVuSans-63\"/><use x=\"753.121094\" xlink:href=\"#DejaVuSans-75\"/><use x=\"816.5\" xlink:href=\"#DejaVuSans-69\"/><use x=\"844.283203\" xlink:href=\"#DejaVuSans-74\"/><use x=\"883.492188\" xlink:href=\"#DejaVuSans-20\"/><use x=\"915.279297\" xlink:href=\"#DejaVuSans-4f\"/><use x=\"993.990234\" xlink:href=\"#DejaVuSans-70\"/><use x=\"1057.466797\" xlink:href=\"#DejaVuSans-65\"/><use x=\"1118.990234\" xlink:href=\"#DejaVuSans-72\"/><use x=\"1160.103516\" xlink:href=\"#DejaVuSans-61\"/><use x=\"1221.382812\" xlink:href=\"#DejaVuSans-74\"/><use x=\"1260.591797\" xlink:href=\"#DejaVuSans-69\"/><use x=\"1288.375\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"1349.556641\" xlink:href=\"#DejaVuSans-6e\"/><use x=\"1412.935547\" xlink:href=\"#DejaVuSans-73\"/></g><path d=\"m156.07 220.99h20v-7h-20z\" fill=\"#6929c4\"/><g transform=\"translate(184.07 220.99) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-58\" transform=\"scale(.015625)\" d=\"m403 4666h678l1160-1735 1165 1735h678l-1500-2241 1600-2425h-678l-1312 1984-1322-1984h-681l1665 2491-1453 2175z\"/></defs><use xlink:href=\"#DejaVuSans-4e\"/><use x=\"74.804688\" xlink:href=\"#DejaVuSans-75\"/><use x=\"138.183594\" xlink:href=\"#DejaVuSans-6d\"/><use x=\"235.595703\" xlink:href=\"#DejaVuSans-62\"/><use x=\"299.072266\" xlink:href=\"#DejaVuSans-65\"/><use x=\"360.595703\" xlink:href=\"#DejaVuSans-72\"/><use x=\"401.708984\" xlink:href=\"#DejaVuSans-20\"/><use x=\"433.496094\" xlink:href=\"#DejaVuSans-6f\"/><use x=\"494.677734\" xlink:href=\"#DejaVuSans-66\"/><use x=\"529.882812\" xlink:href=\"#DejaVuSans-20\"/><use x=\"561.669922\" xlink:href=\"#DejaVuSans-43\"/><use x=\"631.494141\" xlink:href=\"#DejaVuSans-58\"/><use x=\"700\" xlink:href=\"#DejaVuSans-20\"/><use x=\"731.787109\" xlink:href=\"#DejaVuSans-67\"/><use x=\"795.263672\" xlink:href=\"#DejaVuSans-61\"/><use x=\"856.542969\" xlink:href=\"#DejaVuSans-74\"/><use x=\"895.751953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"957.275391\" xlink:href=\"#DejaVuSans-73\"/></g><defs><clipPath id=\"54365b9dc9d\"><rect x=\"40.603\" y=\"22.318\" width=\"405.43\" height=\"109.36\"/></clipPath><clipPath id=\"0c6ada6d7fd\"><rect x=\"40.603\" y=\"189.72\" width=\"405.43\" height=\"109.36\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"ghz = QuantumCircuit(15)\n",
|
|
"ghz.h(0)\n",
|
|
"ghz.cx(0, range(1, 15))\n",
|
|
"\n",
|
|
"depths = []\n",
|
|
"gate_counts = []\n",
|
|
"multiqubit_gate_counts = []\n",
|
|
"levels = [str(x) for x in range(4)]\n",
|
|
"for level in range(4):\n",
|
|
" pass_manager = generate_preset_pass_manager(\n",
|
|
" optimization_level=level,\n",
|
|
" backend=backend,\n",
|
|
" )\n",
|
|
" circ = pass_manager.run(ghz)\n",
|
|
" depths.append(circ.depth())\n",
|
|
" gate_counts.append(sum(circ.count_ops().values()))\n",
|
|
" multiqubit_gate_counts.append(circ.count_ops()[\"cx\"])\n",
|
|
"\n",
|
|
"fig, (ax1, ax2) = plt.subplots(2, 1)\n",
|
|
"ax1.bar(levels, depths, label=\"Depth\")\n",
|
|
"ax1.set_xlabel(\"Optimization Level\")\n",
|
|
"ax1.set_ylabel(\"Depth\")\n",
|
|
"ax1.set_title(\"Output Circuit Depth\")\n",
|
|
"ax2.bar(levels, gate_counts, label=\"Number of Circuit Operations\")\n",
|
|
"ax2.bar(levels, multiqubit_gate_counts, label=\"Number of CX gates\")\n",
|
|
"ax2.set_xlabel(\"Optimization Level\")\n",
|
|
"ax2.set_ylabel(\"Number of gates\")\n",
|
|
"ax2.legend()\n",
|
|
"ax2.set_title(\"Number of output circuit gates\")\n",
|
|
"fig.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "997073d0-0d92-40a8-8152-2ffc2e45884f",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Scheduling\n",
|
|
"\n",
|
|
"This last stage is only run if it is explicitly called for (similar to the Init stage) and does not run by default (though a method can be specified by setting the `scheduling_method` argument when calling `generate_preset_pass_manager`). The scheduling stage is typically used once the circuit has been translated to the target basis, mapped to the device, and optimized. These passes focus on accounting for all the idle time in a circuit. At a high level, the scheduling pass can be thought of as explicitly inserting delay instructions to account for the idle time between gate executions and to inspect how long the circuit will be running on the backend.\n",
|
|
"\n",
|
|
"Here is an example:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "4339deb5-4947-493b-8940-e68c91311631",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/svg+xml": [
|
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg width=\"723.11pt\" height=\"272.31pt\" version=\"1.1\" viewBox=\"0 0 723.11 272.31\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><defs><style type=\"text/css\">*{stroke-linejoin: round; stroke-linecap: butt}</style></defs><path d=\"m0 272.31h723.11v-272.31h-723.11z\" fill=\"#ffffff\"/><path d=\"m104.04 51.882h607.24\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m104.04 98.236h607.24\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m104.04 144.59h607.24\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m104.04 190.94h607.24\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m104.04 237.3h607.24\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#000000\" stroke-linecap=\"square\" stroke-width=\"2\"/><g transform=\"translate(7.2 14.798) scale(.1 -.1)\" fill=\"#343a3f\"><defs><path id=\"DejaVuSans-47\" transform=\"scale(.015625)\" d=\"m3809 666v1253h-1031v519h1656v-2004q-365-259-806-392-440-133-940-133-1094 0-1712 639-617 640-617 1780 0 1144 617 1783 618 639 1712 639 456 0 867-113 411-112 758-331v-672q-350 297-744 447t-828 150q-857 0-1287-478-429-478-429-1425 0-944 429-1422 430-478 1287-478 334 0 596 58 263 58 472 180z\"/><path id=\"DejaVuSans-6c\" transform=\"scale(.015625)\" d=\"m603 4863h575v-4863h-575v4863z\"/><path id=\"DejaVuSans-6f\" transform=\"scale(.015625)\" d=\"m1959 3097q-462 0-731-361t-269-989 267-989q268-361 733-361 460 0 728 362 269 363 269 988 0 622-269 986-268 364-728 364zm0 487q750 0 1178-488 429-487 429-1349 0-859-429-1349-428-489-1178-489-753 0-1180 489-426 490-426 1349 0 862 426 1349 427 488 1180 488z\"/><path id=\"DejaVuSans-62\" transform=\"scale(.015625)\" d=\"m3116 1747q0 634-261 995t-717 361q-457 0-718-361t-261-995 261-995 718-361q456 0 717 361t261 995zm-1957 1222q182 312 458 463 277 152 661 152 638 0 1036-506 399-506 399-1331t-399-1332q-398-506-1036-506-384 0-661 152-276 152-458 464v-525h-578v4863h578v-1894z\"/><path id=\"DejaVuSans-61\" transform=\"scale(.015625)\" d=\"m2194 1759q-697 0-966-159t-269-544q0-306 202-486 202-179 548-179 479 0 768 339t289 901v128h-572zm1147 238v-1997h-575v531q-197-318-491-470t-719-152q-537 0-855 302-317 302-317 808 0 590 395 890 396 300 1180 300h807v57q0 397-261 614t-733 217q-300 0-585-72-284-72-546-216v532q315 122 612 182 297 61 578 61 760 0 1135-394 375-393 375-1193z\"/><path id=\"DejaVuSans-50\" transform=\"scale(.015625)\" d=\"m1259 4147v-1753h794q441 0 681 228 241 228 241 650 0 419-241 647-240 228-681 228h-794zm-631 519h1425q785 0 1186-355 402-355 402-1039 0-691-402-1044-401-353-1186-353h-794v-1875h-631v4666z\"/><path id=\"DejaVuSans-68\" transform=\"scale(.015625)\" d=\"m3513 2113v-2113h-575v2094q0 497-194 743-194 247-581 247-466 0-735-297-269-296-269-809v-1978h-578v4863h578v-1907q207 316 486 472 280 156 646 156 603 0 912-373 310-373 310-1098z\"/><path id=\"DejaVuSans-73\" transform=\"scale(.015625)\" d=\"m2834 3397v-544q-243 125-506 187-262 63-544 63-428 0-642-131t-214-394q0-200 153-314t616-217l197-44q612-131 870-370t258-667q0-488-386-773-386-284-1061-284-281 0-586 55t-642 164v594q319-166 628-249 309-82 613-82 406 0 624 139 219 139 219 392 0 234-158 359-157 125-692 241l-200 47q-534 112-772 345-237 233-237 639 0 494 350 762 350 269 994 269 318 0 599-47 282-46 519-140z\"/><path id=\"DejaVuSans-65\" transform=\"scale(.015625)\" d=\"m3597 1894v-281h-2644q38-594 358-905t892-311q331 0 642 81t618 244v-544q-310-131-635-200t-659-69q-838 0-1327 487-489 488-489 1320 0 859 464 1363 464 505 1252 505 706 0 1117-455 411-454 411-1235zm-575 169q-6 471-264 752-258 282-683 282-481 0-770-272t-333-766l2050 4z\"/><path id=\"DejaVuSans-3a\" transform=\"scale(.015625)\" d=\"m750 794h659v-794h-659v794zm0 2515h659v-793h-659v793z\"/><path id=\"DejaVuSans-Oblique-3c0\" transform=\"scale(.015625)\" d=\"m584 3500h3354l-113-575h-441l-418-2150q-44-225 15-325 57-97 228-97 47 0 116 10 72 6 94 9l-81-416q-116-40-235-59-122-19-237-19-375 0-478 203-104 207 3 757l406 2087h-1291l-568-2925h-588l569 2925h-447l112 575z\"/><path id=\"DejaVuSans-2f\" transform=\"scale(.015625)\" d=\"m1625 4666h531l-1625-5260h-531l1625 5260z\"/><path id=\"DejaVuSans-34\" transform=\"scale(.015625)\" d=\"m2419 4116-1594-2491h1594v2491zm-166 550h794v-3041h666v-525h-666v-1100h-628v1100h-2106v609l1940 2957z\"/></defs><use transform=\"translate(0 .015625)\" xlink:href=\"#DejaVuSans-47\"/><use transform=\"translate(77.49 .015625)\" xlink:href=\"#DejaVuSans-6c\"/><use transform=\"translate(105.27 .015625)\" xlink:href=\"#DejaVuSans-6f\"/><use transform=\"translate(166.46 .015625)\" xlink:href=\"#DejaVuSans-62\"/><use transform=\"translate(229.93 .015625)\" xlink:href=\"#DejaVuSans-61\"/><use transform=\"translate(291.21 .015625)\" xlink:href=\"#DejaVuSans-6c\"/><use transform=\"translate(318.99 .015625)\" xlink:href=\"#DejaVuSans-20\"/><use transform=\"translate(350.78 .015625)\" xlink:href=\"#DejaVuSans-50\"/><use transform=\"translate(411.08 .015625)\" xlink:href=\"#DejaVuSans-68\"/><use transform=\"translate(474.46 .015625)\" xlink:href=\"#DejaVuSans-61\"/><use transform=\"translate(535.74 .015625)\" xlink:href=\"#DejaVuSans-73\"/><use transform=\"translate(587.84 .015625)\" xlink:href=\"#DejaVuSans-65\"/><use transform=\"translate(649.37 .015625)\" xlink:href=\"#DejaVuSans-3a\"/><use transform=\"translate(683.06 .015625)\" xlink:href=\"#DejaVuSans-20\"/><use transform=\"translate(714.84 .015625)\" xlink:href=\"#DejaVuSans-Oblique-3c0\"/><use transform=\"translate(775.05 .015625)\" xlink:href=\"#DejaVuSans-2f\"/><use transform=\"translate(808.74 .015625)\" xlink:href=\"#DejaVuSans-34\"/></g><path d=\"m99.4 28.705h-1158.8v278.12h1158.8z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#ffffff\" stroke=\"#ffffff\" stroke-width=\"1.5\"/><path d=\"m314.48 144.59v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m360.84 190.94v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m407.19 190.94v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m453.54 190.94v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m523.08 144.59v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m638.96 237.3v-139.06\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m685.31 98.236v-46.354\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#002d9c\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m130.7 66.947h43.081v-30.13h-43.081z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m137.18 113.3h30.13v-30.13h-30.13z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m132.21 159.65h40.073v-30.13h-40.073z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m132.21 206.01h40.073v-30.13h-40.073z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m130.7 252.36h43.081v-30.13h-43.081z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m206.71 113.3h30.13v-30.13h-30.13z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m253.06 113.3h30.13v-30.13h-30.13z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#33b1ff\" stroke=\"#33b1ff\" stroke-width=\"1.5\"/><path d=\"m314.48 102.76c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m314.48 155.14c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m340.8 113.3h40.073v-30.13h-40.073z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m360.84 195.46c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m360.84 155.14c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m407.19 149.11c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m407.19 201.49c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m453.54 195.46c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m453.54 155.14c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m523.08 102.76c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958s1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m523.08 155.14c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m501.68 206.01h42.789v-30.13h-42.789z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m572.57 159.65h40.073v-30.13h-40.073z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m638.96 102.76c1.1986 0 2.3482-0.4762 3.1958-1.3237 0.84753-0.84753 1.3237-1.9972 1.3237-3.1958 0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237s-2.3482 0.4762-3.1958 1.3237c-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m638.96 247.84c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568 0-2.7967-1.1111-5.4792-3.0887-7.4568-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887s-5.4792 1.1111-7.4568 3.0887c-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568 0 2.7967 1.1111 5.4792 3.0887 7.4568 1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m685.31 102.76c1.1986 0 2.3482-0.4762 3.1958-1.3237s1.3237-1.9972 1.3237-3.1958c0-1.1986-0.4762-2.3482-1.3237-3.1958-0.84753-0.84753-1.9972-1.3237-3.1958-1.3237-1.1986 0-2.3482 0.4762-3.1958 1.3237-0.84753 0.84753-1.3237 1.9972-1.3237 3.1958 0 1.1986 0.4762 2.3482 1.3237 3.1958 0.84753 0.84753 1.9972 1.3237 3.1958 1.3237z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"1.5\"/><path d=\"m685.31 62.427c2.7967 0 5.4792-1.1111 7.4568-3.0887 1.9776-1.9776 3.0887-4.6601 3.0887-7.4568s-1.1111-5.4792-3.0887-7.4568c-1.9776-1.9776-4.6601-3.0887-7.4568-3.0887-2.7967 0-5.4792 1.1111-7.4568 3.0887-1.9776 1.9776-3.0887 4.6601-3.0887 7.4568s1.1111 5.4792 3.0887 7.4568c1.9776 1.9776 4.6601 3.0887 7.4568 3.0887z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#002d9c\" stroke=\"#002d9c\" stroke-width=\"2\"/><path d=\"m665.28 252.36h40.073v-30.13h-40.073z\" clip-path=\"url(#b573b9c6a05)\" fill=\"#9f1853\" stroke=\"#9f1853\" stroke-width=\"1.5\"/><path d=\"m314.48 150.62v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m308.46 144.59h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m360.84 150.62v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m354.81 144.59h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m407.19 196.97v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m401.16 190.94h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m453.54 150.62v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m447.52 144.59h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m523.08 150.62v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m517.05 144.59h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m638.96 243.32v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m632.93 237.3h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m685.31 57.908v-12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><path d=\"m679.29 51.882h12.052\" clip-path=\"url(#b573b9c6a05)\" fill=\"none\" stroke=\"#ffffff\" stroke-linecap=\"square\" stroke-width=\"2\"/><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(27.327 56.333) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-Oblique-71\" transform=\"scale(.015625)\" d=\"m2669 525q-231-303-546-460-314-156-695-156-531 0-833 358-301 358-301 986 0 506 186 978t533 847q225 244 517 375t614 131q387 0 637-153t363-462l100 525h578l-934-4813h-579l360 1844zm-1778 813q0-463 193-705 194-242 560-242 544 0 928 520t384 1264q0 450-199 689-198 239-569 239-272 0-504-127-231-126-403-370-181-256-286-600-104-343-104-668z\"/><path id=\"DejaVuSans-21a6\" transform=\"scale(.015625)\" d=\"m4175 1741h-3278v-1078h-531v2687h531v-1078h3278l-728 728 375 375 1228-1228v-281l-1228-1228-375 375 728 728z\"/><path id=\"DejaVuSans-32\" transform=\"scale(.015625)\" d=\"m1228 531h2203v-531h-2962v531q359 372 979 998 621 627 780 809 303 340 423 576 121 236 121 464 0 372-261 606-261 235-680 235-297 0-627-103-329-103-704-313v638q381 153 712 231 332 78 607 78 725 0 1156-363 431-362 431-968 0-288-108-546-107-257-392-607-78-91-497-524-418-433-1181-1211z\"/><path id=\"DejaVuSans-37\" transform=\"scale(.015625)\" d=\"m525 4666h3e3v-269l-1694-4397h-659l1594 4134h-2241v532z\"/></defs><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -15.625) scale(.7)\" xlink:href=\"#DejaVuSans-34\"/><use transform=\"translate(157.29 .78125)\" xlink:href=\"#DejaVuSans-21a6\"/><use transform=\"translate(287.62 .78125)\" xlink:href=\"#DejaVuSans-32\"/><use transform=\"translate(351.24 .78125)\" xlink:href=\"#DejaVuSans-37\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(27.327 102.69) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-30\" transform=\"scale(.015625)\" d=\"m2034 4250q-487 0-733-480-245-479-245-1442 0-959 245-1439 246-480 733-480 491 0 736 480 246 480 246 1439 0 963-246 1442-245 480-736 480zm0 500q785 0 1199-621 414-620 414-1801 0-1178-414-1799-414-620-1199-620-784 0-1198 620-414 621-414 1799 0 1181 414 1801 414 621 1198 621z\"/><path id=\"DejaVuSans-38\" transform=\"scale(.015625)\" d=\"m2034 2216q-450 0-708-241-257-241-257-662 0-422 257-663 258-241 708-241t709 242q260 243 260 662 0 421-258 662-257 241-711 241zm-631 268q-406 100-633 378-226 279-226 679 0 559 398 884 399 325 1092 325 697 0 1094-325t397-884q0-400-227-679-226-278-629-378 456-106 710-416 255-309 255-755 0-679-414-1042-414-362-1186-362-771 0-1186 362-414 363-414 1042 0 446 256 755 257 310 713 416zm-231 997q0-362 226-565 227-203 636-203 407 0 636 203 230 203 230 565 0 363-230 566-229 203-636 203-409 0-636-203-226-203-226-566z\"/></defs><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -15.625) scale(.7)\" xlink:href=\"#DejaVuSans-30\"/><use transform=\"translate(157.29 .78125)\" xlink:href=\"#DejaVuSans-21a6\"/><use transform=\"translate(287.62 .78125)\" xlink:href=\"#DejaVuSans-32\"/><use transform=\"translate(351.24 .78125)\" xlink:href=\"#DejaVuSans-38\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(27.489 149.04) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-31\" transform=\"scale(.015625)\" d=\"m794 531h1031v3560l-1122-225v575l1116 225h631v-4135h1031v-531h-2687v531z\"/><path id=\"DejaVuSans-39\" transform=\"scale(.015625)\" d=\"m703 97v575q238-113 481-172 244-59 479-59 625 0 954 420 330 420 377 1277-181-269-460-413-278-144-615-144-700 0-1108 423-408 424-408 1159 0 718 425 1152 425 435 1131 435 810 0 1236-621 427-620 427-1801 0-1103-524-1761-523-658-1407-658-238 0-482 47-243 47-506 141zm1256 1978q425 0 673 290 249 291 249 798 0 503-249 795-248 292-673 292t-673-292-248-795q0-507 248-798 248-290 673-290z\"/></defs><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -15.625) scale(.7)\" xlink:href=\"#DejaVuSans-31\"/><use transform=\"translate(157.29 .78125)\" xlink:href=\"#DejaVuSans-21a6\"/><use transform=\"translate(287.62 .78125)\" xlink:href=\"#DejaVuSans-32\"/><use transform=\"translate(349.49 .78125)\" xlink:href=\"#DejaVuSans-39\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(27.327 195.39) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-33\" transform=\"scale(.015625)\" d=\"m2597 2516q453-97 707-404 255-306 255-756 0-690-475-1069-475-378-1350-378-293 0-604 58t-642 174v609q262-153 574-231 313-78 654-78 593 0 904 234t311 681q0 413-289 645-289 233-804 233h-544v519h569q465 0 712 186t247 536q0 359-255 551-254 193-729 193-260 0-557-57-297-56-653-174v562q360 100 674 150t592 50q719 0 1137-327 419-326 419-882 0-388-222-655t-631-370z\"/></defs><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -15.625) scale(.7)\" xlink:href=\"#DejaVuSans-32\"/><use transform=\"translate(157.29 .78125)\" xlink:href=\"#DejaVuSans-21a6\"/><use transform=\"translate(287.62 .78125)\" xlink:href=\"#DejaVuSans-33\"/><use transform=\"translate(351.24 .78125)\" xlink:href=\"#DejaVuSans-30\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(27.327 241.75) scale(.1625 -.1625)\"><defs><path id=\"DejaVuSans-35\" transform=\"scale(.015625)\" d=\"m691 4666h2478v-532h-1900v-1143q137 47 274 70 138 23 276 23 781 0 1237-428 457-428 457-1159 0-753-469-1171-469-417-1322-417-294 0-599 50-304 50-629 150v635q281-153 581-228t634-75q541 0 856 284 316 284 316 772 0 487-316 771-315 285-856 285-253 0-505-56-251-56-513-175v2344z\"/></defs><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-71\"/><use transform=\"translate(63.477 -15.625) scale(.7)\" xlink:href=\"#DejaVuSans-33\"/><use transform=\"translate(157.29 .78125)\" xlink:href=\"#DejaVuSans-21a6\"/><use transform=\"translate(287.62 .78125)\" xlink:href=\"#DejaVuSans-33\"/><use transform=\"translate(351.24 .78125)\" xlink:href=\"#DejaVuSans-35\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(132.29 63.128) scale(.08 -.08)\" fill=\"#ffffff\"><defs><path id=\"DejaVuSans-36\" transform=\"scale(.015625)\" d=\"m2113 2584q-425 0-674-291-248-290-248-796 0-503 248-796 249-292 674-292t673 292q248 293 248 796 0 506-248 796-248 291-673 291zm1253 1979v-575q-238 112-480 171-242 60-480 60-625 0-955-422-329-422-376-1275 184 272 462 417 279 145 613 145 703 0 1111-427 408-426 408-1160 0-719-425-1154-425-434-1131-434-810 0-1238 620-428 621-428 1799 0 1106 525 1764t1409 658q238 0 480-47t505-140z\"/><path id=\"DejaVuSans-5b\" transform=\"scale(.015625)\" d=\"m550 4863h1325v-447h-750v-4813h750v-447h-1325v5707z\"/><path id=\"DejaVuSans-64\" transform=\"scale(.015625)\" d=\"m2906 2969v1894h575v-4863h-575v525q-181-312-458-464-276-152-664-152-634 0-1033 506-398 507-398 1332t398 1331q399 506 1033 506 388 0 664-152 277-151 458-463zm-1959-1222q0-634 261-995t717-361 718 361q263 361 263 995t-263 995q-262 361-718 361t-717-361-261-995z\"/><path id=\"DejaVuSans-74\" transform=\"scale(.015625)\" d=\"m1172 4494v-994h1184v-447h-1184v-1900q0-428 117-550t477-122h590v-481h-590q-666 0-919 248-253 249-253 905v1900h-422v447h422v994h578z\"/><path id=\"DejaVuSans-5d\" transform=\"scale(.015625)\" d=\"m1947 4863v-5707h-1325v447h747v4813h-747v447h1325z\"/></defs><use xlink:href=\"#DejaVuSans-31\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-36\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-39\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-32\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-38\"/><use x=\"318.115234\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"357.128906\" xlink:href=\"#DejaVuSans-64\"/><use x=\"420.605469\" xlink:href=\"#DejaVuSans-74\"/><use x=\"459.814453\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(133.6 50.949) scale(.13 -.13)\" fill=\"#ffffff\"><defs><path id=\"DejaVuSans-44\" transform=\"scale(.015625)\" d=\"m1259 4147v-3628h763q966 0 1414 437 448 438 448 1382 0 937-448 1373t-1414 436h-763zm-631 519h1297q1356 0 1990-564 635-564 635-1764 0-1207-638-1773-637-565-1987-565h-1297v4666z\"/><path id=\"DejaVuSans-79\" transform=\"scale(.015625)\" d=\"m2059-325q-243-625-475-815-231-191-618-191h-460v481h338q237 0 368 113 132 112 291 531l103 262-1415 3444h609l1094-2737 1094 2737h609l-1538-3825z\"/></defs><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(146.08 109.48) scale(.08 -.08)\"><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-3c0\"/><use transform=\"translate(60.205 .78125)\" xlink:href=\"#DejaVuSans-2f\"/><use transform=\"translate(90.271 .78125)\" xlink:href=\"#DejaVuSans-32\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(144.31 97.303) scale(.13 -.13)\"><defs><path id=\"DejaVuSans-52\" transform=\"scale(.015625)\" d=\"m2841 2188q203-69 395-294t386-619l641-1275h-679l-596 1197q-232 469-449 622t-592 153h-688v-1972h-631v4666h1425q800 0 1194-335 394-334 394-1009 0-441-205-732-205-290-595-402zm-1582 1959v-1656h794q456 0 689 211t233 620-233 617-689 208h-794z\"/><path id=\"DejaVuSans-5a\" transform=\"scale(.015625)\" d=\"m359 4666h3666v-482l-2950-3653h3022v-531h-3809v481l2950 3653h-2879v532z\"/></defs><use transform=\"translate(0 .09375)\" xlink:href=\"#DejaVuSans-52\"/><use transform=\"translate(70.439 -16.312) scale(.7)\" xlink:href=\"#DejaVuSans-5a\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(137.38 155.84) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-31\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-36\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"229.882812\" xlink:href=\"#DejaVuSans-64\"/><use x=\"293.359375\" xlink:href=\"#DejaVuSans-74\"/><use x=\"332.568359\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(133.6 143.66) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(134.83 202.19) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-32\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-31\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-36\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"293.505859\" xlink:href=\"#DejaVuSans-64\"/><use x=\"356.982422\" xlink:href=\"#DejaVuSans-74\"/><use x=\"396.191406\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(133.6 190.01) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(132.29 248.54) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-31\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-38\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-37\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-32\"/><use x=\"318.115234\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"357.128906\" xlink:href=\"#DejaVuSans-64\"/><use x=\"420.605469\" xlink:href=\"#DejaVuSans-74\"/><use x=\"459.814453\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(133.6 236.37) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(211.76 102.68) scale(.13 -.13)\" fill=\"#ffffff\"><defs><path id=\"STIXSizeOneSym-Regular-221a\" transform=\"scale(.015625)\" d=\"m6970 9933-3597-11821h-269l-1478 4806q-71 231-161 333-89 103-236 103-218 0-435-173l-77 128 1049 806h160l1453-4717h26l3200 10535h365z\"/><path id=\"DejaVuSans-58\" transform=\"scale(.015625)\" d=\"m403 4666h678l1160-1735 1165 1735h678l-1500-2241 1600-2425h-678l-1312 1984-1322-1984h-681l1665 2491-1453 2175z\"/></defs><use transform=\"translate(0 17.094) scale(.56391)\" xlink:href=\"#STIXSizeOneSym-Regular-221a\"/><use transform=\"translate(72.088 .84375)\" xlink:href=\"#DejaVuSans-58\"/><path d=\"m59.588 97.5v6.25h93.506v-6.25h-93.506z\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(261.97 109.48) scale(.08 -.08)\"><use transform=\"translate(0 .78125)\" xlink:href=\"#DejaVuSans-Oblique-3c0\"/><use transform=\"translate(60.205 .78125)\" xlink:href=\"#DejaVuSans-2f\"/><use transform=\"translate(90.271 .78125)\" xlink:href=\"#DejaVuSans-32\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(260.2 97.303) scale(.13 -.13)\"><use transform=\"translate(0 .09375)\" xlink:href=\"#DejaVuSans-52\"/><use transform=\"translate(70.439 -16.312) scale(.7)\" xlink:href=\"#DejaVuSans-5a\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(343.43 109.48) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-38\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-30\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"293.505859\" xlink:href=\"#DejaVuSans-64\"/><use x=\"356.982422\" xlink:href=\"#DejaVuSans-74\"/><use x=\"396.191406\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(342.2 97.303) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(503.12 202.19) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-31\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-31\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-36\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-31\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-36\"/><use x=\"318.115234\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"357.128906\" xlink:href=\"#DejaVuSans-64\"/><use x=\"420.605469\" xlink:href=\"#DejaVuSans-74\"/><use x=\"459.814453\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(504.43 190.01) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(575.2 155.84) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-39\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-37\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-36\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-30\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"293.505859\" xlink:href=\"#DejaVuSans-64\"/><use x=\"356.982422\" xlink:href=\"#DejaVuSans-74\"/><use x=\"396.191406\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(573.97 143.66) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(667.91 248.54) scale(.08 -.08)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-34\"/><use x=\"63.623047\" xlink:href=\"#DejaVuSans-37\"/><use x=\"127.246094\" xlink:href=\"#DejaVuSans-30\"/><use x=\"190.869141\" xlink:href=\"#DejaVuSans-34\"/><use x=\"254.492188\" xlink:href=\"#DejaVuSans-5b\"/><use x=\"293.505859\" xlink:href=\"#DejaVuSans-64\"/><use x=\"356.982422\" xlink:href=\"#DejaVuSans-74\"/><use x=\"396.191406\" xlink:href=\"#DejaVuSans-5d\"/></g></g><g clip-path=\"url(#b573b9c6a05)\"><g transform=\"translate(666.67 236.37) scale(.13 -.13)\" fill=\"#ffffff\"><use xlink:href=\"#DejaVuSans-44\"/><use x=\"77.001953\" xlink:href=\"#DejaVuSans-65\"/><use x=\"138.525391\" xlink:href=\"#DejaVuSans-6c\"/><use x=\"166.308594\" xlink:href=\"#DejaVuSans-61\"/><use x=\"227.587891\" xlink:href=\"#DejaVuSans-79\"/></g></g><defs><clipPath id=\"b573b9c6a05\"><rect x=\"7.2\" y=\"14.798\" width=\"708.71\" height=\"250.31\"/></clipPath></defs></svg>"
|
|
],
|
|
"text/plain": [
|
|
"<Figure size 1278.33x451.5 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"ghz = QuantumCircuit(5)\n",
|
|
"ghz.h(0)\n",
|
|
"ghz.cx(0, range(1, 5))\n",
|
|
"\n",
|
|
"\n",
|
|
"# Use fake pulse-enabled backend\n",
|
|
"backend = FakeWashingtonV2()\n",
|
|
"\n",
|
|
"# Run with optimization level 3 and 'asap' scheduling pass\n",
|
|
"pass_manager = generate_preset_pass_manager(\n",
|
|
" optimization_level=3,\n",
|
|
" backend=backend,\n",
|
|
" timing_constraints=backend.target.timing_constraints(),\n",
|
|
" scheduling_method=\"asap\",\n",
|
|
")\n",
|
|
"\n",
|
|
"\n",
|
|
"circ = pass_manager.run(ghz, backend)\n",
|
|
"circ.draw(output=\"mpl\", idle_wires=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "98748e38-8d7a-40b5-9376-9dae7c192ef0",
|
|
"metadata": {},
|
|
"source": [
|
|
"![Circuit with delay instructions](/images/guides/transpiler-16.png)\n",
|
|
"\n",
|
|
"The transpiler inserted `Delay` instructions to account for idle time on each qubit. To get a better idea of the timing of the circuit we can also look at it with the `timeline.draw()` function:\n",
|
|
"\n",
|
|
"![timeline.draw() view of the same circuit](/images/guides/transpiler-17.png)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b4c40470-e0cf-4b55-bb51-5ef39bd3dd52",
|
|
"metadata": {},
|
|
"source": [
|
|
"Scheduling a circuit involves two parts: analysis and constraint mapping, followed by a padding pass. The first part requires running a scheduling analysis pass (by default this is [`ALAPSchedulingAnalysis`](../api/qiskit/qiskit.transpiler.passes.ALAPScheduleAnalysis)), which analyzes the circuit and records the start time of each instruction in the circuit into a schedule. Once the circuit has an initial schedule, additional passes can be run to account for any timing constraints on the target backend. Finally, a padding pass such as [`PadDelay`](../api/qiskit/qiskit.transpiler.passes.PadDelay) or [`PadDynamicalDecoupling`](../api/qiskit/qiskit.transpiler.passes.PadDynamicalDecoupling) can be executed."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bdba6aa3-18fd-4eda-8bcf-adc1c172438c",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Next steps\n",
|
|
"\n",
|
|
"<Admonition type=\"tip\" title=\"Recommendations\">\n",
|
|
" - To learn how to use the `generate_preset_passmanager` function, start with the [Transpilation default settings and configuration options](defaults-and-configuration-options) topic.\n",
|
|
" - Continue learning about transpilation with the [Transpiler with pass managers](transpile-with-pass-managers) topic.\n",
|
|
" - Try the [Submit transpiled circuits](https://learning.quantum.ibm.com/tutorial/submit-transpiled-circuits) tutorial.\n",
|
|
" - See the [Transpile API documentation.](https://docs.quantum-computing.ibm.com/api/qiskit/transpiler)\n",
|
|
"</Admonition>"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"celltoolbar": "Raw Cell Format",
|
|
"description": "The default stages of the quantum circuit transpilation pipeline in Qiskit.",
|
|
"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": "Transpiler stages",
|
|
"widgets": {
|
|
"application/vnd.jupyter.widget-state+json": {
|
|
"state": {},
|
|
"version_major": 2,
|
|
"version_minor": 0
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|