{ "cells": [ { "cell_type": "markdown", "id": "eb89a144", "metadata": {}, "source": [ "# Compiling and Submitting Circuits onto Sqale via Cirq\n" ] }, { "cell_type": "markdown", "id": "capable-bradley", "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/sqale/sqale_compile_css.ipynb) [![Launch Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Infleqtion/client-superstaq/HEAD?labpath=docs/source/optimizations/sqale/sqale_compile_css.ipynb)" ] }, { "cell_type": "markdown", "id": "cd44ef01", "metadata": {}, "source": [ "## Import Requirements" ] }, { "cell_type": "markdown", "id": "188579fc", "metadata": {}, "source": [ "This tutorial will showcase how to compile and submit a circuit onto Infleqtion's hardware, Sqale, using the ```cirq-superstaq``` client. " ] }, { "cell_type": "code", "execution_count": 1, "id": "aff4bd87", "metadata": {}, "outputs": [], "source": [ "# Required imports\n", "try:\n", " import cirq\n", " import cirq_superstaq as css\n", "except ImportError:\n", " print(\"Installing cirq-superstaq...\")\n", " %pip install --quiet 'cirq-superstaq[examples]'\n", " print(\"Installed cirq-superstaq.\")\n", " print(\"You may need to restart the kernel to import newly installed packages.\")\n", " import cirq\n", " import cirq_superstaq as css" ] }, { "cell_type": "markdown", "id": "ae0dfcb6", "metadata": {}, "source": [ "To interface Superstaq via Cirq, we must first instantiate a service provider in ```cirq-superstaq``` with ```Service()```. We then supply a Superstaq API key (which you can get from https://superstaq.infleqtion.com) by either providing the API key as an argument of Service, i.e., ```css.Service(api_key=\"token\")```, or by setting it as an environment variable. (see more details [here](https://superstaq.readthedocs.io/en/latest/get_started/basics/basics_css.html#Set-up-access-to-Superstaq%E2%80%99s-API))." ] }, { "cell_type": "code", "execution_count": 2, "id": "4464f34f", "metadata": {}, "outputs": [], "source": [ "service = css.Service()" ] }, { "cell_type": "markdown", "id": "415812a3", "metadata": {}, "source": [ "## Create a Circuit" ] }, { "cell_type": "markdown", "id": "f5d5ca21", "metadata": {}, "source": [ "First, we will create an example Cirq circuit that we can then compile and submit to the Sqale QPU" ] }, { "cell_type": "code", "execution_count": 3, "id": "9521d540", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
0: ───H───@───M───\n",
       "          │   │\n",
       "1: ───────X───M───
" ], "text/plain": [ "0: ───H───@───M───\n", " │ │\n", "1: ───────X───M───" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qubits = cirq.LineQubit.range(2)\n", "circuit1 = cirq.Circuit(cirq.H(qubits[0]), cirq.CNOT(qubits[0], qubits[1]), cirq.measure(*qubits))\n", "circuit1" ] }, { "cell_type": "markdown", "id": "b7812e22", "metadata": {}, "source": [ "## Single Circuit Compilation" ] }, { "cell_type": "markdown", "id": "eed571b8", "metadata": {}, "source": [ "We will now compile the above circuit onto Sqale's native gateset and visualize the differences by drawing the compiled circuit" ] }, { "cell_type": "code", "execution_count": 4, "id": "b9149284", "metadata": { "scrolled": false }, "outputs": [], "source": [ "compiler_output = service.cq_compile(circuit1)" ] }, { "cell_type": "code", "execution_count": 5, "id": "92f3d368", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
0: ────RGate(0.5π, -0.5π)───@───RGate(-0.5π, 1.0π)───────RGate(0.5π, 1.0π)───M───\n",
       "       │                    │   │                        │                   │\n",
       "1: ────#2───────────────────@───#2───────────────────S───#2──────────────────M───\n",
       "       │                        │                        │\n",
       "2: ────#3───────────────────────#3───────────────────────#3──────────────────────\n",
       "       │                        │                        │\n",
       "3: ────#4───────────────────────#4───────────────────────#4──────────────────────\n",
       "       │                        │                        │\n",
       "4: ────#5───────────────────────#5───────────────────────#5──────────────────────\n",
       "       │                        │                        │\n",
       "5: ────#6───────────────────────#6───────────────────────#6──────────────────────\n",
       "       │                        │                        │\n",
       "6: ────#7───────────────────────#7───────────────────────#7──────────────────────\n",
       "       │                        │                        │\n",
       "7: ────#8───────────────────────#8───────────────────────#8──────────────────────\n",
       "       │                        │                        │\n",
       "8: ────#9───────────────────────#9───────────────────────#9──────────────────────\n",
       "       │                        │                        │\n",
       "9: ────#10──────────────────────#10──────────────────────#10─────────────────────\n",
       "       │                        │                        │\n",
       "10: ───#11──────────────────────#11──────────────────────#11─────────────────────\n",
       "       │                        │                        │\n",
       "11: ───#12──────────────────────#12──────────────────────#12─────────────────────\n",
       "       │                        │                        │\n",
       "12: ───#13──────────────────────#13──────────────────────#13─────────────────────\n",
       "       │                        │                        │\n",
       "13: ───#14──────────────────────#14──────────────────────#14─────────────────────\n",
       "       │                        │                        │\n",
       "14: ───#15──────────────────────#15──────────────────────#15─────────────────────\n",
       "       │                        │                        │\n",
       "15: ───#16──────────────────────#16──────────────────────#16─────────────────────\n",
       "       │                        │                        │\n",
       "16: ───#17──────────────────────#17──────────────────────#17─────────────────────\n",
       "       │                        │                        │\n",
       "17: ───#18──────────────────────#18──────────────────────#18─────────────────────\n",
       "       │                        │                        │\n",
       "18: ───#19──────────────────────#19──────────────────────#19─────────────────────\n",
       "       │                        │                        │\n",
       "19: ───#20──────────────────────#20──────────────────────#20─────────────────────\n",
       "       │                        │                        │\n",
       "20: ───#21──────────────────────#21──────────────────────#21─────────────────────\n",
       "       │                        │                        │\n",
       "21: ───#22──────────────────────#22──────────────────────#22─────────────────────\n",
       "       │                        │                        │\n",
       "22: ───#23──────────────────────#23──────────────────────#23─────────────────────\n",
       "       │                        │                        │\n",
       "23: ───#24──────────────────────#24──────────────────────#24─────────────────────\n",
       "       │                        │                        │\n",
       "24: ───#25──────────────────────#25──────────────────────#25─────────────────────\n",
       "       │                        │                        │\n",
       "25: ───#26──────────────────────#26──────────────────────#26─────────────────────\n",
       "       │                        │                        │\n",
       "26: ───#27──────────────────────#27──────────────────────#27─────────────────────\n",
       "       │                        │                        │\n",
       "27: ───#28──────────────────────#28──────────────────────#28─────────────────────\n",
       "       │                        │                        │\n",
       "28: ───#29──────────────────────#29──────────────────────#29─────────────────────\n",
       "       │                        │                        │\n",
       "29: ───#30──────────────────────#30──────────────────────#30─────────────────────\n",
       "       │                        │                        │\n",
       "30: ───#31──────────────────────#31──────────────────────#31─────────────────────\n",
       "       │                        │                        │\n",
       "31: ───#32──────────────────────#32──────────────────────#32─────────────────────\n",
       "       │                        │                        │\n",
       "32: ───#33──────────────────────#33──────────────────────#33─────────────────────\n",
       "       │                        │                        │\n",
       "33: ───#34──────────────────────#34──────────────────────#34─────────────────────\n",
       "       │                        │                        │\n",
       "34: ───#35──────────────────────#35──────────────────────#35─────────────────────\n",
       "       │                        │                        │\n",
       "35: ───#36──────────────────────#36──────────────────────#36─────────────────────\n",
       "       │                        │                        │\n",
       "36: ───#37──────────────────────#37──────────────────────#37─────────────────────\n",
       "       │                        │                        │\n",
       "37: ───#38──────────────────────#38──────────────────────#38─────────────────────\n",
       "       │                        │                        │\n",
       "38: ───#39──────────────────────#39──────────────────────#39─────────────────────\n",
       "       │                        │                        │\n",
       "39: ───#40──────────────────────#40──────────────────────#40─────────────────────\n",
       "       │                        │                        │\n",
       "40: ───#41──────────────────────#41──────────────────────#41─────────────────────\n",
       "       │                        │                        │\n",
       "41: ───#42──────────────────────#42──────────────────────#42─────────────────────
" ], "text/plain": [ "0: ────RGate(0.5π, -0.5π)───@───RGate(-0.5π, 1.0π)───────RGate(0.5π, 1.0π)───M───\n", " │ │ │ │ │\n", "1: ────#2───────────────────@───#2───────────────────S───#2──────────────────M───\n", " │ │ │\n", "2: ────#3───────────────────────#3───────────────────────#3──────────────────────\n", " │ │ │\n", "3: ────#4───────────────────────#4───────────────────────#4──────────────────────\n", " │ │ │\n", "4: ────#5───────────────────────#5───────────────────────#5──────────────────────\n", " │ │ │\n", "5: ────#6───────────────────────#6───────────────────────#6──────────────────────\n", " │ │ │\n", "6: ────#7───────────────────────#7───────────────────────#7──────────────────────\n", " │ │ │\n", "7: ────#8───────────────────────#8───────────────────────#8──────────────────────\n", " │ │ │\n", "8: ────#9───────────────────────#9───────────────────────#9──────────────────────\n", " │ │ │\n", "9: ────#10──────────────────────#10──────────────────────#10─────────────────────\n", " │ │ │\n", "10: ───#11──────────────────────#11──────────────────────#11─────────────────────\n", " │ │ │\n", "11: ───#12──────────────────────#12──────────────────────#12─────────────────────\n", " │ │ │\n", "12: ───#13──────────────────────#13──────────────────────#13─────────────────────\n", " │ │ │\n", "13: ───#14──────────────────────#14──────────────────────#14─────────────────────\n", " │ │ │\n", "14: ───#15──────────────────────#15──────────────────────#15─────────────────────\n", " │ │ │\n", "15: ───#16──────────────────────#16──────────────────────#16─────────────────────\n", " │ │ │\n", "16: ───#17──────────────────────#17──────────────────────#17─────────────────────\n", " │ │ │\n", "17: ───#18──────────────────────#18──────────────────────#18─────────────────────\n", " │ │ │\n", "18: ───#19──────────────────────#19──────────────────────#19─────────────────────\n", " │ │ │\n", "19: ───#20──────────────────────#20──────────────────────#20─────────────────────\n", " │ │ │\n", "20: ───#21──────────────────────#21──────────────────────#21─────────────────────\n", " │ │ │\n", "21: ───#22──────────────────────#22──────────────────────#22─────────────────────\n", " │ │ │\n", "22: ───#23──────────────────────#23──────────────────────#23─────────────────────\n", " │ │ │\n", "23: ───#24──────────────────────#24──────────────────────#24─────────────────────\n", " │ │ │\n", "24: ───#25──────────────────────#25──────────────────────#25─────────────────────\n", " │ │ │\n", "25: ───#26──────────────────────#26──────────────────────#26─────────────────────\n", " │ │ │\n", "26: ───#27──────────────────────#27──────────────────────#27─────────────────────\n", " │ │ │\n", "27: ───#28──────────────────────#28──────────────────────#28─────────────────────\n", " │ │ │\n", "28: ───#29──────────────────────#29──────────────────────#29─────────────────────\n", " │ │ │\n", "29: ───#30──────────────────────#30──────────────────────#30─────────────────────\n", " │ │ │\n", "30: ───#31──────────────────────#31──────────────────────#31─────────────────────\n", " │ │ │\n", "31: ───#32──────────────────────#32──────────────────────#32─────────────────────\n", " │ │ │\n", "32: ───#33──────────────────────#33──────────────────────#33─────────────────────\n", " │ │ │\n", "33: ───#34──────────────────────#34──────────────────────#34─────────────────────\n", " │ │ │\n", "34: ───#35──────────────────────#35──────────────────────#35─────────────────────\n", " │ │ │\n", "35: ───#36──────────────────────#36──────────────────────#36─────────────────────\n", " │ │ │\n", "36: ───#37──────────────────────#37──────────────────────#37─────────────────────\n", " │ │ │\n", "37: ───#38──────────────────────#38──────────────────────#38─────────────────────\n", " │ │ │\n", "38: ───#39──────────────────────#39──────────────────────#39─────────────────────\n", " │ │ │\n", "39: ───#40──────────────────────#40──────────────────────#40─────────────────────\n", " │ │ │\n", "40: ───#41──────────────────────#41──────────────────────#41─────────────────────\n", " │ │ │\n", "41: ───#42──────────────────────#42──────────────────────#42─────────────────────" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compiler_output.circuit" ] }, { "cell_type": "markdown", "id": "a865f7b3", "metadata": {}, "source": [ "If you would like to compile (or submit) on a different number of qubits, this can be done via the ```grid_shape``` option. This simply sets the shape of the rectangular qubit grid. However, specifying a grid that is incompatible with Sqale's current capabilities will result in an error when submitting. Anything equal to or smaller than than (6,4) is compatible with Sqale's current capabilities. " ] }, { "cell_type": "code", "execution_count": 6, "id": "2f37e6bd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
(0, 0): ───RGate(0.5π, -0.5π)───Z───\n",
       "           │\n",
       "(1, 0): ───#2───────────────────Z───\n",
       "           │\n",
       "(2, 0): ───#3───────────────────────\n",
       "           │\n",
       "(3, 0): ───#4───────────────────────
" ], "text/plain": [ "(0, 0): ───RGate(0.5π, -0.5π)───Z───\n", " │\n", "(1, 0): ───#2───────────────────Z───\n", " │\n", "(2, 0): ───#3───────────────────────\n", " │\n", "(3, 0): ───#4───────────────────────" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "example_circuit = cirq.Circuit(cirq.H.on_each(*qubits))\n", "new_compiler_output = service.cq_compile(example_circuit, grid_shape=(4, 1))\n", "new_compiler_output.circuit" ] }, { "cell_type": "markdown", "id": "c6a4b1d3", "metadata": {}, "source": [ "## Multiple circuit compilation" ] }, { "cell_type": "markdown", "id": "82da705a", "metadata": {}, "source": [ "If you would like to compile a batch of circuits in one-go, `cirq-superstaq` accepts a list of circuits as well. To illustrate this, let us first create a different example circuit, and compile both circuits we have created so far at the same time. " ] }, { "cell_type": "code", "execution_count": 7, "id": "32b95bf4", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
0: ───H───M───
" ], "text/plain": [ "0: ───H───M───" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circuit2 = cirq.Circuit(cirq.H(qubits[0]), cirq.measure(qubits[0]))\n", "circuit2" ] }, { "cell_type": "code", "execution_count": 8, "id": "40fd33d8", "metadata": {}, "outputs": [], "source": [ "compiler_output = service.cq_compile([circuit1, circuit2])" ] }, { "cell_type": "code", "execution_count": 9, "id": "d1961e28", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
0: ────RGate(0.5π, -0.5π)───@───RGate(-0.5π, 1.0π)───────RGate(0.5π, 1.0π)───M───\n",
       "       │                    │   │                        │                   │\n",
       "1: ────#2───────────────────@───#2───────────────────S───#2──────────────────M───\n",
       "       │                        │                        │\n",
       "2: ────#3───────────────────────#3───────────────────────#3──────────────────────\n",
       "       │                        │                        │\n",
       "3: ────#4───────────────────────#4───────────────────────#4──────────────────────\n",
       "       │                        │                        │\n",
       "4: ────#5───────────────────────#5───────────────────────#5──────────────────────\n",
       "       │                        │                        │\n",
       "5: ────#6───────────────────────#6───────────────────────#6──────────────────────\n",
       "       │                        │                        │\n",
       "6: ────#7───────────────────────#7───────────────────────#7──────────────────────\n",
       "       │                        │                        │\n",
       "7: ────#8───────────────────────#8───────────────────────#8──────────────────────\n",
       "       │                        │                        │\n",
       "8: ────#9───────────────────────#9───────────────────────#9──────────────────────\n",
       "       │                        │                        │\n",
       "9: ────#10──────────────────────#10──────────────────────#10─────────────────────\n",
       "       │                        │                        │\n",
       "10: ───#11──────────────────────#11──────────────────────#11─────────────────────\n",
       "       │                        │                        │\n",
       "11: ───#12──────────────────────#12──────────────────────#12─────────────────────\n",
       "       │                        │                        │\n",
       "12: ───#13──────────────────────#13──────────────────────#13─────────────────────\n",
       "       │                        │                        │\n",
       "13: ───#14──────────────────────#14──────────────────────#14─────────────────────\n",
       "       │                        │                        │\n",
       "14: ───#15──────────────────────#15──────────────────────#15─────────────────────\n",
       "       │                        │                        │\n",
       "15: ───#16──────────────────────#16──────────────────────#16─────────────────────\n",
       "       │                        │                        │\n",
       "16: ───#17──────────────────────#17──────────────────────#17─────────────────────\n",
       "       │                        │                        │\n",
       "17: ───#18──────────────────────#18──────────────────────#18─────────────────────\n",
       "       │                        │                        │\n",
       "18: ───#19──────────────────────#19──────────────────────#19─────────────────────\n",
       "       │                        │                        │\n",
       "19: ───#20──────────────────────#20──────────────────────#20─────────────────────\n",
       "       │                        │                        │\n",
       "20: ───#21──────────────────────#21──────────────────────#21─────────────────────\n",
       "       │                        │                        │\n",
       "21: ───#22──────────────────────#22──────────────────────#22─────────────────────\n",
       "       │                        │                        │\n",
       "22: ───#23──────────────────────#23──────────────────────#23─────────────────────\n",
       "       │                        │                        │\n",
       "23: ───#24──────────────────────#24──────────────────────#24─────────────────────\n",
       "       │                        │                        │\n",
       "24: ───#25──────────────────────#25──────────────────────#25─────────────────────\n",
       "       │                        │                        │\n",
       "25: ───#26──────────────────────#26──────────────────────#26─────────────────────\n",
       "       │                        │                        │\n",
       "26: ───#27──────────────────────#27──────────────────────#27─────────────────────\n",
       "       │                        │                        │\n",
       "27: ───#28──────────────────────#28──────────────────────#28─────────────────────\n",
       "       │                        │                        │\n",
       "28: ───#29──────────────────────#29──────────────────────#29─────────────────────\n",
       "       │                        │                        │\n",
       "29: ───#30──────────────────────#30──────────────────────#30─────────────────────\n",
       "       │                        │                        │\n",
       "30: ───#31──────────────────────#31──────────────────────#31─────────────────────\n",
       "       │                        │                        │\n",
       "31: ───#32──────────────────────#32──────────────────────#32─────────────────────\n",
       "       │                        │                        │\n",
       "32: ───#33──────────────────────#33──────────────────────#33─────────────────────\n",
       "       │                        │                        │\n",
       "33: ───#34──────────────────────#34──────────────────────#34─────────────────────\n",
       "       │                        │                        │\n",
       "34: ───#35──────────────────────#35──────────────────────#35─────────────────────\n",
       "       │                        │                        │\n",
       "35: ───#36──────────────────────#36──────────────────────#36─────────────────────\n",
       "       │                        │                        │\n",
       "36: ───#37──────────────────────#37──────────────────────#37─────────────────────\n",
       "       │                        │                        │\n",
       "37: ───#38──────────────────────#38──────────────────────#38─────────────────────\n",
       "       │                        │                        │\n",
       "38: ───#39──────────────────────#39──────────────────────#39─────────────────────\n",
       "       │                        │                        │\n",
       "39: ───#40──────────────────────#40──────────────────────#40─────────────────────\n",
       "       │                        │                        │\n",
       "40: ───#41──────────────────────#41──────────────────────#41─────────────────────\n",
       "       │                        │                        │\n",
       "41: ───#42──────────────────────#42──────────────────────#42─────────────────────
" ], "text/plain": [ "0: ────RGate(0.5π, -0.5π)───@───RGate(-0.5π, 1.0π)───────RGate(0.5π, 1.0π)───M───\n", " │ │ │ │ │\n", "1: ────#2───────────────────@───#2───────────────────S───#2──────────────────M───\n", " │ │ │\n", "2: ────#3───────────────────────#3───────────────────────#3──────────────────────\n", " │ │ │\n", "3: ────#4───────────────────────#4───────────────────────#4──────────────────────\n", " │ │ │\n", "4: ────#5───────────────────────#5───────────────────────#5──────────────────────\n", " │ │ │\n", "5: ────#6───────────────────────#6───────────────────────#6──────────────────────\n", " │ │ │\n", "6: ────#7───────────────────────#7───────────────────────#7──────────────────────\n", " │ │ │\n", "7: ────#8───────────────────────#8───────────────────────#8──────────────────────\n", " │ │ │\n", "8: ────#9───────────────────────#9───────────────────────#9──────────────────────\n", " │ │ │\n", "9: ────#10──────────────────────#10──────────────────────#10─────────────────────\n", " │ │ │\n", "10: ───#11──────────────────────#11──────────────────────#11─────────────────────\n", " │ │ │\n", "11: ───#12──────────────────────#12──────────────────────#12─────────────────────\n", " │ │ │\n", "12: ───#13──────────────────────#13──────────────────────#13─────────────────────\n", " │ │ │\n", "13: ───#14──────────────────────#14──────────────────────#14─────────────────────\n", " │ │ │\n", "14: ───#15──────────────────────#15──────────────────────#15─────────────────────\n", " │ │ │\n", "15: ───#16──────────────────────#16──────────────────────#16─────────────────────\n", " │ │ │\n", "16: ───#17──────────────────────#17──────────────────────#17─────────────────────\n", " │ │ │\n", "17: ───#18──────────────────────#18──────────────────────#18─────────────────────\n", " │ │ │\n", "18: ───#19──────────────────────#19──────────────────────#19─────────────────────\n", " │ │ │\n", "19: ───#20──────────────────────#20──────────────────────#20─────────────────────\n", " │ │ │\n", "20: ───#21──────────────────────#21──────────────────────#21─────────────────────\n", " │ │ │\n", "21: ───#22──────────────────────#22──────────────────────#22─────────────────────\n", " │ │ │\n", "22: ───#23──────────────────────#23──────────────────────#23─────────────────────\n", " │ │ │\n", "23: ───#24──────────────────────#24──────────────────────#24─────────────────────\n", " │ │ │\n", "24: ───#25──────────────────────#25──────────────────────#25─────────────────────\n", " │ │ │\n", "25: ───#26──────────────────────#26──────────────────────#26─────────────────────\n", " │ │ │\n", "26: ───#27──────────────────────#27──────────────────────#27─────────────────────\n", " │ │ │\n", "27: ───#28──────────────────────#28──────────────────────#28─────────────────────\n", " │ │ │\n", "28: ───#29──────────────────────#29──────────────────────#29─────────────────────\n", " │ │ │\n", "29: ───#30──────────────────────#30──────────────────────#30─────────────────────\n", " │ │ │\n", "30: ───#31──────────────────────#31──────────────────────#31─────────────────────\n", " │ │ │\n", "31: ───#32──────────────────────#32──────────────────────#32─────────────────────\n", " │ │ │\n", "32: ───#33──────────────────────#33──────────────────────#33─────────────────────\n", " │ │ │\n", "33: ───#34──────────────────────#34──────────────────────#34─────────────────────\n", " │ │ │\n", "34: ───#35──────────────────────#35──────────────────────#35─────────────────────\n", " │ │ │\n", "35: ───#36──────────────────────#36──────────────────────#36─────────────────────\n", " │ │ │\n", "36: ───#37──────────────────────#37──────────────────────#37─────────────────────\n", " │ │ │\n", "37: ───#38──────────────────────#38──────────────────────#38─────────────────────\n", " │ │ │\n", "38: ───#39──────────────────────#39──────────────────────#39─────────────────────\n", " │ │ │\n", "39: ───#40──────────────────────#40──────────────────────#40─────────────────────\n", " │ │ │\n", "40: ───#41──────────────────────#41──────────────────────#41─────────────────────\n", " │ │ │\n", "41: ───#42──────────────────────#42──────────────────────#42─────────────────────" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compiler_output.circuits[0]" ] }, { "cell_type": "code", "execution_count": 10, "id": "4499aedd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
0: ────RGate(0.5π, -0.5π)───M───\n",
       "       │\n",
       "1: ────#2───────────────────────\n",
       "       │\n",
       "2: ────#3───────────────────────\n",
       "       │\n",
       "3: ────#4───────────────────────\n",
       "       │\n",
       "4: ────#5───────────────────────\n",
       "       │\n",
       "5: ────#6───────────────────────\n",
       "       │\n",
       "6: ────#7───────────────────────\n",
       "       │\n",
       "7: ────#8───────────────────────\n",
       "       │\n",
       "8: ────#9───────────────────────\n",
       "       │\n",
       "9: ────#10──────────────────────\n",
       "       │\n",
       "10: ───#11──────────────────────\n",
       "       │\n",
       "11: ───#12──────────────────────\n",
       "       │\n",
       "12: ───#13──────────────────────\n",
       "       │\n",
       "13: ───#14──────────────────────\n",
       "       │\n",
       "14: ───#15──────────────────────\n",
       "       │\n",
       "15: ───#16──────────────────────\n",
       "       │\n",
       "16: ───#17──────────────────────\n",
       "       │\n",
       "17: ───#18──────────────────────\n",
       "       │\n",
       "18: ───#19──────────────────────\n",
       "       │\n",
       "19: ───#20──────────────────────\n",
       "       │\n",
       "20: ───#21──────────────────────\n",
       "       │\n",
       "21: ───#22──────────────────────\n",
       "       │\n",
       "22: ───#23──────────────────────\n",
       "       │\n",
       "23: ───#24──────────────────────\n",
       "       │\n",
       "24: ───#25──────────────────────\n",
       "       │\n",
       "25: ───#26──────────────────────\n",
       "       │\n",
       "26: ───#27──────────────────────\n",
       "       │\n",
       "27: ───#28──────────────────────\n",
       "       │\n",
       "28: ───#29──────────────────────\n",
       "       │\n",
       "29: ───#30──────────────────────\n",
       "       │\n",
       "30: ───#31──────────────────────\n",
       "       │\n",
       "31: ───#32──────────────────────\n",
       "       │\n",
       "32: ───#33──────────────────────\n",
       "       │\n",
       "33: ───#34──────────────────────\n",
       "       │\n",
       "34: ───#35──────────────────────\n",
       "       │\n",
       "35: ───#36──────────────────────\n",
       "       │\n",
       "36: ───#37──────────────────────\n",
       "       │\n",
       "37: ───#38──────────────────────\n",
       "       │\n",
       "38: ───#39──────────────────────\n",
       "       │\n",
       "39: ───#40──────────────────────\n",
       "       │\n",
       "40: ───#41──────────────────────\n",
       "       │\n",
       "41: ───#42──────────────────────
" ], "text/plain": [ "0: ────RGate(0.5π, -0.5π)───M───\n", " │\n", "1: ────#2───────────────────────\n", " │\n", "2: ────#3───────────────────────\n", " │\n", "3: ────#4───────────────────────\n", " │\n", "4: ────#5───────────────────────\n", " │\n", "5: ────#6───────────────────────\n", " │\n", "6: ────#7───────────────────────\n", " │\n", "7: ────#8───────────────────────\n", " │\n", "8: ────#9───────────────────────\n", " │\n", "9: ────#10──────────────────────\n", " │\n", "10: ───#11──────────────────────\n", " │\n", "11: ───#12──────────────────────\n", " │\n", "12: ───#13──────────────────────\n", " │\n", "13: ───#14──────────────────────\n", " │\n", "14: ───#15──────────────────────\n", " │\n", "15: ───#16──────────────────────\n", " │\n", "16: ───#17──────────────────────\n", " │\n", "17: ───#18──────────────────────\n", " │\n", "18: ───#19──────────────────────\n", " │\n", "19: ───#20──────────────────────\n", " │\n", "20: ───#21──────────────────────\n", " │\n", "21: ───#22──────────────────────\n", " │\n", "22: ───#23──────────────────────\n", " │\n", "23: ───#24──────────────────────\n", " │\n", "24: ───#25──────────────────────\n", " │\n", "25: ───#26──────────────────────\n", " │\n", "26: ───#27──────────────────────\n", " │\n", "27: ───#28──────────────────────\n", " │\n", "28: ───#29──────────────────────\n", " │\n", "29: ───#30──────────────────────\n", " │\n", "30: ───#31──────────────────────\n", " │\n", "31: ───#32──────────────────────\n", " │\n", "32: ───#33──────────────────────\n", " │\n", "33: ───#34──────────────────────\n", " │\n", "34: ───#35──────────────────────\n", " │\n", "35: ───#36──────────────────────\n", " │\n", "36: ───#37──────────────────────\n", " │\n", "37: ───#38──────────────────────\n", " │\n", "38: ───#39──────────────────────\n", " │\n", "39: ───#40──────────────────────\n", " │\n", "40: ───#41──────────────────────\n", " │\n", "41: ───#42──────────────────────" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "compiler_output.circuits[1]" ] }, { "cell_type": "markdown", "id": "04ad6645", "metadata": {}, "source": [ "## Circuit Submission" ] }, { "cell_type": "markdown", "id": "ac35a589", "metadata": {}, "source": [ "All the functionalities we have seen so far can be applied to submit single- or multi-circuit jobs. For example, the code below will submit both the circuits from earlier to the noiseless Sqale simulator. If you would like to run on the Sqale QPU, change the ```target``` argument in ```create_job()``` from ```cq_sqale_simulator``` to ```cq_sqale_qpu```. It is recommended to first submit to the simulator for testing to ensure your code runs before submitting to the Sqale QPU. " ] }, { "cell_type": "code", "execution_count": 11, "id": "dcadf503", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counts from cirq-superstaq submission for 1st circuit: {'11': 51, '00': 49}\n", "Counts from cirq-superstaq submission for 2nd circuit: {'0': 47, '1': 53}\n" ] } ], "source": [ "job_css = service.create_job([circuit1, circuit2], repetitions=100, target=\"cq_sqale_simulator\")\n", "result_job_1 = job_css.counts(index=0)\n", "result_job_2 = job_css.counts(index=1)\n", "\n", "print(f\"Counts from cirq-superstaq submission for 1st circuit: {result_job_1}\")\n", "print(f\"Counts from cirq-superstaq submission for 2nd circuit: {result_job_2}\")" ] }, { "cell_type": "markdown", "id": "d8780e3e", "metadata": {}, "source": [ "If you would like to submit circuits to a noisy simulator, to see the effects of noise on your simulated measurements without submitting to an actual device, you can additionally pass the argument ```method=noise-sim``` in ```create_job()```. Here's an example code snippet for a single-circuit simulation:" ] }, { "cell_type": "code", "execution_count": 12, "id": "21ce8024", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Counts from noisy cirq-superstaq submission: {'11': 45, '00': 51, '01': 2, '10': 2}\n" ] } ], "source": [ "job_css = service.create_job(\n", " circuit1, repetitions=100, target=\"cq_sqale_simulator\", method=\"noise-sim\"\n", ")\n", "result_css = job_css.counts(0)\n", "print(f\"Counts from noisy cirq-superstaq submission: {result_css}\")" ] } ], "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 }