{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "295b5202", "metadata": {}, "source": [ "# QSCOUT Optimizations with Qiskit" ] }, { "attachments": {}, "cell_type": "markdown", "id": "stone-aerospace", "metadata": {}, "source": [ "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Infleqtion/client-superstaq/blob/main/docs/source/optimizations/qscout/qscout_qss.ipynb) [![Launch Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Infleqtion/client-superstaq/HEAD?labpath=docs/source/optimizations/qscout/qscout_qss.ipynb)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "related-museum", "metadata": {}, "source": [ "Below is a brief tutorial on Superstaq optimizations for Quantum Scientific Computing Open User Testbed (QSCOUT), a trapped ion quantum computing testbed at Sandia National Laboratories. For more information on QSCOUT, visit their website [here](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout/)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "8c861954", "metadata": {}, "source": [ "## Imports and API Token\n", "\n", "This example tutorial notebook uses `qiskit-superstaq`, our Superstaq client for Qiskit; you can try it out by running `pip install qiskit-superstaq[examples]`:" ] }, { "cell_type": "code", "execution_count": 1, "id": "af13cd74", "metadata": {}, "outputs": [], "source": [ "# Required imports\n", "try:\n", " import qiskit_superstaq as qss\n", "except ImportError:\n", " print(\"Installing qiskit-superstaq...\")\n", " %pip install --quiet 'qiskit-superstaq[examples]'\n", " print(\"Installed qiskit-superstaq.\")\n", " print(\"You may need to restart the kernel to import newly installed packages.\")\n", " import qiskit_superstaq as qss\n", "\n", "import random\n", "\n", "import numpy as np\n", "import qiskit" ] }, { "attachments": {}, "cell_type": "markdown", "id": "6526754f", "metadata": {}, "source": [ "To interface Superstaq via Qiskit, we must first instantiate a provider in `qiskit-superstaq` with `SuperstaqProvider()`. We then supply a Superstaq API token (or key) by either providing the API token as an argument of `qss.SuperstaqProvider()` or by setting it as an environment variable (see more details [here](https://superstaq.readthedocs.io/en/latest/get_started/basics/basics_qss.html#Set-up-access-to-Superstaq%E2%80%99s-API))." ] }, { "cell_type": "code", "execution_count": 2, "id": "855dfcb6", "metadata": {}, "outputs": [], "source": [ "# Get the qiskit superstaq provider for Superstaq backend\n", "provider = qss.SuperstaqProvider()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "dcc8201d", "metadata": {}, "source": [ "## Single Circuit Compilation\n", "\n", "Let us start by creating an example qiskit circuit that we will then compile and optimize for the QSCOUT trapped-ion testbed at Sandia National Laboratories." ] }, { "cell_type": "code", "execution_count": 3, "id": "f1462ec7", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAADuCAYAAACDMIXKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMINJREFUeJzt3XlcVOX+B/DPLMCwyU7DoiwqiqgpbrmLoYlL5paaaV0r7ZZF5c8sW72ZlnorNbW8Xiu9RpaaC265pKGZooalIKKCgTDqsAnIOnN+f3DhSoAyc2bmzNDn/Xr1ijnnPOd8B4eZzzznOc+RCYIggIiIiMhIcqkLICIiItvGMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKAwTREREJArDBBEREYnCMEFERESiMEwQERGRKEqpCyAismWJiYkGba/VarF161aMHTsW3t7eTW7Xo0cPQ0sjshj2TBARWZBWq8XatWuh1WqlLoXIZBgmiIiISBSGCSIiIhKFYYKIiIhEYZggIrIgV1dXDBs2DK6urlKXQmQyMkEQBKmLICKyVYZezWEsXs1B1ow9E0REFlReXo7MzEyUl5dLXQqRyTBMEBFZUHp6OsaNG4f09HSpSyEyGYYJIiIiEoUzYBIRUT2CIECn00ldhkEUCgVkMpnUZfwlMUwQEVE9Op0OW7ZskboMg4wbNw5KJT/WpMDTHERERCQKIxwRkQW1b98eJ0+elLoMIpNizwQRERGJwjBBRGRBV69exfTp03H16lWpSyEyGYYJIiILKi0txblz51BaWip1KUQmwzBBREREojBMEBERkSgME0RERCQKwwQRkQX5+flh/vz58PPzk7oUIpPhPBNERBbk5uaGmJgYqcsgMin2TBARWVB+fj6+++475OfnS12KxZWVleHmzZvQaDTQarWorKw0qH1qaipOnz5tpupIDPZMEBFZ0PXr17FkyRJ06tQJHh4eUpdjVmVlZTh+/DjOnz+PK1euICcnB4Ig1K5XKBRo1aoVQkJC0LVrV0RGRkKhUDS4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", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create a two-qubit qiskit circuit\n", "rng = np.random.default_rng(random.getrandbits(128))\n", "theta = rng.uniform(0, 4 * np.pi)\n", "circuit1 = qiskit.QuantumCircuit(2)\n", "circuit1.cx(0, 1)\n", "circuit1.rz(theta, 1)\n", "circuit1.cx(0, 1)\n", "circuit1.measure_all()\n", "\n", "# Draw circuit for visualization\n", "circuit1.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e88aeb76", "metadata": {}, "source": [ "Using the same circuit from above as input, we will now compile it for QSCOUT and visualize the differences by drawing the compiled circuit. " ] }, { "cell_type": "code", "execution_count": 4, "id": "0435f8de", "metadata": {}, "outputs": [ { "data": { "image/png": "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tmkszsoQEZEt6MzPSpYZABcvNh9YGxMTY5b9GzttBgB7/3MSx878gkC/Hnj+8YctblqQiIhIaCwzaD74FwDc3NzMsn9jj5m5c1amuKwcKz/ZZupoREREFqEzx8ywzABwdW2+sZa57oVUWVXb6WNmamrrTJSGiIjIurDMAOjfvz927dqFkydPmmX/xnwPyGNliIjIlnTmmBmezQTg3LlzGDJkCOzt7ZGeno6IiAihI/FYGSIiIj3xonkABg8ejFmzZqGxsRFxcXE4cuSIzvM3b97EypUrUV3dNadX82q/RERE+uPMzG8qKioQHx+vvW25v78//Pz8UFhYiPz8fGg0GpSVlcHd3d3sWTgrQ0REpD/OzPzG1dUVhw4dwqZNmzB27FjU1NTg/PnzkEqlePDBB7Fp0yYoFIouydLNxQmOcgfOyhAREemBMzMWqq6+AXIHe5YZIiKiu2CZISIiIlHj10xEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRq/x+3pV2ls62ESgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with qscout compile\n", "compiler_output = provider.qscout_compile(circuit1)\n", "\n", "# Call circuit from the compiler output to get the corresponding output circuit\n", "output_circuit = compiler_output.circuit\n", "\n", "# Visualize the compiled circuit\n", "output_circuit.draw(\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "bb7feda2", "metadata": {}, "source": [ "The resulting output is now a circuit compiled and optimized to QSCOUT's native operations. But there's more! With Superstaq's compilation, users can also get the corresponding Jaqal (see [Just another quantum assembly language](https://arxiv.org/abs/2008.08042)) program for their compiled circuit. The Jaqal program is a useful representation that highlights the sequence of pulse level single and two-qubit gates that have to be executed on the trapped ions to realize the user's circuit. To view the jaqal program, users simply have to call `jaqal_program` on their `compiler_output`, and print to list it in a readable format. " ] }, { "cell_type": "code", "execution_count": 5, "id": "663125f1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 1.1214186569517297\n", "<\n", "\tR allqubits[0] -1.5707963267948972 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "measure_all\n", "\n" ] } ], "source": [ "# Get jaqal program\n", "print(compiler_output.jaqal_program)" ] }, { "cell_type": "markdown", "id": "c47e0bc4", "metadata": {}, "source": [ "Breaking down the printed Jaqal program, we see that we begin a 2-qubit quantum register with **allqubits[2]** in correspondance to our 2-qubit circuit. The **prepare_all** command prepares the state of all the qubits in the register in the $z$ basis as the standard. Next, the program describes the pulse-level gates to be used following the format outlined and described [here](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout-jaqal/). For a quick reference, here is a brief description of the pulse-level gates and operations that are used in a Jaqal program: \n", "\n", "- **R** ` ` : Performs a counter-clockwise rotation around an axis in the equatorial plane of the Bloch sphere defined by `` , measured counter-clockwise from the $x$ axis, by the angle defined by ``.\n", "- **Rx** ` ` : Performs a counter-clockwise rotation around the $x$ axis, by the angle defined by ``.\n", "- **Ry** ` ` : Performs a counter-clockwise rotation around the $y$ axis, by the angle defined by ``.\n", "- **Rz** ` ` : Performs a counter-clockwise rotation around the $z$ axis, by the angle defined by ``.\n", "- **Px** `` : Performs a counter-clockwise rotation around the $x$ axis, by $\\pi$. In other words, a Pauli $X$ gate.\n", "- **Py** `>` : Performs a counter-clockwise rotation around the $y$ axis, by $\\pi$. In other words, Pauli $Y$ gate.\n", "- **Pz** `` : Performs a counter-clockwise rotation around the $z$ axis, by $\\pi$. In other words, Pauli $Z$ gate.\n", "- **Sx** `` : Performs a counter-clockwise rotation around the $x$ axis, by $\\pi/2$. This results in a $\\sqrt{X}$ gate.\n", "- **Sy** `` : Performs a counter-clockwise rotation around the $y$ axis, by $\\pi/2$. This results in a $\\sqrt{Y}$ gate.\n", "- **Sz** `` : Performs a counter-clockwise rotation around the $z$ axis, by $\\pi/2$. This results in a $\\sqrt{Z}$ gate.\n", "- **Sxd** `` : Performs a clockwise rotation around the $x$ axis, by $\\pi/2$. That is, a $\\sqrt{X}^\\dagger$ gate.\n", "- **Syd** `` : Performs a clockwise rotation around the $y$ axis, by $\\pi/2$. That is, a $\\sqrt{Y}^\\dagger$ gate.\n", "- **Szd** `` : Performs a clockwise rotation around the $z$ axis, by $\\pi/2$. That is, a $\\sqrt{Z}^\\dagger$ gate.\n", "- **MS** ` ` : This is the general two-qubit Mølmer–Sørensen gate used for entanglement. Supposing that $\\theta$ and $\\varphi$ represent the `` and `` respectively, the general MS gate is given by, $$\\exp\\left(-i\\left(\\frac{\\theta}{2}\\right)(\\cos \\varphi X + \\sin \\varphi Y)^{\\otimes 2}\\right).$$\n", "- **Sxx** ` ` : This is the XX version of two-qubit Mølmer–Sørensen gate, $$\\exp \\left(-i\\left(\\frac{\\pi}{4}\\right) X\\otimes X\\right).$$\n", "- **measure_all** : Command to measure all qubits of the quantum register in the $z$ basis. \n", "\n", "The Jaqal program output is also very useful is showcasing when multiple gates are combined into a single gate block for execution -- or in the case of parallel gate blocks -- executed at the same time. These gate blocks are marked by the angle brakets like so,\n", "```\n", "<\n", " // Parallel gates\n", ">\n", "```\n", "providing the user more valuable context between the device execution and the original circuit representation. Further details on the verstaility of the Jaqal program can be found at this [reference](https://www.sandia.gov/quantum/quantum-information-sciences/projects/qscout-jaqal/)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "af41c8b6", "metadata": {}, "source": [ "## Multiple Circuits Compilation\n", "\n", "All the functionalities we have seen so far can also be used on a multiple circuits input as well. To illustrate this, let us create a different, example two-qubit circuit (say, a Bell-state circuit):" ] }, { "cell_type": "code", "execution_count": 6, "id": "9dc38d6a", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create second circuit\n", "circuit2 = qiskit.QuantumCircuit(2)\n", "circuit2.h(0)\n", "circuit2.cx(0, 1)\n", "circuit2.measure_all()\n", "\n", "# Draw second circuit for visualization\n", "circuit2.draw(\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "733af808", "metadata": {}, "source": [ "By passing multiple circuits as a list to the `qscout_compile` endpoint, we can compile all of them individually with a single call to `qscout_compile`. This will return all the corresponding compiled circuits as a list, like so: " ] }, { "cell_type": "code", "execution_count": 7, "id": "0d317286", "metadata": {}, "outputs": [], "source": [ "# Create list of circuits\n", "circuit_list = [circuit1, circuit2]\n", "\n", "# Compile a list of circuits\n", "compiler_output_list = provider.qscout_compile(circuit_list)" ] }, { "cell_type": "code", "execution_count": 8, "id": "31276b76", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Compiled circuit 1:\n" ] }, { "data": { "image/png": "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tmkszsoQEZEt6MzPSpYZABcvNh9YGxMTY5b9GzttBgB7/3MSx878gkC/Hnj+8YctblqQiIhIaCwzaD74FwDc3NzMsn9jj5m5c1amuKwcKz/ZZupoREREFqEzx8ywzABwdW2+sZa57oVUWVXb6WNmamrrTJSGiIjIurDMAOjfvz927dqFkydPmmX/xnwPyGNliIjIlnTmmBmezQTg3LlzGDJkCOzt7ZGeno6IiAihI/FYGSIiIj3xonkABg8ejFmzZqGxsRFxcXE4cuSIzvM3b97EypUrUV3dNadX82q/RERE+uPMzG8qKioQHx+vvW25v78//Pz8UFhYiPz8fGg0GpSVlcHd3d3sWTgrQ0REpD/OzPzG1dUVhw4dwqZNmzB27FjU1NTg/PnzkEqlePDBB7Fp0yYoFIouydLNxQmOcgfOyhAREemBMzMWqq6+AXIHe5YZIiKiu2CZISIiIlHj10xEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRq/x+3pV2ls62ESgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Compiled circuit 2:\n" ] }, { "data": { "image/png": "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lsSlgzMW/222Qevy/F4A33//PQBgwoQJRi8yQH3bNBRHZYiIyBq05XclywyAq1frJ9ZGRka2y/YNHTYDgD0/ncLxc5fg27UL5j/5mNkNCxIREQmNZQb1k38BoGPHju2yfUPnzNw/KpNfVIx3P/3G2NGIiIjMQlvmzLDMAHBxqb+xVnvdC6m0rLLNc2YqKquMlIaIiMiysMwA6N27N3bt2oVTp061y/YNOQ7IuTJERGRN2jJnhmczAbhw4QIGDBgAOzs7JCUlITQ0VOhInCtDRESkI140D0D//v3x+OOPo7a2FtHR0Th27JjW63fu3MG7776L8nLTnF7Nq/0SERHpjiMzvyspKcHkyZM1ty339vZG165dkZubi+zsbKjVahQVFaFTp07tnoWjMkRERLrjyMzvXFxccOTIEWzevBkjR45ERUUFLl68CBsbGzz66KPYvHkz5HK5SbJ0cHaEg8yeozJEREQ64MiMmaqqroHM3o5lhoiIqBUsM0RERCRqPMxEREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESixjJDREREosYyQ0RERKLGMkNERESi9v9034vJH4yTcwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# To get the list of compiled output circuits from the compiler output list, call `circuits` instead of just `circuit` as would be called for a single circuit input\n", "print(\"\\nCompiled circuit 1:\")\n", "display(compiler_output_list.circuits[0].draw(\"mpl\"))\n", "print(\"\\nCompiled circuit 2:\")\n", "display(compiler_output_list.circuits[1].draw(\"mpl\"))" ] }, { "cell_type": "markdown", "id": "2837a3a9-20b4-44d6-8beb-3aa76f4e988c", "metadata": {}, "source": [ "The corresponding Jaqal programs are still accessible via the `.jaqal_program` attribute, which will now contain multiple subcircuits sandwiched between a pair of \"prepare_all\" and \"measure_all\" operations:" ] }, { "cell_type": "code", "execution_count": 9, "id": "6dab771e-4411-47c6-b8de-f761ba81ac39", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 1.1214186569517297\n", "<\n", "\tR allqubits[0] -1.5707963267948972 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "measure_all\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] 3.141592653589793 3.141592653589793\n", "\tR allqubits[1] 3.141592653589793 3.141592653589793\n", ">\n", "Sxx allqubits[0] allqubits[1]\n", "<\n", "\tR allqubits[0] -1.5707963267948972 1.5707963267948966\n", "\tR allqubits[1] 0.0 1.570796326794898\n", ">\n", "Rz allqubits[0] -1.5707963267948966\n", "measure_all\n", "\n" ] } ], "source": [ "print(compiler_output_list.jaqal_program)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "1d50dcd1", "metadata": {}, "source": [ "## Entangling Basis Compilation\n", "\n", "When compiling to the QSCOUT gateset, we can also specify the type of entangling basis gate to utilize during the compilation -- either a $XX$ or $ZZ$. Let's consider the first circuit example for earlier but with a different, random $R_Z$ angle and single measurement:" ] }, { "cell_type": "code", "execution_count": 10, "id": "7b6affee", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create circuit\n", "theta = rng.uniform(0, np.pi)\n", "circuit = qiskit.QuantumCircuit(2)\n", "circuit.cx(0, 1)\n", "circuit.rz(theta, 1)\n", "circuit.cx(0, 1)\n", "circuit.measure_all()\n", "\n", "# Visualize circuit\n", "circuit.draw(output=\"mpl\")" ] }, { "cell_type": "code", "execution_count": 11, "id": "686c40ca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "<\n", "\tRz allqubits[0] -3.141592653589793\n", "\tRz allqubits[1] -3.141592653589793\n", ">\n", "MS allqubits[0] allqubits[1] 0 -0.33881714468343394\n", "<\n", "\tR allqubits[0] -1.5707963267948966 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948966 1.5707963267948966\n", ">\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "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djMqxTDzu9LSUowaNQpz5szBDz/8ABcXF/Tq1Qt1dXU4ePAg5s2bh7KyMsHqaxiVCQ7ogM6hjYdLiYioeQ2jE05OUsyaMBIymfGXLdsDdzdXTI+vn+g8bGAvhAYJ+3BIS+IE4N9Nnz5dd9fdLVu26M3QvnXrFjZt2oSFCxea9byk9V/sRFl54+dkGEur1aKsohJA/YfRlPsGEBHRf2m1WtSq1XBxdha6FMHU1NTC2VlmcyP8ijZueGnuFLO2ZZgBcO7cOfTv3x8ymQw///wzevbsadH9r/j7lygtr7DoPomIiOyJZxsPLH5htlnb8vpeAN9++y0AYNy4cRYPMkB92jQXR2WIiMgRtOR3JcMMgEuX6ifWxsbGWmX/5g6bAcCe/5zEsbO/IjigA55//FGbGxYkIiISGsMM6if/AkDbtm2tsn9z58zcOypTWHIXKz/5ytKlERER2YSWzJlhmAHg6Vn/YC1rPQuprLyqxXNmKquqLVQNERGRfWGYAdCjRw/s3LkTJ0+etMr+zTkPyLkyRETkSFoyZ4ZXMwH4+eef0bdvXzg7OyM1NRXdu3cXuiTOlSEiIjISb5oHoE+fPpgxYwZqa2sRHx+PI0eO6K2/desWVq5ciYqK1rm8mnf7JSIiMh5HZn5XWlqKiRMn6h5bHhgYiICAAOTn5yM3NxdarRYlJSVo166d1WvhqAwREZHxODLzO09PTxw6dAibNm3C8OHDUVlZiQsXLkAqleKPf/wjNm3aBIVC0Sq1tPFwg6vchaMyRERERuDIjI2qVtVA7uLMMENERPQADDNEREQkajzNRERERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREosYwQ0RERKLGMENERESixjBDREREovb/Ae2o+bCs9pbfAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with XX entangling basis\n", "compiler_output = provider.qscout_compile(circuit, base_entangling_gate=\"xx\")\n", "\n", "# Visualize and get jaqal program of the compiled circuit\n", "print(compiler_output.jaqal_program)\n", "compiler_output.circuit.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "47f93a08", "metadata": {}, "source": [ "As we can see above, we get the same compiled gate structure as before. This is because, by default, the $XX$ interaction is used, and we observe that it uses the $R_{XX}$ gate as the base entangling gate in the compiled circuit. Similarly, let's take a look at the compiled circuit if we now specify the compiler to use the $ZZ$ interaction instead:" ] }, { "cell_type": "code", "execution_count": 12, "id": "03b5a411", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "from qscout.v1.std usepulses *\n", "\n", "register allqubits[2]\n", "\n", "prepare_all\n", "ZZ allqubits[0] allqubits[1] -0.33881714468343394\n", "<\n", "\tRz allqubits[0] 3.141592653589792\n", "\tRz allqubits[1] -3.1415926535897905\n", ">\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with zz entangling basis\n", "compiler_output = provider.qscout_compile(circuit, base_entangling_gate=\"zz\")\n", "\n", "# Get jaqal program and draw circuit\n", "print(compiler_output.jaqal_program)\n", "compiler_output.circuit.draw(output=\"mpl\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "299343cf", "metadata": {}, "source": [ "Looking at the compiled circuit above, we can see that by specifying the $ZZ$ entangling basis, we use $R_{ZZ}$ gate as the base entangling gate and the remaining single-qubit gates are compiled and optimized accordingly. " ] }, { "attachments": {}, "cell_type": "markdown", "id": "3df7bb28", "metadata": {}, "source": [ "## Swap Mirroring\n", "\n", "In addition to specifying the type of base entangling gate to use for the compilation and optimization, we can also specify whether to use swap mirroring to help reduce the two-qubit gate overhead of the circuit. By default, it is not enabled; but we will see the differences in circuit compilation by compiling to a random quantum volume model circuit. You can learn more about quantum volume and randomized circuits [here](https://arxiv.org/abs/1811.12926)." ] }, { "attachments": {}, "cell_type": "markdown", "id": "a3bf3246", "metadata": {}, "source": [ "### Create random Quantum Volume (QV) circuit" ] }, { "cell_type": "code", "execution_count": 13, "id": "9cc395bf", "metadata": {}, "outputs": [], "source": [ "# Generate a random QV circuit\n", "circ = qiskit.circuit.library.quantum_volume(num_qubits=2, depth=3, seed=1)\n", "circ.measure_all()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "551650d1", "metadata": {}, "source": [ "### Compile without swap mirroring" ] }, { "cell_type": "code", "execution_count": 14, "id": "90e10bf6", "metadata": {}, "outputs": [ { "data": { "image/png": "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GxSgScn/NLoMt+cbxF3j4DnIhfpxzMPbeXpOcIwD3s3TM85RGmNWBvpU3qDHnQT6GF0BPImPj48mTJjgsNd7cd4i5RUUKCwkRNOmXHfWY0fw8THmIKC56UFMJlOju8MdAGORCwDqQ04A8GRknPsymYy58zjQWJhMJofeedwqqcJa+W9fX9+zHrsz964eAAAAAAAANklMTNTChQsVHx9vdCmAw7DmJoBGafny5erdu3e1f+Lj4xUYGFjnttpMnDhRGzZssKuGqVOnKjExUSaTSdu2batzbGJiojp16lRVz6JFi84a849//EMmk0mfffZZ1XPDhg1TSkqKXXUB3qIx5MC+ffs0ePBgdezYUf3799fOnTtrHLdy5Uqdd9556t27t7p3767333+/atsll1yinj17qnfv3ho2bJi2bt1ata2+7CAjAGO5Uw7VN7akpET33nuvOnTooB49emjy5Mln7V/TuUpd50NkFOB+AgMD1a5duzqzCnA3zNwE0ChdccUVuuKKK6oenzx5Uv3799fTTz9d57aabNy4UdnZ2Ro0aJBdNVxzzTWaPn26hg4datP4RYsWqXfv3jVuS01N1TvvvKPzzz+/2vMPP/ywZs6cqQ8++MCu2gBv0BhyYMqUKbrjjjt0yy23aPHixbrlllu0adOmamOsVqsmT56s1atXq2fPnkpNTVXnzp01fvx4hYWF6ZNPPlHTpk0lSf/+9791yy236Oeff67av67sICMAY7lLDtky9tFHH5XJZNLevXtlMpmUmZlZbd/azlXqOh8iowD3k5GRoQULFui2225TbGys0eUADsHMTQCNXkVFhSZNmqSLLrpIt912m83bTps3b57+8Ic/2P2+w4cPV8uWLRtU85kqKip0++23a+7cuQoIqL5Y+9ixY/XFF1/o1KlT5/w+gCczIgeOHTumzZs3V81umjBhgg4fPqz9+/efNdZkMunkyZOSpNzcXEVFRVUd76cbm5J06tQpmUwmm2sgI4DGo7HnUF1jCwoKtGDBAv3lL3+pyqCYmJhq9dd2rlLX+RAZBbifU6dOafny5Ry38Cg0NwE0ejNnzlR2drZef/11u7adtnr1ag0cONCZJUqSbrrpJvXo0UO33Xabjh8/XvX8yy+/rCFDhqhv375n7ePn56cePXpo7dq1Tq8PcGdG5MDhw4cVGxtbtcC6yWRSQkKCDh06VG2cyWTSokWLNH78eLVu3VpDhw7V+++/L39//6oxN910k1q1aqU///nP+vDDD6vtX1t2SGQE0Jg05hyqb2xycrIiIyM1e/Zs9evXT8OGDdN///vfqn3rOlepCxkFAGgMuCwdQKO2bNkyLViwQJs3b67WKKhv25nS0tLUokWLas8NGjRI+/btq3H81q1b1apVK7vqXLNmjRISElRWVqYnnnhCN998s1auXKkdO3ZoyZIlWrNmTa37xsTEKC0tza73A7yJUTlgq/Lycj377LNaunSphg8frk2bNumKK67Q9u3b1axZM0mqumTz/fff1yOPPKKVK1dKqj07zkRGAMZr7DlUn/Lych08eFBdu3bV888/r61bt+riiy/Wzp07dfz48XrPVepCRgEAjEZzE0CjlZSUpNtuu02fffaZ4uLibN72e8HBwSouLq72nL2L+dcnISFBUuUMhgceeEAdO3aUJK1du1apqanq0KGDJCkzM1N33HGHMjIydNddd0mSiouLFRQU5NB6AE9hZA4EBAQoIyND5eXl8vX1ldVq1aFDh6qO99O2bdum9PR0DR8+XJLUv39/tWzZsqp5cKabb75Zd955p06cOKGoqKhas+NMZARgLHfIIUlq1apVrWObNm0qs9msSZMmSZL69OmjNm3aaPv27dq3b1+95yp1IaMAAEbjsnQAjVJeXp6uvvpqzZo166wF7OvaVpOePXsqKSnJWaWqoKCgaq09SVq4cKH69OkjSbrrrruUkZGh1NRUpaam6vzzz9f8+fOrfVnYvXu3evXq5bT6AHdldA40b95c5513nv75z39KkpYsWaKWLVuqffv21cadbijs3r1bkrR//34lJyerU6dOOnnypNLT06vGfvbZZ4qKilJkZGSd2XEmMgIwjrvkUH1jmzVrposuukhfffWVJCklJUUpKSnq0qWLTecqdSGjAPcSGRmpm2++WZGRkUaXAjgMMzcBNEpvvvmmkpKS9M477+idd96ptu3aa6+tddvKlSvPmjlxzTXX6KuvvtKoUaPsqmHKlCn6/PPPlZmZqUsvvVRhYWFVC/jffvvtVXdJPXr0qCZMmCCLxSKr1aq2bdvafNfQ1NRUWSwWvhQANWgMOTBv3jzdcsstmj17tsLDw/WPf/yjatuZOTB//nxde+21MpvNqqio0BtvvKGEhAQdPHhQEydOVFFRkcxm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", "text/plain": [ "
" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with no swap mirroring\n", "output_nsm = provider.qscout_compile(circ, mirror_swaps=False, base_entangling_gate=\"zz\")\n", "\n", "# Visualize the circuit\n", "circ_nsm = output_nsm.circuit\n", "circ_nsm.draw(\"mpl\", fold=-1)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "fa10c4af", "metadata": {}, "source": [ "### Compile with swap mirroring" ] }, { "cell_type": "code", "execution_count": 15, "id": "6b6be06f", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compile with swap mirroring\n", "output_wsm = provider.qscout_compile(circ, mirror_swaps=True, base_entangling_gate=\"zz\")\n", "\n", "# Visualize the circuit\n", "circ_wsm = output_wsm.circuit\n", "circ_wsm.draw(\"mpl\", fold=-1)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "342979fe", "metadata": {}, "source": [ "With the use of swap mirroring, we note that the angle of the entangling gate has now been reduced and the classical bits associated with each measurement have now been swapped in the compiled circuit. This is also displayed with the measurement indices in the above compiled circuit compared to the previous compiled circuit that does not have swap mirroring enabled." ] }, { "attachments": {}, "cell_type": "markdown", "id": "028a48bd", "metadata": {}, "source": [ "### Return final logical to physical qubit mapping" ] }, { "cell_type": "code", "execution_count": 16, "id": "ba0a3966", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Non swap-mirrored mapping: {0: 0, 1: 1}\n", "Swap-mirrored mapping: {0: 1, 1: 0}\n" ] } ], "source": [ "# Return final qubit map for non swap-mirrored circuit\n", "map_nsm = output_nsm.final_logical_to_physical\n", "print(\"Non swap-mirrored mapping:\", map_nsm)\n", "\n", "# Return final qubit map for swap-mirrored circuit\n", "map_wsm = output_wsm.final_logical_to_physical\n", "print(\"Swap-mirrored mapping:\", map_wsm)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "742089ac", "metadata": {}, "source": [ "## Using the Superstaq Simulator\n", "\n", "Lastly, we will go over how to submit a circuit to a backend and simulate it. This feature is available to free trial users, and can be done by passing the `\"dry-run\"` method parameter when calling `run()` to instruct Superstaq to ideally sample the circuit. " ] }, { "cell_type": "code", "execution_count": 17, "id": "4f1b9455", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'11': 65, '00': 35}\n" ] } ], "source": [ "# Example Bell state circuit\n", "qc = qiskit.QuantumCircuit(2, 2)\n", "qc.h(0)\n", "qc.cx(0, 1)\n", "qc.measure(0, 0)\n", "qc.measure(1, 1)\n", "\n", "# Get qscout backend from the provider\n", "backend = provider.get_backend(\"qscout_peregrine_qpu\")\n", "\n", "job = backend.run(\n", " qc, shots=100, method=\"dry-run\"\n", ") # Specify \"dry-run\" as the method to run Superstaq simulation\n", "\n", "# Get the counts from the measurement\n", "print(job.result().get_counts())" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.16" } }, "nbformat": 4, "nbformat_minor": 5 }