{ "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": "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sW/fPvz0009Ys2YNUlNTsW/fPr2fR25eoeg+Ezqdjv0uiIioVgwT9xESEoK4uDhcvHhRrzCRnJwMAOjZs/Y75h0//uDRI319fTF+/HiMHz8eM2fORLt27bB//34kJycjMDCw3rUAhp8HY6sEEdG/B/tMmMjo0aOxfv16rFy5Ei+99FJVS8WD2NpW/EM0Gk2NeVevXkVMTIxedYSEhMDJyQl37txBenq63mHCkGYr9pUgIqL6ajQjYJrCsGHD0KdPH6SkpGDAgAG4ePFitfk6nQ7Hjh3D1KlTq10J0qtXLwDAwoULq428eenSJQwdOrTWoVPj4+Px3HPP4fjx49X6bZSXl+Ozzz7DnTt3oFKpEBJS+/j2xsbRLomIqL7YAfMB87VaLYYNG1Y1KJW/vz/UajUKCwuRlJSE/PyKfgQJCQlo3bo1ACA3NxdhYWG4du0arKys0KpVK+h0OiQkJMDLywsvvPAC3nrrrWodMOPi4tChQ8W47Y6OjmjevDkUCgVSUlKq+lisWLEC//d//2fQ30cfla0SxSWlmDhiAFsliIjovtgy8QDu7u44fPgwvvvuO/Tv3x/5+fk4ffo0kpOT0aJFC0yfPh2HDx9GUFBQ1TqOjo44cuQIJk+eDBcXFyQmJiIvLw/PP/88zp49Cx8fnxr7CQoKwqpVqzB27Fh4eXnh+vXrOHfuHFQqFcaMGYPY2FizBAkAKCougZ+3J1sliIioXhpNywQZX1FxCVQ21lKXQUREDRzDBBEREYnC0xxEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKIwTBAREZEoDBNEREQkCsMEERERicIwQURERKL8P3Pvr+pblvbUAAAAAElFTkSuQmCC", "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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", "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 0.4741217916321569\n", "<\n", "\tR allqubits[0] -1.5707963267948966 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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", "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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IiL6nUajQb1KBUcHB6GjCKaurh4ODlKLG+GXubvglWkTDFqWZQbAmTNnMGDAAEilUpw7dw69evUy6vqX/O9GKCsqjbpOIiIia+Lh7ob5L00xaFme3wvgu+++AwCMHj3a6EUGaGybhuKoDBER2YKO/K5kmQFw+XLjgbXx8fEmWb+hw2YAsOPH4zhy+gJCAv3w4tOPWdywIBERkdBYZtB48C8AeHp6mmT9hh4zc++ojKK0DO99/rWxoxEREVmEjhwzwzIDwMOj8cZaproXUnlFdYePmamqrjFSGiIiIuvCMgMgJiYG27Ztw/Hjx02yfkP2A/JYGSIisiUdOWaGZzMBOHfuHPr37w8HBwekp6cjOjpa6Eg8VoaIiEhHvGgegH79+uGJJ55AfX09kpOTcfjw4WbPFxUV4b333kNlpXlOr+bVfomIiHTHkZnfKJVKjBs3Tnvb9qCgIAQGBqKwsBD5+fnQaDQoLS1Fp06dTJ6FozJERES648jMbzw8PHDgwAGsXbsWw4YNQ1VVFc6fPw87Ozv86U9/wtq1ayGTycySxd3NBc5OjhyVISIi0gFHZixUTW0dnBwdWGaIiIjawTJDREREosbdTERERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGosM0RERCRqLDNEREQkaiwzREREJGr/H1aSqKByRYWgAAAAAElFTkSuQmCC", "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 0.4741217916321569\n", "<\n", "\tR allqubits[0] -1.5707963267948966 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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aGrNS0xMRHR0tF51hIaGwsXFBbm5ucjIyNA7TBjSbMW+EkRE1FCNZgRMUxg5ciT69++P1NRUDB48GJcvX64xX6fT4dSpU3jxxRdrXAnSt29fAMCSJUtqjLx55coVjBgxos6hU+Pi4vD888/jt99+q9Fvo6KiAp9//jlyc3OhUqkQGlr3+PbGxtEuiYioodgB8wHztVotRo4cWT0oVUBAANRqNYqKipCUlITCwsp+BPHx8WjTpg0AID8/H2FhYbh+/TpsbGzQunVr6HQ6xMfHw8fHBy+99BLefvvtGh0wY2Nj0alT5bjtzs7OaNGiBRQKBVJTU6v7WKxduxb//Oc/Dfr76KOqVaKktAxTRw9mqwQREd0XWyYewNPTE8ePH8fXX3+NQYMGobCwEOfOnUNKSgpatmyJWbNm4fjx4wgODq5ex9nZGSdOnMD06dPh5uaGhIQEFBQU4IUXXsCFCxfg5+dXaz/BwcHYsGEDJk6cCB8fHyQnJ+PixYtQqVQYP348YmJizBIkAKC4pBTNfL3ZKkFERA3SaFomyPiKS0qhsrOVugwiIrJwDBNEREQkCk9zEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJwjBBREREojBMEBERkSgME0RERCQKwwQRERGJ8v8ArwySXtKa0fYAAAAASUVORK5CYII=", "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 -1.0353167691242982\n", "<\n", "\tR allqubits[0] -1.5707963267948972 1.5707963267948966\n", "\tR allqubits[1] -1.5707963267948972 1.5707963267948966\n", ">\n", "measure_all\n", "\n" ] }, { "data": { "image/png": "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", "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] -1.0353167691242982\n", "<\n", "\tRz allqubits[0] 3.141592653589792\n", "\tRz allqubits[1] 3.141592653589792\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": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_30696/1726585532.py:2: DeprecationWarning: The class ``qiskit.circuit.library.quantum_volume.QuantumVolume`` is deprecated as of Qiskit 2.2. It will be removed in Qiskit 3.0. Use the function qiskit.circuit.library.quantum_volume instead.\n", " circ = qiskit.circuit.library.QuantumVolume(num_qubits=2, depth=4, seed=123)\n" ] } ], "source": [ "# Generate a random QV circuit\n", "circ = qiskit.circuit.library.QuantumVolume(num_qubits=2, depth=4, seed=123)\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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268p9dgRXF05CGAOAj3gxGw2W527HCOqxmYz5xKQQF1hs9kceglIQ1KhUfRvNze3Uo8BK+NvMACg3oiMjNTSpUvVrFkzs0sBAIdhDT3qrFWrVql79+4l/mnWrJm8vLwqbCvP5MmTtWXLluLHBw8eVL9+/dSuXTv17t1be/fuLbVNdna2rrzySrVr107dunXTiBEjdOjQIUnSunXr1KtXL3Xt2lWXXHKJfvrppxLbRkZGqn379sX1LVu2rLht4MCBiomJudD/RADs5OXlpdatW1c4VgCA1RDoUWeNGzdOu3fvLv5n48aN8vHx0csvv1xhW1m2bdum06dPq2/fvsXP3X777Zo2bZoOHDigBx98UDfffHOZ206bNk3R0dH66aefNH78eN12221KTU3VlClT9M477+jnn3/WvHnzNGXKlFLbLlu2rLjGa675fY3mAw88oNmzZ1/YfyAAdktMTNQ//vEPJSYmml0KADgMgR6WUFhYqClTpujSSy/VrbfeWuW28xYtWqTrr7+++PHJkye1Y8cOTZ06VVLR7bqPHz9ePPt+npeXl0aPHi2bzSZJuuSSSxQbG6vDhw8rODhYnTt3llQ0437s2DHt3LmzSu9nzJgx+uyzz3T27Nmq/QcA4BBnz57VqlWrOPYAOBUCPSxh9uzZOn36tF588UW72s7buHGj+vTpU/z4+PHjCgsLKz4RymazKSIiQseOHauwjhdeeEHjx49X27ZtlZKSou+//15S0fKg9PR0xcbGluh/4403qkuXLrr11lt16tSp4ufd3d3VpUsXbdq0qdL3DgAAUBFOikWd98knn2jx4sXasWOHPDw8qtz2R3FxcWrSpMkF1TF37lwdOnRIX331lXx8fLR8+XI9/PDDysjIUN++fdWpU6cSV0r49ttvFRERoby8PD322GO66aabtHbt2uL20NBQxcXFXVBNAAAABHrUadHR0br11lv18ccfq2nTplVu+zMfHx9lZ2cXP27evLkSExOVn59fdPkyw9CxY8cUERFR5vbz58/XypUr9eWXX8rHx0eSNHToUA0dOlSSlJOTo9DQUHXq1Kl4m/P7cnd313333ad27dqV2Gd2dra8vb2r+F8CAACgbCy5QZ2Vnp6uCRMmaM6cORowYECV28rStWtXRUdHFz9u3LixevTooffeK7rp0ooVKxQeHq42bdqU2vbf//63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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=10)" ] }, { "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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268p9dgRXF05CGAOAj3gxGw2W527HCOqxmYz5xKQQF1hs9kceglIQ1KhUfRvNze3Uo8BK+NvMACg3oiMjNTSpUvVrFkzs0sBAIdhDT3qrFWrVql79+4l/mnWrJm8vLwqbCvP5MmTtWXLluLHBw8eVL9+/dSuXTv17t1be/fuLbVNdna2rrzySrVr107dunXTiBEjdOjQIUnSunXr1KtXL3Xt2lWXXHKJfvrppxLbRkZGqn379sX1LVu2rLht4MCBiomJudD/RADs5OXlpdatW1c4VgCA1RDoUWeNGzdOu3fvLv5n48aN8vHx0csvv1xhW1m2bdum06dPq2/fvsXP3X777Zo2bZoOHDigBx98UDfffHOZ206bNk3R0dH66aefNH78eN12221KTU3VlClT9M477+jnn3/WvHnzNGXKlFLbLlu2rLjGa675fY3mAw88oNmzZ1/YfyAAdktMTNQ//vEPJSYmml0KADgMgR6WUFhYqClTpujSSy/VrbfeWuW28xYtWqTrr7+++PHJkye1Y8cOTZ06VVLR7bqPHz9ePPt+npeXl0aPHi2bzSZJuuSSSxQbG6vDhw8rODhYnTt3llQ0437s2DHt3LmzSu9nzJgx+uyzz3T27Nmq/QcA4BBnz57VqlWrOPYAOBUCPSxh9uzZOn36tF588UW72s7buHGj+vTpU/z4+PHjCgsLKz4RymazKSIiQseOHauwjhdeeEHjx49X27ZtlZKSou+//15S0fKg9PR0xcbGluh/4403qkuXLrr11lt16tSp4ufd3d3VpUsXbdq0qdL3DgAAUBFOikWd98knn2jx4sXasWOHPDw8qtz2R3FxcWrSpMkF1TF37lwdOnRIX331lXx8fLR8+XI9/PDDysjIUN++fdWpU6cSV0r49ttvFRERoby8PD322GO66aabtHbt2uL20NBQxcXFXVBNAAAABHrUadHR0br11lv18ccfq2nTplVu+zMfHx9lZ2cXP27evLkSExOVn59fdPkyw9CxY8cUERFR5vbz58/XypUr9eWXX8rHx0eSNHToUA0dOlSSlJOTo9DQUHXq1Kl4m/P7cnd313333ad27dqV2Gd2dra8vb2r+F8CAACgbCy5QZ2Vnp6uCRMmaM6cORowYECV28rStWtXRUdHFz9u3LixevTooffeK7rp0ooVKxQeHq42bdqU2vbf//63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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=10)" ] }, { "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: 0, 1: 1}\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': 57, '00': 43}\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.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }