{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"Note: Trusted Notebook\" width=\"500 px\" align=\"left\">" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Introducing the Qiskit Transpiler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this notebook we introduce the Qiskit transpiler and walk through some examples of circuit transformations using **transpiler passes**.\n", "\n", "The transpiler is Qiskit's circuit rewriting framework. We do not call it a \"compiler\" on purpose, since we use compiler in the context of a larger translation from high level applications (potentially many circuits, with classical control flow between them) down to the level of machine pulses. The transpiler, in contrast, is responsible only for circuit-level analysis and transformations.\n", "\n", "Circuits are a fundamental and universal model of computation on quantum computers. In the Noisy Intermediate-Scale Quantum (NISQ) regime, we are always limited by the scarcity of quantum resources. The transpiler is a tool that helps us reduce the number of gates and qubits, in order to increase the fidelity of executions.\n", "\n", "Circuit optimization is a difficult task (in general QMA-complete). To make it approachable, we break it down. Each transpiler pass is thus responsible for doing one small, well-defined task. Through this \"separation of responsibilities\", we are able to chain together different passes to achieve an aggressive optimization goal.\n", "\n", "Which passes are chained together and in which order has a major effect on the final outcome. This pipeline is determined by a **pass manager**, which schedules the passes and also allows passes to communicate with each other by providing a shared space." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Transpiler API" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are two main ways to use the transpiler:\n", "1. Use the ``transpile()`` function, and specify some desired transpilation options, like ``basis_gates``, ``coupling_map``, ``initial_layout`` of qubits, or ``optimization_level``.\n", "\n", "2. Create your own custom pass manager." ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from qiskit.compiler import transpile\n", "from qiskit.transpiler import PassManager" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by a very simple transpilation task. Suppose we have a single toffoli gate which we want to unroll to a more fundamental basis." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
             \n",
       "q_0: |0>──■──\n",
       "          │  \n",
       "q_1: |0>──■──\n",
       "        ┌─┴─┐\n",
       "q_2: |0>┤ X ├\n",
       "        └───┘
" ], "text/plain": [ "" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit import QuantumRegister, QuantumCircuit\n", "q = QuantumRegister(3, 'q')\n", "circ = QuantumCircuit(q)\n", "circ.ccx(q[0], q[1], q[2])\n", "circ.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### *transpile( ) function*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function is a convenience function, allowing the user to quickly transpile a circuit with minimal effort. Refer to the function documentation for more info." ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nZgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_circ = transpile(circ, basis_gates=['u1', 'u3', 'u2', 'cx'])\n", "new_circ.draw(output='mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### *PassManager object*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This let's you specify exactly which passes you want." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nZgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit.transpiler.passes import Unroller\n", "pass_ = Unroller(['u1', 'u2', 'u3', 'cx'])\n", "pm = PassManager(pass_)\n", "new_circ = pm.run(circ)\n", "new_circ.draw(output='mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All of Qiskit's transpiler passes are accessible from ``qiskit.transpiler.passes``." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['BarrierBeforeFinalMeasurements',\n", " 'BasicSwap',\n", " 'CXCancellation',\n", " 'CXDirection',\n", " 'CheckCXDirection',\n", " 'CheckMap',\n", " 'Collect2qBlocks',\n", " 'CommutationAnalysis',\n", " 'CommutativeCancellation',\n", " 'ConsolidateBlocks',\n", " 'CountOps',\n", " 'DAGFixedPoint',\n", " 'Decompose',\n", " 'DenseLayout',\n", " 'Depth',\n", " 'EnlargeWithAncilla',\n", " 'FixedPoint',\n", " 'FullAncillaAllocation',\n", " 'LegacySwap',\n", " 'LookaheadSwap',\n", " 'MergeAdjacentBarriers',\n", " 'NoiseAdaptiveLayout',\n", " 'NumTensorFactors',\n", " 'Optimize1qGates',\n", " 'OptimizeSwapBeforeMeasure',\n", " 'RemoveDiagonalGatesBeforeMeasure',\n", " 'RemoveResetInZeroState',\n", " 'ResourceEstimation',\n", " 'SetLayout',\n", " 'Size',\n", " 'StochasticSwap',\n", " 'TrivialLayout',\n", " 'Unroll3qOrMore',\n", " 'Unroller',\n", " 'Width']" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from qiskit.transpiler import passes\n", "[pass_ for pass_ in dir(passes) if pass_[0].isupper()]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Different Variants of the Same Pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There can be passes that do the same job, but in different ways. For example the ``TrivialLayout``, ``DenseLayout`` and ``NoiseAdaptiveLayout`` all choose a layout (binding of virtual qubits to physical qubits), but using different algorithms and objectives. Similarly, the ``BasicSwap``, ``LookaheadSwap`` and ``StochasticSwap`` all insert swaps to make the circuit compatible with the coupling map. The modularity of the transpiler allows plug-and-play replacements for each pass.\n", "\n", "Below, we show the swapper passes all applied to the same circuit, to transform it to match a linear chain topology. You can see differences in performance, where the StochasticSwap is clearly the best. However this can vary depending on the input circuit." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from qiskit.transpiler import CouplingMap, Layout\n", "from qiskit.transpiler.passes import BasicSwap, LookaheadSwap, StochasticSwap\n", "\n", "coupling = [[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]\n", "\n", "qr = QuantumRegister(7, 'q')\n", "circuit = QuantumCircuit(qr)\n", "circuit.h(qr[3])\n", "circuit.cx(qr[0], qr[6])\n", "circuit.cx(qr[6], qr[0])\n", "circuit.cx(qr[0], qr[1])\n", "circuit.cx(qr[3], qr[1])\n", "circuit.cx(qr[3], qr[0])\n", "\n", "coupling_map = CouplingMap(couplinglist=coupling)\n", "layout = Layout({qr[i]: i for i in range(coupling_map.size())})\n", "\n", "bs = BasicSwap(coupling_map=coupling_map, initial_layout=layout)\n", "pass_manager = PassManager(bs)\n", "basic_circ = pass_manager.run(circuit)\n", "\n", "ls = LookaheadSwap(coupling_map=coupling_map, initial_layout=layout)\n", "pass_manager = PassManager(ls)\n", "lookahead_circ = pass_manager.run(circuit)\n", "\n", "ss = StochasticSwap(coupling_map=coupling_map, initial_layout=layout)\n", "pass_manager = PassManager(ss)\n", "stochastic_circ = pass_manager.run(circuit)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circuit.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "basic_circ.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAFhCAYAAABj1eDnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XtYVNX+BvB3GO9cRAG1MCAhS1EQ\nEfEOYooohqLoOampZZpmHQNNyzLzFmp1stsxxMRrSYZCecFKwdKkFEHNzJAETUxAYIiLyrB+fxjz\nY7gOMMxsNu/nefbznNl7ufeXOdPMO2uvtUYhhBAgIiIikgETYxdAREREpC8MNkRERCQbDDZEREQk\nGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQb\nDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsM\nNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2\nREREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZEREQkGww2REREJBsMNkRERCQbDDZE\nREQkGww2REREJBsMNkRERCQbDDZUZ2q1uk5thRCNWI18CSHq/FwTETV3DDZUJxs2bMDYsWNRXFxc\na1u1Wo1Zs2bhpZdeYripIyEEQkJCMGPGDJ0CS3FxMcaNG4d169YZoDoiIulqtsEmIiIC3t7eOrd3\nd3dHbGxs4xXURHTs2BGxsbEYP358jeGmLNTs2LED1tbWUCgUBqyy6VMoFLCyssKuXbtqDTfFxcUI\nDAzEoUOHYGVlZcAqiYikp9kGm4rUajUWL14MGxsbmJubY+LEicjKytIcDwgIQExMjBErlIZnnnkG\n4eHhNYab8qFm1apVeO2114xQadO3bNkyrF69usZwUz7UbN68GbNnzzZCpURE0sFg84/Q0FBER0cj\nISEB169fBwBMnz5dc5zB5v/VFG4YavSrpnDDUENEVAUhMXv27BGOjo7C1NRUjBw5UgQHB4tJkybp\n/Tpbt24VXl5emsd2dnYiPDxc8zglJUUAEFevXtXss7e3F6dPn9Z7LU1VeHi4ACB8fX1FUVGRKCkp\nEdOnTxcAxKpVq4xdnqysXr1aABBTp04VJSUloqioSPj5+QkAYvPmzcYuj4hIMloYNVVVsG3bNrz2\n2mvYu3cv+vfvjw8++ADBwcFYuXJlnc4TGhqK3bt349y5czq1z83NRXp6Otzd3TX7HB0dYWFhgeTk\nZNjb2wO432sTHR2t1a45e+aZZwAAs2fPRkBAAKytrbF792721DSCZcuWAQBee+01qNVq5Obm4vDh\nw+ypISKqyNjJqkxBQYHo2LGjOHjwoNY+AJp9O3bsEAMGDBADBgwQR48ebdD1yvfYpKenCwAiNTVV\nq42dnZ3YsWOH5nFsbKzo27dvg64rR2FhYQKAACCWL19u7HJkbcWKFZrn+pNPPjF2OUREkiOZYHPw\n4EFhaWmpte/q1asCgMjIyBA5OTnC1dVVFBUViczMTOHq6irUanW9r1c+2OTk5AgA4uzZs1ptLCws\nRHR0tOZxWFiYGD9+fL2vWRdlH17cuHHjxo0bN93jimQGD9+6dQudOnXS2rd792507twZXbp0QUJC\nAry8vNCmTRtYW1vjwQcfxNWrV/VybUtLS9jZ2SExMVGzLzU1FSqVCi4uLpp9MTExCAgI0Ms1ayPu\nh05JbyUlJZoB1qtWrdLU7uvri6KiIqPXJ6etqKgIfn5+AIDNmzdrnuupU6eipKTE6PVx48aNW2Nv\nupJMsOnZsydSUlIQHx+Pu3fvYvfu3QgNDYWbmxsAIDs7Gx06dNC079ChA7Kzs/V2/Tlz5mDdunX4\n448/oFKpsGTJEvj6+sLBwQEAUFBQgGPHjsHf319v12zKqpv9VNtUcKq76mY/1TYVnIioOZJMsPHw\n8MCyZcsQGBiIrl27IiEhAZ6enppgY2VlhZycHE373NzcahcjW7t2LZydnet0/aVLl2LcuHHw8PCA\nra0t1Go1du7cqTl+5MgRuLm5wdrauh5/nbzUNKVbl3VuSHc1TenWZZ0bIqJmR0iYvb29iIyMFELc\nHwfj5uYmiouLRXZ2tl7H2Ohi5syZYsOGDfW+nlzUNKW7/Mup4lRwqruapnSXf64rTgUnImrOJDXd\nuzyVSoW0tDRNj42lpSUWLlyo+RmEd955ByYmhutwsre3R1BQkMGuJ1XPP/+8TovvlZ8KPnnyZERH\nR/NnFepACIEpU6botPhe+ang7dq1Q1hYmKHKJCKSHIUQdRiRY0AnT57E6NGjkZeX1ygfiElJSUhK\nSsLMmTP1fm45O378OE6dOoWXX3650jGFQlFpgNeWLVvQoUMHBAYGGqpE2di3bx+ys7OrDDVVPdcb\nNmxA//794eXlZagSiYgkR7LBhpqeqj5sqXHwuSYiqppkBg8TERERNRSDDREREckGgw0RERHJBoMN\nERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0R\nERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDRER\nEckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERER\nyQaDDREREckGgw0RERHJBoMN1Ulqaiq+/vprndt///33SEpKasSKaieEQHh4OIqLi3VqX1xcjM2b\nN0MI0ciV1Sw5ORnHjx/Xuf2BAweQmpraiBXVTq1WIywsDGq1Wqf2eXl52L59eyNXRdQwubm52LFj\nh87tf//9dxw+fLgRK6IaiWZq69atwsvLS+f2ffv2FYcPH268gpqIyZMnixYtWoioqKhKxyq+nOLj\n44WpqakYPHiwKC0tNVSJlZw6dUooFAoxevRoUVRUVGPboqIi4efnJwCIkydPGqjCykpLS8XQoUNF\nu3btRHx8fKXjFZ/rffv2iRYtWohJkyYZqsQq7d+/XwAQ06ZNEyUlJTW2zc3NFZ6enqJly5bi999/\nN1CFRHW3fPlyAUBs2LCh1raXL18Wtra2wtbWVhQWFhqgOqqIweYfJSUlYtGiRcLa2lqYmZmJwMBA\nkZmZqTn+5ptvivnz5xuhUmnJy8sTAwYMqDLclP+wLQs1jz32mLhx44ahy6xky5YttYab8qFm8+bN\nBq6wsoyMDNGjR48qw03557os1Hh6eorc3FxDl1nJmjVrag03ZaGmRYsWYv/+/QaukKSipKREfPXV\nV8Lf3184OTkJFxcX8frrr4tr164ZuzQt9+7dE5MnT6413JSFGmtra3Hu3DkDVkjlMdj8Y/Xq1eKR\nRx4RV65cEbm5uSIwMFCMHj1aczwpKUl07drVCJVKT3XhpuzDVmqhpkxN4UZqoaZMdeGm7LmWWqgp\nU1O4YaghIYQoLi4W48aNEwCEiYmJAKDZ2rRpIw4dOmTsErXUFm4YaqRDcsFmz549wtHRUZiamoqR\nI0eK4ODgRulerxhs7OzsRHh4uOZxSkqKACCuXr2q2Wdvby9Onz6t91qaoqrCDQDJhpoyVYUbqYaa\nMlWFGwCSDTVlqgo3DDVU5vnnn9cKM+U3ExMT0bp1a5GSkmLsMrVUF24YaqRFUsEmIiJCdO3aVZw6\ndUqUlpaKjRs3CqVSKdasWVOn87z11luid+/eNbYpH2xycnIEAHH27FmtNhYWFiI6Olrz+MUXXxSv\nv/56nWqRs4rhBoCkQ02Z8uEmJydH0qGmTMVwA0DSoaZM+XCTnZ3NUENCCCGysrJEq1atqg02AIRC\noRDBwcHGLrWSiuGGoUZ6JBNsCgoKRMeOHcXBgwe19gHQ7BsxYoSwtrYWq1atavD1ygeb9PR0AUCk\npqZqtbGzsxM7duzQPI6NjRV9+/Zt8LXlpCzcKJVKAUDyoaZMWbixtraWfKgpUxZuWrduLQBIPtSU\nKQs3VlZWQqlUMtSQ2LFjR42hpmyT6u3/8uHGwsKCoUZiWuhnblXDxcfHo7S0FH5+fpp9mZmZAAA3\nNzcAQEREBL799ltcv35dr9c2NzcHcH/qaXm5ubmwsLDQPE5LS4OdnZ1er10dhUJhkOvo26VLl/Dg\ngw8auwydZWVlAQCeffZZPPvss0aupm4SEhJgaWlp7DJ0lp2dDQAYP368kSuhpuL69euSfy9UqVQA\nABcXFyNXIn9CxyU4JLOOza1bt9CpUyetfbt370bnzp3RpUsXAEDXrl0b5dqWlpaws7NDYmKiZl9q\naipUKpXWizUmJgYBAQGNUkNF4n5vmuS3+Ph4mJqa4pFHHoG7uztatGiBqKgoo9dV01ZUVKQJ0DNm\nzAAAjB49GkVFRUavraZt3759aNGiBdzc3PDoo4+iXbt2iI+PN3pdNW25ubnw9PREixb//x1q2rRp\nKCkpMXpt3Iy3HTp0qNb3QBMTE/Tt29fotVa1Xb58Gba2trCystLUu2HDBqPXJfetLh+gkvDTTz8J\nExMTERcXJ+7cuSN27dolLCwstGYmCXH/FpK+b0UJcX9WVPfu3UVqaqrIy8sTkyZNEr6+vprjf//9\ntzA1NdWaAt7cVRwoXNNUcKmoaqAw/rmfr8s6N8ZScaBwTVPBpaLiQGEAOk0FJ/krKSkRtra2QqFQ\n1HgratOmTcYutZKKY2oA6DQVnAxHMsFGCCFef/110bFjR2FjYyNefPFFMXLkSPHKK69otdEl2KxZ\ns0b07NmzxjZVrWMTEhIirKyshJmZmZgwYYJWiImKihJDhgyp+x8lU9XNfpJyuKlu9hMAnda5MZbq\nZj9JOdxUNfup7HsUww0JIcQXX3yh+VJRMdAoFArh6uoqCgoKjF2mlqoGCgPQeZ0bMgxJBZuK7O3t\nRWRkpNa+xuqxqc3MmTP5gv1HbVO6pRhuaprSXfaBK8VwU9uUbimGm+qmdJfvIGa4ISGE+Oyzz4SV\nlVWlYDN27FiRlZVl7PK0VDf7qex1zXAjHZINNnl5eQKA1lLrs2bNEj179hSOjo7C39+/Qeeva7B5\n4403tNa0aa50XadGSuGmtnVqyn/gSinc6LpOjZTCTU3r1FS8881wQ0IIcefOHREZGSlWrVolAIhL\nly4Zu6RKaprSXf51zXAjDZINNidOnBDm5uaN9htDZ8+eFVu3bm2Uc8vZ3LlzdZ7SXRZu/P39jfpb\nUYmJicLMzKzaKd0VP3C3bNkizMzMxJkzZwxRXpVKS0vFE088ofOU7rJw8+yzzxqguup9++23ol27\ndlVO6a5qSN+aNWuElZWVuHLliiHKI4mT0LBPLe+99161U7or1lwWbnr16sXfijIShRB1GWpMzZ1a\nrUZubq7WbICaqFQqtGrVCm3atGnkympW1ay7MgqFotKI+5raG0pxcTHu3r2rteRATbKzs2FpaQml\nUtnIldWsuueuque5pvbU/FT3GpGCuryuS0pKoFKp0LFjR0OVR+Uw2FCzJ+U3Uznh80y1aYqvkaZY\ns9xJZh0bIiIiooZisCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEi\nIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIi\nItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi\n2WCwISIiItloYewCiIio4UpLS5GSkoLff/8d9+7dQ/v27eHq6oqOHTsau7Qa5eXlISkpCTk5OQCA\nX3/9Fd27d4dSqTRyZdRUKYQQwthFEBmTQqEA/zNofHyeG8fPP/+Mjz/+GF9GRSFfpap0/JFHuuOZ\nZ57G008/DRsbGyNUWFlOTg62bduGzZvDcfHiL5WOm5qZYZy/P+bPn48hQ4ZAoVAYoUrd8HUtPQw2\n1Ozxjckw+DzrV1ZWFl544QV8/vnnaN3WDE5Dn8ADPT1gZfcY9gT7IXDtXtxKOYerP3+L6+dPwszc\nHO++8w5mz55ttKAghMDnn3+O5xcsQM7t23igRz883H8UOjm5oJ2lDXa/MAKjgj9AxqXT+P34PhT/\nrcK4J57AJ5s24YEHHjBKzbXh61p6GGyo2eMbk2Hwedaf8+fPY9QoX2RmZcHjXy/BbfxzaG1qrjn+\nnp8NFh7K1DzOTruEuP+9gmvJPyAoKAg7d+5Eq1atDFqzWq3G3LlzsWXLFjzQox+854Wi8yOuWm3K\n132vuADnvo7AqR2hMDNrh4MHDmDAgAEGrVkXfF1LDwcPU7NQUFDQqO0bg1qtRnFxsc7tCwsLJfEG\n2xSf66bk8uXLGO7jg4ISYMp7sRgwdbFWqKmKlf1jCFz7JYY8vRxffPEFnpw6FaWlpQaq+H5PTVmo\n6f+vlxC04etKoaailm1M4T7pefz7o2NAm/YY5euLpKQkA1VcWV1ep0IIFBYWNmI1VJNmG2wiIiLg\n7e2tc3t3d3fExsY2XkHUaC5evAgnJyfs27dPp/bR0dFwcnLCL79UvvdvKEIIzJw5E+PHj9cp3OTl\n5cHHxweLFy82QHXVO3HiBLp164bjx4/r1D48PBzOzs64du1aI1cmDyUlJZg6dRqK7pUiMHQfOjn2\n1vnfKkxM0C/oBQyd/Sa+3LsXmzZtasRKtX322WeaUDNoxqswqcPA4I5dnRAYuh9oZYp///vJOoV9\nfdmyZQt69eqFq1ev1tpWCIEFCxZg5MiRRqmVmnGwqUitVmPx4sWwsbGBubk5Jk6ciKysLM3xgIAA\nxMTEGLFCqq+uXbvCwcEBkydPrjXcREdHY9KkSXBwcEDXrl0NVGFlCoUC3t7eiI2NrTXc5OXlwdfX\nF2fOnMHQoUMNWGVljo6OsLKygp+fX63hJjw8HM8++yycnZ0lM6hV6j744AOcPv0zvOevQwdbx3qd\no2/gPNi7D8fil1/Gn3/+qecKK8vJycGCF17AAz36YcC0JfU6h7nNgxix8D1cuvQr1q5dq+cKa+fm\n5oa8vDx4e3vXGG7KQs3HH3+MwYMHo3Xr1oYrUgdqtRpHjhxBWFgYPvvsM+Tm5hq7pEbBYPOP0NBQ\nREdHIyEhAdevXwcATJ8+XXOcwabpsrCwQGxsLPr161djuCkLNf369cPhw4fRvn17A1eq7ZlnnkF4\neHiN4aZ8qNm7dy8CAgKMUOn/69KlC44ePQp7e/saw01ZqBkzZgy+/PJLtGnTxsCVNj1qtRrvvvtf\nPOQ6BN2Hja/3eRQKBYbPX4eiwkKEhYXpscKqRUREIOf2bQyfH1qnnpqKHNx94DR4LD786CMUFRXp\nscLa9e3bF99++y1UKlW14aZ8qFm8eDHWrVsnqdlckZGRcHBwgK+vL+bOnYsnn3wSDzzwAIKDg3Hv\n3j1jl6dXkgs2kZGRcHJygpmZGUaNGoWQkBAEBQU1+nXDwsKwZMkSdOvWDe3bt8f69etx+PBhpKWl\nAQBcXV2hVCpx5syZRq+F9K+2cCO1UFOmpnAjtVBTprZww1BTP0eOHMH169fgOu6ZBp/L8sGH4eDx\nOMLCNjf6uKywsM14sKcHOjnVPKZGF67jZiPn9m2dbyvrU03hRuqhZteuXZgyZUqlHrri4mL897//\nxVQDj7lqbJIKNtu2bUNISAh27dqF/Px8+Pv7Y+PGjXBzc6vTeUJDQ+Hi4qJz+9zcXKSnp8Pd3V2z\nz9HRERYWFkhOTtbsCwgIQHR0dJ1qIemoKdxIMdSUqSrcSDXUlKku3DDU1N+JEydgolTCod8IvZzv\nYU9f3LyZodO4kfq6ffs2Ll36FQ97jtbL+br2HoTW7cxw4sQJvZyvrqoLN1IONcXFxXjhhRdqnL31\nxRdf4LvvvjNwZY1HMsGmsLAQwcHBCAsLg6enJxQKBWbPng21Wg03NzdcuXIFw4YNw9ChQzFkyBCc\nPn262nMtXboU586d0/na+fn5AFDpA83S0hKqcgtejR07FgcOHKjjX0ZSUjHcvPLKKwAg2VBTpny4\n8ff3x8iRIyUbaspUDDcAGGoa4OzZs7CyexQtWrfVy/k6/9ODkpiYqJfzVaXsi2EnJ92/aNZEYWIC\na8feSDx7Vi/nq4+K4QaAZEMNAERFRSEnJ6fGnjkTExOD3JY0FMn8pEJ8fDxKS0s1b4AAkJl5fz0D\nNzc3tGzZEvv27YOVlRUuXryIuXPn4vvvv9fLtc3N70+VzMvL09qfm5sLCwsLzeO0tDTY2dnp5Zpk\nPGXhpn///ggNDQUASYeaMs888wwKCwvx4osvQqFQYM+ePZINNWXKwk3fvn1RWFiIAQMGMNTU0+2c\nHLS11N8g63Yd7p+r7KcMGsPt27e1rqUP7SxtcPvWZb2drz769u2Lb775BoMHDwYAzJkzR5KhBgB+\n++23WtuUlpYadRao3gmJiIiIEN27d9fat3btWtG5c+dKbVNSUoSXl1eDrrd161atc9jZ2YktW7Zo\nHl+5ckUAEH/88Ydmn7+/v9i6dWuDrqsrANy4cePGjRu3fzZdSabHpmfPnkhJSUF8fDwGDhyIvXv3\nIjQ0FIMGDdJqp1ar8eKLL2Lp0qV6vX5Z4h4+fDisrKywZMkS+Pr6wsHBAcD9xZmOHTuGrVu36vW6\n1RESWGhNrsoPFI6MjMTkyZNx+vRpREZGYsKECcYur0oVx9SMH39/Voyvry/2798v2R6Q8mNqPvro\nI4wZMwZpaWk4dOgQhg0bZuzympSZM2dib8xBzN71S609AxVXHq7KHz8dQfQbU3H8+PFGWybg/Pnz\ncHFxge/ij9HDp/ZJILrUvWPOQAx262m08Y6iwkDhKVOmYOTIkbCwsEBcXJzmM0Mqyv4/qM2bb76J\n5cuXG6CixieZMTYeHh5YtmwZAgMD0bVrVyQkJMDT01Nr4LAQAk8//TT8/f0xenT1g9HWrl0LZ2fn\nOl1/6dKlGDduHDw8PGBrawu1Wo2dO3dqjh85cgRubm6wtrau+x9HklFx9tNDDz2k01RwY6puoHBt\nU8GNreJAYQcHB52mglPV3N3dUZCTCdVf6Xo5X8avp6FQKOo8OaMuevTogTZt2+LmperHRNZFkeo2\nsq+laE30MKSKoWbdunVwd3evdSq4MfXu3Rs+Pj4wMan6497ExARt27bF7NmzDVxZ45FMsAGAlStX\nIjs7G7du3cLGjRtx+fJlrf/oXnjhBTg5OWHevHk1nufVV1+t8/1CpVKJt99+G1lZWcjPz0dUVJRW\niImJiZH8eAaqWXVTunVd58YYapr9pMs6N8ZS3ewnXde5ocr8/f2hUChw8chnDT5XqboEl45GYriP\nD8zMzPRQXdVatGgB/7FjcTl+H0ruNHztmV+/3QMARnkvrirUlPWc6bLOjTF99tln6NGjBwBoBRyF\nQoFWrVohOjoaDz74oLHK0ztJBZvyVCoV0tLSNMEmLi4OYWFh+O677+Dt7Y3AwECD1mNvb2+Q9XSo\ncdS2To0Uw40uU7qlGG5qm9LNcFM/Dz/8MPzGjMGFQ9tQnN+wAb+Xju6F6tafWPD883qqrnrz589H\nkSoH5w5ua9B57hb9jeToMAwaNBiurg1fE6cuago1ZaQcbjp16oRTp07hgw8+gLOzsybMLly4EOfP\nn8fIkSONXKF+SfbXvU+ePInRo0cjLy+vUUaaJyUlISkpCTNnztT7uUlafv75ZwwaNEinKd0qlQq+\nvr44ffo0fvjhB3h6ehqw0v8nhMDIkSMRHx9fZaipuCbFli1bMHv2bDz55JPYtWuXocvVOHjwIMaO\nHavTlO6bN2/Cx8cHaWlpSE5OhpOTkwErbZqSk5PRr18/OA0JgO/L/6v2vbGmsSp/Z9/ErnlD4dbb\nGcePx0PZgNWAdSGEwJixY3H0WDye/OgYLB/sVm3bmuo+9vESnPt6K44fP44hQ4Y0VrlVWrNmDV57\n7TWdpnQnJibi8ccfh6WlJX755Re0bauf6fn6JudfJZdssCHSF7VajdDQUCxYsECnKd0qlQrvv/8+\nXnnllUZ/06/J8ePHkZOTU2VPTVVvStu3b4erq6vBv82WV1xcjA0bNmDx4sU6DWj+66+/sH37dixa\ntEiSU2WlaOXKlXjjjTcwYNoSeD4ZUuXzVl1AKFLdxr5XJ0F1IwXJSUno3r27IUrG9evX0at3byjN\nrBAYuh9mVl2qbFdd3WejwxC/aRleeuklvPvuu41dbiUZGRnYvXs3goODdXqdJiYm4tdff8XUqVMN\nUF39MNgQkaTI+U2JalZaWoqnn34a27ZtQ4/Hp8Br7hq0MdMO7FUFhBu//oxv31mAv7P+REx0NHx9\nfQ1ZNn744QeM9vNDi3aWePyl9/FQn8ozsSrWfbfob5zYugrJX32K8RMmIHLPHrRs2dKQZcuWnN9D\nJDvGhoiIKjMxMcGnn36K1157DZeP7cXO5wbj58j3UZhbuadDCIGbvyUi9u3n8cUif5ialODbb74x\neKgBgCFDhiA+Lg42Fm3x5SuBOPDWbPx54ccqP1yL83ORuG8Tds0bhnNfb8XChQsZakhn7LEhaoLk\n/G2LdHf69GksWrwY8XFxAICOXR3Rwe4xXDl5AHZuXsi8cg5FqhyYmplh9jPPYOXKlVqrqRtDYWEh\nVq1ahY//9z+o8vLQxqw9bBx7o217a1w+vh9Wdt1x+9rvEELA03MANmxY32jr7DRncn4PYbAhaoLk\n/KZEdXfx4kVERUXhzJkzuPTbZVz69SLc+/WDW58+GDhwICZNmmT0QFNRQUEBoqKicOLECSQmnsXt\nnBxcSfkd48aNg7u7O5544olGXWOnuZPzewiDDVETJOc3JWo4vj6oNnJ+jXCMDREREckGgw0RERHJ\nBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckG\ngw0RERHJBoMNERERyQaDDREREckGgw0RERHJBoMNERERyQaDDREREckGgw0RERHJRgtjF0DSsXDh\nQiQlJRnl2n369MF7771nlGvjCTfkAAAgAElEQVQTEZF8MNiQRlJSEn48fRY23XoZ9LqZqRcMej0i\nIpIvBhvSYtOtF4LWRxv0ml+8HGDQ6xERkXxxjA0RERHJBoMNERERyQZvRRER/aO4uBj79u3D8ePH\nkZh4FplZWVAqlbC3t0M/d3eMGTMGQ4cOhUKhMHapRDrLycnBnj17cOrUKSQlJSNPpYLCRImAgAD0\n69cPEydORM+ePY1dpt6wx4aImr27d+9izZo16PrQQ3jyySexdftO3ChSopWdK1J+v4wLV//Chrff\ngZeXF3r3dkFMTIyxSyaqVU5ODubPn48HbW0xb9487I05iLyWHdHGoS9EqRonzl7EG2+8AWdnZwz3\n8UFiYqKxS9YL9tgQUbP222+/YfLkKTh3LhndPH3hFfwsHnIdCoXJ/e99v8VF4d8fHMW94gL8Fr8P\nSfs2ISAgANOmTcOmTZtgampq5L+AqLJvv/0W06c/hVuZt9Bz5L/h4v80bLr10vQ2Xjq2F9PDfkRh\nbiZ+OfIZTkeHoX///nj99dfx+uuvw8Sk6fZ7MNgQUbN1/vx5DB/ug2I1MG75djgO9Ku2bcs2pujl\nOw09fCbjpz3vYdfud/DHH1cRG3uY4YYkZf/+/QgKCoKlrSP+9d4OdHJyrbZtO0sbeEx+Eb39nkLc\nplexYsUKXL9+HWFhYU32lmvTjWREMhcXF4f9+/fr3D4iIsJoCyw2RTk5ORg92g93FS0Q9M6BGkNN\necqWrTBw2svwW/IJTv54Ek8//XQjV0qku/Pnz2PKlCmwcXJF0DsHaww15bUxt4Tvoo/gMWUhwsPD\nsX79+kautPE022ATEREBb29vndu7u7sjNja28QoiKkcIgTVr1iAoKAj79u2rtf3mzZsxa9YsvP32\n2waoTh6Cg4Nx86+b8H99Bywf7Fbnf9992HgMnL4UkZGRiIyMbIQKierm3r17mDFjJlqatse4N3ai\ntalFnf69QqHAoBmvwmmwP15fvhy//PJLI1XauJptsKlIrVZj8eLFsLGxgbm5OSZOnIisrCzN8YCA\nAA4YrMLmqb1w4fAOrX1CCHwc+DBSThwwUlVNn0KhwJdffol+/fph8uTJNYabzZs3Y86cOfDz80N4\neLgBq6xdWloaXn75Zdja2sLMzAzdu3fH+vXrkZOTY9S6Ll68iIiICPQNnI/O3fvU+zz9gl5AJ6fe\nWLJkKUpLS/VYYd1dunQJCxYsQOfOnQEALi4u+PDDD1FQUGDUushwIiMjcfZsIrzmvYV2ltb1OodC\noYDPgvVo0bod3njjDT1XaBgMNv8IDQ1FdHQ0EhIScP36dQDA9OnTNccZbCr7OysDBbf/gk233lr7\n8zKu4m7R3w36wCDAwsICsbGxNYab8qEmKioKbdq0MUKlVfvhhx/Qq1cvvP3227hx4wYKCgqQkpKC\nJUuWwM3NDWlpaUar7X//+x+ULVuhb+D8Bp3HRNkC7hNfwNWrf+Dw4cN6qq7uYmJi4Orqio8//hi3\nbt0CAPzyyy944YUXMGjQIK0vaSRfH330MTradsMjg8c16DztLG3Q03ca9u/fjz///FNP1RmO5IJN\nZGQknJycYGZmhlGjRiEkJARBQUGNft2wsDAsWbIE3bp1Q/v27bF+/XocPnxY8+br6uoKpVKJM2fO\nNHotTcXNy2ehMFHCyuExrf1Zf/yCdh1sYG5ja6TK5KOmcCPlUJObmwt/f38UFhZCCKHZX/a/r127\nhgkTJmgdM6T90TF4uP/Ien+rLc9p8Fi0MTXHV199pYfK6u7q1auYPHky7t27p/V8lvUgnT9/HjNn\nzjRKbWQ42dnZ+PHHk3hsxBTNjL6GcB75b6jVahw6dEgP1RmWpILNtm3bEBISgl27diE/Px/+/v7Y\nuHEj3Nzc6nSe0NBQuLi46Nw+NzcX6enpcHd31+xzdHSEhYUFkpOTNfsCAgIQHW3Y31GSsr8un0UH\nW0e0aKX9gZqZ+gs6P8LeGn2pLtxINdQAwPbt25GXl1ft7ZnS0lKcPXsWP/zwg4ErA7KysnD9Wjoe\neMxDL+dTtmwFa0cXnD5tnC89mzZtwp07d6oNiUIIHDhwAJcvXzZwZWRIZV+6H+ihn9d1h4ceQRsz\niyb5ZV4ywaawsBDBwcEICwuDp6cnFAoFZs+eDbVaDTc3N/z1118YNGgQvL294enpie+++67acy1d\nuhTnzp3T+dr5+fkAgPbt22vtt7S0hEql0jweO3YsDhzguJEyf11OQm7GH9g05VGt7fQXH6Bz97qF\nUapZ+XAzadIkAJBsqAGAr7/+utapogqFwii9HKmpqQDuv3HrS8eHuuPKlSt6O19d6HqLnO9d8lb2\n+tPX61qhUKBD10eM9rpuCMmsYxMfH4/S0lL4+f3/lMvMzEwAgJubG6ytrfH9999DqVQiNTUVU6ZM\nwc8//6yXa5ubmwMA8vLytPbn5ubCwuL/R5WnpaXBzs5OL9esjbHWD7DtPUjntn/9noQBUxejx4gp\nWvt3zh+Gzo/oNsWwTHx8fJNdM8FYDh06hLZt2xq7jHoTQmDDhg3YsGGDUa4fs2Kqzm3f87PRqZ2U\nX8PBwcEIDg42dhnUyMKn9a690T90eV1nXJLO61rXW9eSCTa3bt1Cp06dtPbt3r0bnTt3RpcuXbT2\n5+bm1ulWU20sLS1hZ2eHxMRE9Olz/xZKamoqVCqV1nViYmIwceJEvV23JsYYe+Dt7Y2U2/d0apt7\nIxV3/s6FvbsPzG0erLA/r849Nl5eXoiLi6vTv2luysbUPP7441CpVEhMTERkZCQmTJhg7NIqmTNn\nDrZs2VLrTKGPPvoI8+c3bABvXV26dAk9evTAqJAP0fPxKbW2f8/PBgsPZdbY5uBbz+JOejKu/pGq\nrzJ15u/vj8OHD0OtVtfYLioqSpKvFdKPXbt2Ydq0aZj2v+OwduhRa3tdXtfbZ3ti+AA37N27V19l\nGoRkbkX17NkTKSkpiI+Px927d7F7926EhoZqja/5448/MGTIEPj6+ur9P9A5c+Zg3bp1+OOPP6BS\nqbBkyRL4+vrCwcEBAFBQUIBjx47B399fr9dtqm5eTkKL1u1g081Za/+Niz/D3MYW7Sx1+4ZLuik/\nUPirr77CN998o9NUcGOZO3duraGmbdu2mDpV914TfXnkkUfQtl073EpJrr2xjjKvJMO9r3Fuv86d\nO7fGUKNQKNC5c2e+d8lc2Wflrd/187q+U6DC7T9T6zzGVQokE2w8PDywbNkyBAYGomvXrkhISICn\np6fWk/rwww/jhx9+QEJCAhYsWFDtudauXQtnZ+dqj1dl6dKlGDduHDw8PGBrawu1Wo2dO3dqjh85\nckRzS4zuDxzu3L0PTJTanX4Zv55GJw4c1quqZj/pMhXcmNzd3TF37twqj5V1a7/zzjuVxrUZglKp\nxMCBA3H1p28g9LD2THbab8j58w8MGqT7bVx9GjNmDAICAqo8VvZcf/zxx2jZsqUhyyIDe/TRR9HR\nygqpCfpZduCPhCMAgMGDB+vlfIYkmWADACtXrkR2djZu3bqFjRs34vLly5pgc+fOHU07CwsLmJmZ\nVXueV199tc4rJiqVSrz99tvIyspCfn4+oqKitEJMTExMtW8ezZHXnFUIWl95htiIFzZg3OsRhi9I\npmqa0i31cPPxxx/jjTfe0IxhK9OlSxdERERg3rx5RqoMeHb2bORmXMXV0982+FzJX29By1attNa9\nMiSlUonIyEj85z//QevWrbWOOTg4YP/+/QgMDDRKbWQ4SqUSzzz9NFJPHUZ+ZsPWnhFCIPnrLXBy\negTDhg3TU4WGI6lgU55KpUJaWpom2Pz8888YNmwYhg8fjvHjx2Pjxo0Grcfe3t4g6+kQldFlnRop\nhxsTExOsWLECGRkZmnv0hw4dQnp6OmbMmGHU2gIDA+Hg8DCOh72Ge8WF9T7PX78n48Kh7Zjx1FOV\nxggaUqtWrfDee+8hIyMDn3/+OcLDw3H06FGkpKTgiSeeMFpdZFjz589Hy5YtceyjJQ0ap3nx28+R\n8etphIQEN8lf+VYIY62QVYuTJ09i9OjRyMvLa5QR2UlJSUhKSuLCVeWUDR6uqiemMX3xcgCcOrbk\n4OFyhBCYOXMmMjMzdZrSrVKp4Ovri6FDh0r2x+sUCoXRFuSryrFjx+Dj44OeI/+NkS9trPZ9prpB\nlsX5OfgiZCxalRTgl18uoEOHDo1dMlGt3n33XYSEhMD7ubXoE/Bste2qe11np13CF4vGwqNvH8Qd\nO9Ykg41kZkVVNGjQIK01ZPStT58+mhlQRFKjUCjw6aefoqSkpNLthapYWFjg6NGjklzTRqqGDx+O\n5cuXY+XKlTBRKuE9761Ki01WJz/zT3z15nTk30rHkdhYhhqSjP/85z+Ii4/HV5teRam6BG4TntO5\nc+Dmb4n46s1psDQzxfZt25pkqAEkfCuKqLlTKpU6hZoybdu2lcx6E03FihUrsGzZMlw4vBOfvTAC\n15K+r7FXqeRuMZK/3oqdzw3B3zdTERMdDS8vLwNWTFQzpVKJyD17EDB+PI5vXo59y4KQnfZbjf+m\nOD8XP2xdhciQMehg1hZxccc0M4KbIsn22BARNTaFQoHVq1dj6NCheOaZ2fjylUDYOPRAt0Fj0ekR\nV5h1vL+G1q/fReLmb4n4/fh+FOZlw8vbG1s//RQPP/ywkf8CosratGmDfVFR+OSTT7Bo8WLseG4I\nHnIZDDt3H3Ry7I02Fh0BAOcObkPGxZ+Q8sNXuHenCLNmzcK7774LS0tLI/8FDSPZMTZkeBxjQ41J\namNsKiosLMTnn3+OTZs+wZkzpyutw9O2XTv4jhqF559/Hj4+Pk22m56al8zMTHz66afYsuVT/P57\n5d8Ls+zQAZODgjBv3jzZDM9gsCENBhtqTFIPNuUVFBTg3LlzyMrKwhNPPIELFy7gscceg1KpNHZp\nRPWWk5ODc+fOIS8vDwEBAUhNTYWDg4PsbmHzVhQRUQWmpqYYOHCg5nFdF/wkkqIOHTpoxoQ1lS8Z\n9cG+VCIiIpIN9tiQlszUC/jiZcOusJyZegFOHZve75EQEZH0MNiQhrEGjjl1dJPNoDUiIjIuDh4m\nIoNoSoOHy2uqdRM1VxxjQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFg\nQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBD\nREREssFgQ0RERLLBYENERESy0cLYBRCRfBUWFiIpKQmXLl0CAGzfvh0uLi5wdnZGy5YtjVwdEcmR\nQgghjF0EEcmHEAJHjx7FRx99hJiYGKjV6kpt2pmaYuqTT2LBggVwcXExQpW6UygU4NskUdPBYENE\nenPz5k08N28eovfvR7v2VnhsxBTY9hoAa4ce2Pq0B54KO4nMKxeQfjYOl+P3oeRuMRYuXIjVq1ej\nXbt2xi6/Sgw2RE0Lgw0R6cW5c+cwcuQo3M7NxYDpS9HniWfRolVrzfH3/Gyw8FCm5nFxfi5Obl+L\nc19vhatrHxw5EotOnToZo/QaMdgQNS0cPEzNwl9//dWo7Zu7K1euYMSIx1FUaoJ/bfwG/SYt0Ao1\nVWljbgmf59cj4M3duHjpNzz++Ej8/fffBqqYiOSq2QabiIgIeHt769ze3d0dsbGxjVcQNZqzZ8/C\n0dERYWFhOrUPDw+Ho6MjEhMTG7kyeVCr1Xhqxgz8XXwXgW/tg7VDjzr9+4f7j8TY1yNw4cJ5LF26\ntJGqJKLmotkGm4rUajUWL14MGxsbmJubY+LEicjKytIcDwgIQExMjBErpPrq2bMnvLy8MHfu3FrD\nTXh4OJ599ll4eXmhZ8+eBqqwaduyZQtOnjiBYXPXoENXx3qdw8HdB30C5uCjjz5CQkKCniusu5KS\nEuzfvx+rVq0CAJw5c8bIFRGRrhhs/hEaGoro6GgkJCTg+vXrAIDp06drjjPYNF2tW7dGVFQUxowZ\nU2O4KQs1Y8aMwZdffok2bdoYuNKmRwiB//73PXTp3gc9Rkxu0LkGPrUUbcws8P777+upuvo5fPgw\n7OzsMGHCBCxfvhwA0K9fPwwaNAjp6elGrY2Iaie5YBMZGQknJyeYmZlh1KhRCAkJQVBQUKNfNyws\nDEuWLEG3bt3Qvn17rF+/HocPH0ZaWhoAwNXVFUqlkt/cmqjawg1DTf389NNPuHTpV/QeOwsKhaJB\n52rV1gyPjZiCL774AiqVSk8V1s2xY8fg7+9f5RirhIQEDB06FJmZmVX8SyKSCkkFm23btiEkJAS7\ndu1Cfn4+/P39sXHjRri5udXpPKGhoXVaGyM3Nxfp6elwd3fX7HN0dISFhQWSk5M1+wICAhAdHV2n\nWkg6qgs3DDX19+OPPwIAHPqN0Mv57N19cO/ePZw9e1Yv56urRYsWQQiB0tLSSsdKS0uRnp6ODz/8\n0AiVEZGuJBNsCgsLERwcjLCwMHh6ekKhUGD27NlQq9VawSY7OxsdOnTAzp07qz3X0qVLce7cOZ2v\nnZ+fDwBo37691n5LS0utb45jx47FgQMHdD4vSU/FcPPUU08x1DRAcnIyzDp2hmnHzno5Xyen+19I\nkpKS9HK+ukhOTkZiYmKVoaa8Tz75xEAVEVF9SCbYxMfHo7S0FH5+fpp9ZV2+5YPN6tWrMWTIEL1e\n29zcHACQl5entT83NxcWFhaax2lpabCzs9PrtcnwysJN7969sWPHDvTq1Yuhpp5UKhXaWnTQ2/na\nWnTUnNfQrl69qlO7v/76C3fv3m3cYoio3iTzW1G3bt2qtDjX7t270blzZ3Tp0gUAkJKSguzsbK1b\nRvpgaWkJOzs7JCYmok+fPgCA1NRUqFQqrVtaMTExmDhxol6vXZ2Gjlcg3V24cAFt27Y1dhlN2nt+\nNnptt3z5cs3AXSlq3brmNXqISP90XShTMsGmZ8+eSElJQXx8PAYOHIi9e/ciNDQUgwYN0rRZvnw5\nVq1ahR07duj9+nPmzMG6deswfPhwWFlZYcmSJfD19YWDgwMAoKCgAMeOHcPWrVv1fu2qcKXTxlN+\nTM3u3bthaWkJ4P4thjlz5hi5uqZl+fLlWL1mDeZ/mYqWbUxrbFtx5eGqZFw6gz0vjUZUVBQmTJig\nz1JrdefOHTz44IO4fft2tW1MTEzwr3/9C7t27TJgZURUF5K5FeXh4YFly5YhMDAQXbt2RUJCAjw9\nPTW3oU6ePAkrKys4Ota+TsbatWvh7Oxcp+svXboU48aNg4eHB2xtbaFWq7XG8Rw5cgRubm6wtrau\n2x9GklJxoHDZuKrapoJT1fr16wdRWoqbl/SzmGHGxZ8AQO+9srpo3bo1QkJCqj1e1ou6cOFCQ5VE\nRPUg6d+KcnBwwIYNGxAUFIT3338fX375Jdq2bYuUlBSYmppi06ZNGDhwYL3OHRERgYiICMTFxenU\nftasWXB2dsaiRYvqdT0yvupmPykUChQXFyMwMBAHDx5kz00dFBQU4EFbWzzg9jj8lmyqsW1tPTZC\nCOx8bgi6dbbETz8ZZ5G+0tJSzJ07F+Hh4TAxMdEMJFYoFFAqldi+fTv+/e9/G6U2ItKNZHpsKlKp\nVEhLS9P02Lz44ouIj4/H4cOHMW3aNCxevLjeoaY+7O3tDbKeDjWO2qZ067qIH2kzNTXFrJkzkfJD\nDLLTLjXoXL//EIPs9MuYP3+enqqrOxMTE4SFhSE+Ph6TJ0/Go48+it69e2PRokW4dOkSQw1REyDZ\nHpuTJ09i9OjRyMvLa5SBtElJSUhKSsLMmTP1fm6SllOnTmHgwIHVhpryv958584dTc/NyZMnDRqe\nm6pbt26hp7MzWnbsiqC3D0DZslWV7WrqsSnIuYXd873wmKMDTp36ES1aSGb4HxE1MZINNkT6IoTA\n1q1b8eSTT1Y5pbt8sAHuh5udO3fi6aef5uw0HX355ZeYNGkSnAb7w2/JJ1WGm+qCTVFeNva/FoTc\n67/j9M8/o1evXoYomYhkisGGmr2KwYbq57///S+Cg4PxYA8PjAz+oNIPYlYVbK6dO4Hv3vsPCm/f\nxP59+7TWsSIiqg/29xKRXrz00kt44IEHMG/+fOxe4I1Hhweh1+jp6OTkAhOlUtOu5O4d/Hn+JM4d\niMCVHw+iWzdHHDh6VGtpByKi+mKPDTV77LHRr4yMDCxfvhw7d+1CcVERWrZpByu7R3Hz8ll06tYL\n2em/QV1yD1bW1pj33HN45ZVX0K5dO2OXTUQywWBDzR6DTePIzc3FV199hdOnT+PXX3/FN998gzFj\nxsDFxQX9+/fHmDFjuIIvEekdgw01eww2RETyIdl1bIiIiIjqisGGiIiIZIPBhoiIiGSDwYaIiIhk\ng8GGiIiIZIPBhoiIiGSDwYaIiIhkg8GGiIiIZIPBhoiIiGSDwYaIiIhkg8GGiIiIZIPBhoiIiGSD\nwYaIiIhkg8GGiIiIZIPBhoiIiGSDwYaIiIhkg8GGiIiIZIPBhoiIiGSDwYaIiIhkg8GGiIiIZIPB\nhoiIiGSDwYaIiIhkg8GGiIiIZIPBhoiIiGSDwYaIiIhkg8GGiIiIZIPBhuokLi4Ob731ls7tN2/e\njL179zZiRbUrKirCvHnzkJGRoVP7jIwMPPfccygqKmrkyoiISN+abbCJiIiAt7e3zu3d3d0RGxvb\neAU1EXv27MGrr76KN998s9a2mzdvxpw5c7B9+3YIIQxQXdV+++037Ny5E97e3rWGm4yMDPj4+GDn\nzp24dOmSgSokIiJ9abbBpiK1Wo3FixfDxsYG5ubmmDhxIrKysjTHAwICEBMTY8QKpeHDDz/EjBkz\nsGLFihrDTVmo8fPzQ2RkJBQKhQGr1NanTx8cOnQIN27cqDHclIWaa9eu4dChQ3BzczNwpURE1FAM\nNv8IDQ1FdHQ0EhIScP36dQDA9OnTNccZbO5TKpXYsmVLjeGmfKiJiopCmzZtjFCptiFDhtQYbiqG\nmqFDhxqpUiIiahAhMXv27BGOjo7C1NRUjBw5UgQHB4tJkybp/Tpbt24VXl5emsd2dnYiPDxc8zgl\nJUUAEFevXtXss7e3F6dPn9Z7LU1RSUmJmDFjhgAgVqxYodkfFhYmAAg/Pz9RVFRkxAqr9v333wsz\nMzPRvXt3cePGDSGEEADEY489JkxNTcXx48eNXCERETWEpHpstm3bhpCQEOzatQv5+fnw9/fHxo0b\n63xLIDQ0FC4uLjq3z83NRXp6Otzd3TX7HB0dYWFhgeTkZM2+gIAAREdH16kWuaqq50aKPTUVVey5\nSUpKAgD21BARyYWxk1WZgoIC0bFjR3Hw4EGtfQA0+9q0aSO8vLyEl5eX+OSTTxp0vfI9Nunp6QKA\nSE1N1WpjZ2cnduzYoXkcGxsr+vbt26Dryk35nhtIuKemou+//16YmpqKVq1aCQDsqSEikokWRk1V\n5cTHx6O0tBR+fn6afZmZmQCg6bGxtbVFXFyc3q9tbm4OAMjLy9Pan5ubCwsLC83jtLQ02NnZ6f36\nVTHmYNuGOHToENq2bWvsMups2LBhxi6BiIhqIHScXSuZW1G3bt1Cp06dtPbt3r0bnTt3RpcuXQAA\nN2/ehJeXF8aPH4/U1FS9XdvS0hJ2dnZITEzU7EtNTYVKpdK6pRUTE4OAgAC9XbcmQogmsYWFhQEA\nRo8eral9xYoVRq+rpu3GjRt47LHHYGpqig8//BBmZmbo3r07bty4YfTauHHjxo1b1VtdPkAl4aef\nfhImJiYiLi5O3LlzR+zatUtYWFiI0aNHa9pkZmYKIYT49ttvtQb+1kfFwcOrV68W3bt3F6mpqSIv\nL09MmjRJ+Pr6ao7//fffwtTUVFMDVR4oDKDKAcVScuPGjUoDhasaUExERE2TZHpsPDw8sGzZMgQG\nBqJr165ISEiAp6en1sBha2trAMCIESM0U7KrsnbtWjg7O9fp+kuXLsW4cePg4eEBW1tbqNVq7Ny5\nU3P8yJEjcHNz09TQ3FU3ULi2qeDGVN2U7tqmghMRURNi7GRVE3t7exEZGSmEECI/P1+UlJQIIYQ4\nf/688PDwaNC5K/bY1GbmzJliw4YNDbqmXFQ3pbvs5VTdVHBjqqqnpiL23BARNX2SGTxckUqlQlpa\nmqbH5uLFi5g7d65moO8nn3xi0Hrs7e0RFBRk0GtKkS5TusumggP3x9sAwBtvvGHIMrXouvheWc+N\nn58fvL29ERcXhwceeMDA1RIRUUNINthcuHAB5ubmcHR0BAD0798fZ8+e1dv5+/Tpg5kzZ+rcvuwD\nurnLy8vTaZ2a8uEmLy8PQgijzfS6c+cOlEqlTuvUlIWb5557DsXFxQaqkIiI9EUhRF2GGhPd/10t\npVJZab9Coag0cr20tBQKhcLo09erq1lf7YmISBoYbEhvqgo2REREhiSZWVFEREREDcVgQ0RERLLB\nYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFg\nQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBD\nREREssFgQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENERESywWBDREREssFgQ0RERLLBYENE\nRESywWBDREREssFgQ0RERLLBYEN1UlRUhKtXr+rc/ubNm8jJyWm8goiIiMpptsEmIiIC3t7eOrd3\nd3dHbGxs4xXURMyePRuDBw/G5cuXa22bkZGB4cOHIzAwEEIIA1RHRETNXbMNNhWp1WosXrwYNjY2\nMDc3x8SJE5GVlaU5HhAQgJiYGCNWKA2vvPIK7t27h+HDh9cYbjIyMuDj44Nr165h5cqVUCgUBqyS\niIiaKwabf4SGhiI6OhoJCQm4fv06AGD69Oma4ww29/Xq1QtHjx6tMdyUDzWHDh3C0KFDjVApERE1\nR5ILNpGRkXBycoKZmVvTzNUAAARISURBVBlGjRqFkJAQBAUFNfp1w8LCsGTJEnTr1g3t27fH+vXr\ncfjwYaSlpQEAXF1doVQqcebMmUavRepqCjcMNUREZEySCjbbtm1DSEgIdu3ahfz8fPj7+2Pjxo1w\nc3Or03lCQ0Ph4uKic/vc3Fykp6fD3d1ds8/R0REWFhZITk7W7AsICEB0dHSdapGr6sINQw0RERmT\nZIJNYWEhgoODERYWBk9PTygUCsyePRtqtVoTbJKTkzF69Gj4+Phg1qxZ1Z5r6dKlOHfunM7Xzs/P\nBwC0b99ea7+lpSVUKpXm8dixY3HgwIG6/FmyVj7ceHl5AQBDDRERGVULYxdQJj4+HqWlpfDz89Ps\ny8zMBAC4ubnh7t27WLRoEfbu3VspgDSUubk5ACAvL09rf25uLiwsLDSP09LSYGdnp9drN3W9evXC\nnj17MHLkSAD3b+kx1BARkbFIJtjcunULnTp10tq3e/dudO7cGV26dMHx48dhbm6Op556Cnl5eVi0\naBH8/f31cm1LS0vY2dkhMTERffr0AQCkpqZCpVJp3dKKiYnBxIkT9XLN2jTVWURTp07F1KlTjV0G\nERHJjK7Lhkgm2PTs2RMpKSmIj4/HwIEDsXfvXoSGhmLQoEEAgD///BOJiYlISkqCEAKDBw/GsGHD\ntHpUGmLOnDlYt24dhg8fDisrKyxZsgS+vr5wcHAAABQUFODYsWPYunWrXq5Xm6aw7kvFgcIdOnSA\nj48PWrZsiWPHjqF79+7GLpGIiJoZyYyx8fDwwLJlyxAYGIiuXbsiISEBnp6emvE1HTt2xIABA2Bp\naYkOHTrAxcUFKSkpVZ5r7dq1cHZ2rtP1ly5dinHjxsHDwwO2trZQq9XYuXOn5viRI0fg5uYGa2vr\n+v+RMlLV7CddpoITERE1JoWQcNeAg4MDNmzYgKCgIOTl5WHEiBH48ccfIYSAh4cHjh49Cisrq3qd\nOyIiAhEREYiLi9Op/axZs+Ds7IxFixbV63pyUtuU7gsXLrDnhoiIjEIyPTYVqVQqpKWlaXps2rdv\nj0WLFmH48OEYMmQIXnzxxXqHmvqwt7c3yHo6UqfLOjXsuSEiImORbI/NyZMnMXr0aOTl5TXKQNqk\npCQkJSVh5syZej+3nAUFBeHQoUM6Teku67lxcnLCiRMnmuyAaCIiajokG2xImjIzM3HlyhUMGDBA\np/a//PIL2rVrh4cffriRKyMiImKwISIiIhmR7BgbIiIiorpisCEiIiLZYLAhIiIi2WCwISIiItlg\nsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCw\nISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItlgsCEiIiLZYLAh\nIiIi2WCwISIiItlgsCEiIiLZYLAhIiIi2WCwISIiItn4P2a7sd58hD+CAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lookahead_circ.draw(output='mpl')" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nYXU/AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stochastic_circ.draw(output='mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preset Pass Managers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Qiskit comes with several pre-defined pass managers, corresponding to various levels of optimization achieved through different pipelines of passes. Currently ``optimization_level`` 0 through 3 are supported, with higher being more optimized at the expense of more time. Choosing a good pass manager may take trial and error, as it depends heavily on the circuit being transpiled and the backend being targeted.\n", "\n", "Here we illustrate the different levels by looking at a state synthesis circuit. We initialize 4 qubits to an arbitrary state, and then try to optimize the circuit that achieves this.\n", "\n", "- ``optimization_level=0``: just maps the circuit to the backend, with no explicit optimization (except whatever optimizations the mapper does).\n", "\n", "- ``optimization_level=1``: maps the circuit, but also does light-weight optimizations by collapsing adjacent gates.\n", "\n", "- ``optimization_level=2``: medium-weight optimization, including a noise-adaptive layout and a gate-cancellation procedure based on gate commutation relationships.\n", "\n", "- ``optimization_level=3``: heavy-weight optimization, which in addition to previous steps, does resynthesis of 2-qubit blocks of gates in the circuit." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import math\n", "from qiskit.test.mock import FakeTokyo\n", "\n", "qr = QuantumRegister(10)\n", "qc = QuantumCircuit(qr)\n", "\n", "backend = FakeTokyo() # mimicks the tokyo device in terms of coupling map and basis gates\n", "backend.properties = {} # remove fake properties" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPgAAAHpCAYAAACvLPGBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3X9Q2/dh//GXArdWsSVE+LlAJQLc\nrgcLoKmaYsdUZEstM8unDeKuzo2MJNS+85KsB/bQws3x7TKfbHc7k1t3HZerYYBGaLtN6rwalgyr\n6XlVE3NAnGzrGFiMrC7Grfgo+BQlHz7fP3bVqi+2I9nSR+Lt1+POd/E774/ebyQ/LfHRx0KjKIoC\nIhLSfdneABFlDgMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycS\nGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIY\nAycSGAMnEhgDJxJYfrY3QNnzla98BTMzM9nehjCamppw5syZbG8jAZ/B72EzMzMMPE1y9b7kM/g9\nrqmpCRcuXMj2Nra8lpaWbG/hpvgMTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiSwezbwwcHBlN+7\ntFgsmJiYyMyGiDIgpwIfGxtDc3Mz9Ho98vPVvQZHlmUcPXoUJSUl0Ol0aG9vx+rqasIcl8sFv9+v\n6r6yJZn7g3JfTgVeWFiIw4cPZ+V6Xo/HA5/Ph2AwiOXlZQBAR0dHwpx7KfBk7g/aAhSVvfbaa0pN\nTY2ybds25Qtf+ILS3d2tPPHEEwlzpqamlLy8vIzu4+zZs4rdbo//3mg0Kq+++mr89/Pz8woA5cqV\nKwnHmUwm5e23387o3tRit9sT7oNflOz9Qf/rdvdlNqn6DD40NISenh6Mjo4iEonA6XSiv78fZrM5\nret4PB40NDQkPT8cDmNpaQkWiyU+VlNTA71ej9nZ2YS5LpcLPp8vbXvNRancH5TbVAv8xo0b6O7u\nxsDAAGw2GzQaDbq6uiDLctKBj4yMYMeOHdixYwempqZuOc/tdmNubi7pvUUiEQBAQUFBwrjBYIAk\nSQlje/fuxblz55K+7a0olfuDcptqZ7ICgQA2NjbQ2toaH7t27RoAJBV4OBzGV7/6VfzgBz/ABx98\ngMcffxzT09O47767/ztKp9MBANbW1jatqdfrE8ZCoRCMRuNdr/lJNBpNxtcAALvdvmkslfuD/k8g\nEFDtcVMUJal5qj2Dr6ysoLS0NGHM6/WirKwM5eXln3h8MBiE3W7Hpz/9aRQXF+PBBx/ElStX0rI3\ng8EAo9GI6enp+NjCwgIkSdr0Ut/v98PlcqVl3dtRFCXjv24WN5Da/UH/x263q/K4JRs3oGLgdXV1\nmJ+fRyAQQCwWg9frhcfjSXj2lmUZ0WgUsVgMABCNRhGNRqEoCq5fv47CwsL43MLCQly/fj1t+zt4\n8CBOnjyJxcVFSJKE3t5eOBwOVFVVxeesr69jamoKTqczbevmqmTuD8p9qgVutVrR19eHtrY2VFZW\nIhgMwmazJQQ+PDwMrVYLh8MBWZah1Wqh1WoRCoVQVFSEn/3sZ/G54XAYRUVFN13rxIkTqK+vT2l/\nbrcb+/btg9VqRUVFBWRZxsjISMKcyclJmM1mFBcXp3TbW1Ey9wdtAWk9J58ik8mkjI+PJzX3Zz/7\nmWI2m5VoNKpcv35daWxsVGRZvuO1//+3yZLR2dmpnD59+o7XzDW5+tbOVpSr92XWPrJJkiSEQqGk\nz6AbDAZ85StfiV9e+ud//udpOcGWCpPJhP3796u6JtHdyFrgly9fhk6nQ01NTdLHPPXUU3jqqafS\nsn5TUxM6OztTOub48eNpWZtILVkLfOfOnVl9T7WpqQlNTU1ZW59IDTl1LToRpRcDJxIYAycSGAMn\nEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycS\nGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEhgDJxIYAycSGAMnEtg9G/jg\n4CBaWlpSOsZisWBiYiIzGyLKgJwKfGxsDM3NzdDr9cjPz1d1bVmWcfToUZSUlECn06G9vR2rq6sJ\nc1wuF/x+v6r7ypZsPhaUPjkVeGFhIQ4fPowzZ86ovrbH44HP50MwGMTy8jIAoKOjI2HOvRR4Nh8L\nSh/V/2oeHx/Hiy++iKtXr2Lnzp14+OGHsbS0hG9+85twOBwAgAsXLqi9LQwMDODYsWOorq4GAJw6\ndQq1tbUIhUIwmUwAgMbGRuTl5eHSpUuwWCyq71FN2XwsKH1UfQYfGhpCT08PRkdHEYlE4HQ60d/f\n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\nr9dv+gQRl8sFn8+Xtr1uFW+88QZ/asgWpFrgN27cQHd3NwYGBmCz2aDRaNDV1QVZlpMK/L/+67/w\n+c9/Hs3Nzdi1a9dtP63T7XZjbm4u6b39/IMBCwoKEsYNBgMkSUoY27t3L86dO5f0bYvg29/+Nr7+\n9a+jv78/21uhFKl2JisQCGBjYwOtra3xsZ9/OmYygRsMBvz93/89ioqK8N577+HQoUN4880307I3\nnU4HAFhbW0sYD4fD0Ov1CWOhUAhGozEt697OJ30gYbrY7fbb/v9vfvObOHToEPx+P37t135NlT1t\nVYFAQLXHTUnyg5hUewZfWVlBaWlpwpjX60VZWRnKy8s/8fiioiIUFRUBAD71qU8hLy8vbXszGAww\nGo2Ynp6Ojy0sLECSpE0v9f1+/6YP8csERVEy/uuT4j579iwOHTqE73znO3jssccy/jVvdXa7XZXH\nLdm4ARUDr6urw/z8PAKBAGKxGLxeLzweT8KztyzLiEajiMViAIBoNIpoNJrwBcmyjBdeeAFutzut\n+zt48CBOnjyJxcVFSJKE3t5eOBwOVFVVxeesr69jamoKTqczrWvnoldeeQVHjhzBxMQEHn300Wxv\nh+6QaoFbrVb09fWhra0NlZWVCAaDsNlsCYEPDw9Dq9XC4XBAlmVotVpotVqEQiEA//us9swzz8Dp\ndGLPnj23XOvEiROor69PaX9utxv79u2D1WpFRUUFZFnGyMhIwpzJyUmYzWYUFxendNtb0R/+4R9C\nkiQ89thjCZ9KSltLVj9VtaqqCqdPn8b+/fuTmv/cc8+hrKwMf/Inf3LXaw8ODmJwcDClT8F8+umn\nUV9fjyNHjtz1+rkgVz8JdCvK1fsyaxe6SJKEUCiU9FtkFy5cwMDAAN544w20tLSgra0twzvczGQy\nJf2XEVEuyNqPLrp8+TJ0Oh1qamqSmt/S0hL/3jwdmpqaUr4y6/jx42lbn0gNWQt8586dm95jVlNT\nUxOampqytj6RGnLqWnQiSi8GTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiQw\nBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAG\nTiQwBk4kMAZOJDAGTiQwBk4kMAZOJDAGTiSwezbwwcFBtLS0pHSMxWLBxMREZjZElAE5FfjY2Bia\n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\n", "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "random_state = [\n", " 1 / math.sqrt(4) * complex(0, 1),\n", " 1 / math.sqrt(8) * complex(1, 0),\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 1 / math.sqrt(8) * complex(1, 0),\n", " 1 / math.sqrt(8) * complex(0, 1),\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 1 / math.sqrt(4) * complex(1, 0),\n", " 1 / math.sqrt(8) * complex(1, 0)]\n", "\n", "qc.initialize(random_state, qr[0:4])\n", "qc.draw(output='mpl')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now map this to the 20-qubit Tokyo device, with different optimization levels:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gates = {'u3': 15, 'u1': 15, 'cx': 107}\n", "depth = 125\n" ] } ], "source": [ "optimized_0 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=0)\n", "print('gates = ', optimized_0.count_ops())\n", "print('depth = ', optimized_0.depth())" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gates = {'u3': 15, 'cx': 95, 'u1': 10}\n", "depth = 108\n" ] } ], "source": [ "optimized_1 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=1)\n", "print('gates = ', optimized_1.count_ops())\n", "print('depth = ', optimized_1.depth())" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gates = {'u3': 15, 'cx': 40, 'u1': 6}\n", "depth = 49\n" ] } ], "source": [ "optimized_2 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=2)\n", "print('gates = ', optimized_2.count_ops())\n", "print('depth = ', optimized_2.depth())" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gates = {'u3': 50, 'cx': 26, 'u2': 8}\n", "depth = 45\n" ] } ], "source": [ "optimized_3 = transpile(qc, backend=backend, seed_transpiler=11, optimization_level=3)\n", "print('gates = ', optimized_3.count_ops())\n", "print('depth = ', optimized_3.depth())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see that the circuit gets progressively better (both in terms of depth and the number of expensive cx gates)." ] } ], "metadata": { "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }