{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "DkA0Fobtb9dM" }, "source": [ "##### Copyright 2022 The Cirq Developers" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-08-16T10:33:22.418616Z", "iopub.status.busy": "2024-08-16T10:33:22.418049Z", "iopub.status.idle": "2024-08-16T10:33:22.422268Z", "shell.execute_reply": "2024-08-16T10:33:22.421581Z" }, "id": "tUshu7YfcAAW" }, "outputs": [], "source": [ "# @title Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "4ySIERZGZN0d" }, "source": [ "# QVM Basic Example" ] }, { "cell_type": "markdown", "metadata": { "id": "vGUeqO9jn1vc" }, "source": [ "\n", " \n", " \n", " \n", " \n", "
\n", " View on QuantumAI\n", " \n", " Run in Google Colab\n", " \n", " View source on GitHub\n", " \n", " Download notebook\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "cd6e59ef3edd" }, "source": [ "This notebook walks through running a simple circuit on the [Quantum Virtual Machine](./quantum_virtual_machine.ipynb), including the necessary constraints on a device-runnable circuit and how to satisfy them. " ] }, { "cell_type": "markdown", "metadata": { "id": "Lfira0gPf0Gd" }, "source": [ "## **Install** Cirq and qsim" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-08-16T10:33:22.426084Z", "iopub.status.busy": "2024-08-16T10:33:22.425532Z", "iopub.status.idle": "2024-08-16T10:33:37.620320Z", "shell.execute_reply": "2024-08-16T10:33:37.619332Z" }, "id": "zs5J6wAXqvtW" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "installing cirq...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\r\n", "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 4.25.4 which is incompatible.\u001b[0m\u001b[31m\r\n", "\u001b[0m" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installed cirq.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installing qsimcirq...\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "installed qsimcirq.\n" ] } ], "source": [ "# @title Install `cirq_google` and `qsimcirq`\n", "\n", "try:\n", " import cirq\n", " import cirq_google\n", "except ImportError:\n", " print(\"installing cirq...\")\n", " !pip install --quiet cirq-google\n", " print(\"installed cirq.\")\n", " import cirq\n", " import cirq_google\n", "\n", "try:\n", " import qsimcirq\n", "except ImportError:\n", " print(\"installing qsimcirq...\")\n", " !pip install --quiet qsimcirq\n", " print(f\"installed qsimcirq.\")\n", " import qsimcirq\n", "\n", "# Other modules used in this colab\n", "import matplotlib.pyplot as plt\n", "import time" ] }, { "cell_type": "markdown", "metadata": { "id": "p2JAfQa8gVSe" }, "source": [ "## Create a **Quantum Virtual Machine**\n", "\n", "The following cell builds a Quantum Virtual Machine that mimics a particular Google quantum hardware device (currently Rainbow or Weber) using the following customizable steps: \n", "- Constructing a `cirq.NoiseModel` object from device calibration data saved in Cirq. See [Representing Noise](../noise/representing_noise.ipynb) for more on noise models. \n", "- Building a `qsimcirq.QsimSimulator` that uses this noise model. See [Noisy Simulation](./noisy_simulation.ipynb) and [Noise simulation with qsim](/qsim/tutorials/noisy_qsimcirq) for more. \n", "- Creating a `cirq.Device` that imposes the same constraints on circuits that the original device would. See [Devices](../hardware/devices.ipynb) for more on these constraint objects. \n", "- Packaging the simulator and device into an object that implements the `cirq.Engine` interface that the hardware device would use. \n", "\n", "If you don't need this level of control, you can also instantiate a QVM with `cirq_google.engine.create_default_noisy_quantum_virtual_machine`, as in [QVM Creation Template](./qvm_builder_code.ipynb). " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-08-16T10:33:37.625742Z", "iopub.status.busy": "2024-08-16T10:33:37.624435Z", "iopub.status.idle": "2024-08-16T10:33:37.918036Z", "shell.execute_reply": "2024-08-16T10:33:37.917102Z" }, "id": "pbHCUPLpq5WE" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your quantum virtual machine weber is ready, here is the qubit grid: \n", "========================\n", "\n", " (0, 5)───(0, 6)\n", " │ │\n", " │ │\n", " (1, 4)───(1, 5)───(1, 6)───(1, 7)\n", " │ │ │ │\n", " │ │ │ │\n", " (2, 4)───(2, 5)───(2, 6)───(2, 7)───(2, 8)\n", " │ │ │ │ │\n", " │ │ │ │ │\n", " (3, 2)───(3, 3)───(3, 4)───(3, 5)───(3, 6)───(3, 7)───(3, 8)───(3, 9)\n", " │ │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │ │\n", " (4, 1)───(4, 2)───(4, 3)───(4, 4)───(4, 5)───(4, 6)───(4, 7)───(4, 8)───(4, 9)\n", " │ │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │ │\n", "(5, 0)───(5, 1)───(5, 2)───(5, 3)───(5, 4)───(5, 5)───(5, 6)───(5, 7)───(5, 8)\n", " │ │ │ │ │ │ │\n", " │ │ │ │ │ │ │\n", " (6, 1)───(6, 2)───(6, 3)───(6, 4)───(6, 5)───(6, 6)───(6, 7)\n", " │ │ │ │ │\n", " │ │ │ │ │\n", " (7, 2)───(7, 3)───(7, 4)───(7, 5)───(7, 6)\n", " │ │ │\n", " │ │ │\n", " (8, 3)───(8, 4)───(8, 5)\n", " │\n", " │\n", " (9, 4)\n" ] } ], "source": [ "# @title Choose a processor (\"rainbow\" or \"weber\")\n", "processor_id = \"weber\" # @param {type:\"string\"}\n", "\n", "# Construct a simulator with a noise model based on the specified processor.\n", "cal = cirq_google.engine.load_median_device_calibration(processor_id)\n", "noise_props = cirq_google.noise_properties_from_calibration(cal)\n", "noise_model = cirq_google.NoiseModelFromGoogleNoiseProperties(noise_props)\n", "sim = qsimcirq.QSimSimulator(noise=noise_model)\n", "\n", "# Create a device from the public device description\n", "device = cirq_google.engine.create_device_from_processor_id(processor_id)\n", "# Build the simulated local processor from the simulator and device.\n", "sim_processor = cirq_google.engine.SimulatedLocalProcessor(\n", " processor_id=processor_id, sampler=sim, device=device, calibrations={cal.timestamp // 1000: cal}\n", ")\n", "# Package the processor to use an Engine interface\n", "sim_engine = cirq_google.engine.SimulatedLocalEngine([sim_processor])\n", "print(\n", " \"Your quantum virtual machine\",\n", " processor_id,\n", " \"is ready, here is the qubit grid:\",\n", " \"\\n========================\\n\",\n", ")\n", "print(sim_engine.get_processor(processor_id).get_device())" ] }, { "cell_type": "markdown", "metadata": { "id": "TJfN17frwo-0" }, "source": [ "## **Create** a circuit, **transform** it (to make it executable on Google quantum hardware) and **choose qubits** on the processor. \n", "\n", "The circuit you use needs to be _device ready_, which means it: \n", "- Is comprised of operations from the device's gate set. \n", "- Is applied to qubits that exist on the device. \n", "- Respects the connectivity of qubits on the device.\n", "\n", "Below is an example of a circuit that has the correct topology to be placed on the Weber device, and how it is prepared to be run on the QVM." ] }, { "cell_type": "markdown", "metadata": { "id": "a_arTtfcwqrz" }, "source": [ "### Create a GHZ state builder circuit\n", "\n", "The generalized [Greenberger–Horne–Zeilinger (GHZ) state](https://en.wikipedia.org/wiki/Greenberger%E2%80%93Horne%E2%80%93Zeilinger_state){:.external} has the form $\\frac{|00..0⟩ + |11..1⟩}{\\sqrt{2}}$ and, in this case, will be constructed using 17 qubits, with a Hadamard and a sequence of CNOT gates:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-08-16T10:33:37.922222Z", "iopub.status.busy": "2024-08-16T10:33:37.921671Z", "iopub.status.idle": "2024-08-16T10:33:37.940638Z", "shell.execute_reply": "2024-08-16T10:33:37.939776Z" }, "id": "mZFn6OmwwqaR" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: ────H───@───────────────────────────────────────────────────────────────M('out')───\n", " │ │\n", "1: ────────X───@───────────────────────────────────────────────────────────M──────────\n", " │ │\n", "2: ────────────X───@───────────────────────────────────────────────────────M──────────\n", " │ │\n", "3: ────────────────X───@───────────────────────────────────────────────────M──────────\n", " │ │\n", "4: ────────────────────X───@───────────────────────────────────────────────M──────────\n", " │ │\n", "5: ────────────────────────X───@───────────────────────────────────────────M──────────\n", " │ │\n", "6: ────────────────────────────X───@───────────────────────────────────────M──────────\n", " │ │\n", "7: ────────────────────────────────X───@───────────────────────────────────M──────────\n", " │ │\n", "8: ────────────────────────────────────X───@───────────────────────────────M──────────\n", " │ │\n", "9: ────────────────────────────────────────X───@───────────────────────────M──────────\n", " │ │\n", "10: ───────────────────────────────────────────X───@───────────────────────M──────────\n", " │ │\n", "11: ───────────────────────────────────────────────X───@───────────────────M──────────\n", " │ │\n", "12: ───────────────────────────────────────────────────X───@───────────────M──────────\n", " │ │\n", "13: ───────────────────────────────────────────────────────X───@───────────M──────────\n", " │ │\n", "14: ───────────────────────────────────────────────────────────X───@───────M──────────\n", " │ │\n", "15: ───────────────────────────────────────────────────────────────X───@───M──────────\n", " │ │\n", "16: ───────────────────────────────────────────────────────────────────X───M──────────\n" ] } ], "source": [ "# Define an abstract line of 17 qubits\n", "number_of_qubits = 17\n", "qubits = cirq.LineQubit.range(number_of_qubits)\n", "\n", "# Create a GHZ circuit on this qubit line\n", "ghz_circuit = cirq.Circuit(\n", " cirq.H(qubits[0]),\n", " *[cirq.CNOT(qubits[i - 1], qubits[i]) for i in range(1, number_of_qubits)],\n", " cirq.measure(*qubits, key='out'),\n", ")\n", "print(ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "tc5L80jjMknb" }, "source": [ "Notice that this circuit consists of a sequence of CNOT gates applied consecutively to a single chain of qubits. The connectivity required by the circuit is simple in the sense that it needs a line of qubits which are only connected to their adjacent neighbor in the sequence. As constructed, this consists of 17 `cirq.LineQubit`s indexed `0, 1, 2...16`. " ] }, { "cell_type": "markdown", "metadata": { "id": "gmgGLI7eZLQt" }, "source": [ "### Transform the circuit \n", "\n", "Before executing a circuit on (virtual) quantum hardware, the operations in the circuit need to be translated to use the types of gates the device supports. The `cirq.optimize_for_target_gateset` function does this for you, transforming the operations to use the `cirq.SqrtIswapTargetGateset`, which is supported by the Weber processor that this QVM is based on. Learn more about the gate set constraints of Google hardware at the [Hardware](../hardware) page." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-08-16T10:33:37.944796Z", "iopub.status.busy": "2024-08-16T10:33:37.944258Z", "iopub.status.idle": "2024-08-16T10:33:38.334503Z", "shell.execute_reply": "2024-08-16T10:33:38.333556Z" }, "id": "MqdssGOhY9-S" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0: ────PhXZ(a=-1,x=0.25,z=-0.5)────────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')───\n", " │ │ │\n", "1: ────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "2: ───────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "3: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "4: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "5: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "6: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "7: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "8: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "9: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "10: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "11: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "12: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "13: ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "14: ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "15: ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────M──────────\n", " │ │ │\n", "16: ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M──────────\n" ] } ], "source": [ "# Convert the gates in the GHZ circuit to the \"SqrtIswap\" gateset, which the device uses.\n", "translated_ghz_circuit = cirq.optimize_for_target_gateset(\n", " ghz_circuit, context=cirq.TransformerContext(deep=True), gateset=cirq.SqrtIswapTargetGateset()\n", ")\n", "print(translated_ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "JfFfiNkbDDQy" }, "source": [ "### Choose qubits on the virtual device\n", "\n", "Choose qubits on the device to execute your device ready circuit on. Look at the device map (as above) and choose a set of qubits that fit your circuit (eg a line or a block). The Rainbow and Weber devices have different topologies, some qubit maps may be possible on only one of these devices. As noted, the GHZ example circuit as constructed will fit on a 17 qubit chain of adjacent qubits on the device, so you only need to find this consecutive line of qubits. See [Qubit Picking](../hardware/qubit_picking.ipynb) for more advice and methods for selecting qubits. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-08-16T10:33:38.339846Z", "iopub.status.busy": "2024-08-16T10:33:38.339226Z", "iopub.status.idle": "2024-08-16T10:33:38.344874Z", "shell.execute_reply": "2024-08-16T10:33:38.344026Z" }, "id": "k4PsLLFnDGN-" }, "outputs": [], "source": [ "# Choose qubits on the virtual device\n", "device_qubit_chain = [\n", " cirq.GridQubit(5, 2),\n", " cirq.GridQubit(5, 3),\n", " cirq.GridQubit(4, 3),\n", " cirq.GridQubit(4, 2),\n", " cirq.GridQubit(4, 1),\n", " cirq.GridQubit(5, 1),\n", " cirq.GridQubit(6, 1),\n", " cirq.GridQubit(6, 2),\n", " cirq.GridQubit(6, 3),\n", " cirq.GridQubit(6, 4),\n", " cirq.GridQubit(6, 5),\n", " cirq.GridQubit(7, 5),\n", " cirq.GridQubit(8, 5),\n", " cirq.GridQubit(8, 4),\n", " cirq.GridQubit(8, 3),\n", " cirq.GridQubit(7, 3),\n", " cirq.GridQubit(7, 4),\n", "]\n", "# Layout:\n", "#\n", "# q(4, 1)───q(4, 2)───q(4, 3)\n", "# │ │\n", "# │ │\n", "# q(5, 1) q(5, 2)───q(5, 3)\n", "# │\n", "# │\n", "# q(6, 1)───q(6, 2)───q(6, 3)───q(6, 4)───q(6, 5)\n", "# │\n", "# │\n", "# q(7, 3)───q(7, 4) q(7, 5)\n", "# │ │\n", "# │ │\n", "# q(8, 3)───q(8, 4)───q(8, 5)" ] }, { "cell_type": "markdown", "metadata": { "id": "UD28ccnyrezn" }, "source": [ "### Map the transformed circuit to the qubits you chose on the device\n", "\n", "The transformed GHZ circuit still needs to be re-mapped to use the selected qubits. The `transform_qubits` function of `cirq.Circuit` does this automatically, returning a new transformed circuit when given a qubit mapping function. \n", "\n", "Because the connectivity qubit chain in the GHZ circuit example follows the sequence of `cirq.LineQubit`s in `qubits`, it suffices to zip the circuit's qubits together with the chosen device qubits, since both are connected chains of 17 qubits. The dictionary built from these paired qubits can then be turned into a simple lambda function for use with `transform_qubits`, as follows:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-08-16T10:33:38.348530Z", "iopub.status.busy": "2024-08-16T10:33:38.348252Z", "iopub.status.idle": "2024-08-16T10:33:38.398420Z", "shell.execute_reply": "2024-08-16T10:33:38.397538Z" }, "id": "znPgxQ81rjb3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4, 1): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(4, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)─────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(4, 3): ──────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(5, 1): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(5, 2): ───PhXZ(a=-1,x=0.25,z=-0.5)────────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M('out')───\n", " │ │ │ │ │ │ │\n", "(5, 3): ───PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 1): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 2): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 3): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 4): ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(6, 5): ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │\n", "(7, 3): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)─────M──────────\n", " │ │ │ │ │ │ │\n", "(7, 4): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=0.5,x=0.75,z=-0.5)───M──────────\n", " │ │ │ │ │\n", "(7, 5): ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap───────PhXZ(a=-0.5,x=1,z=0)───iSwap───────PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 3): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 4): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼──────────────────────────────────┼───────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap──────────────────────────────iSwap───────PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n", " │ │ │ │ │\n", "(8, 5): ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────PhXZ(a=8.22e-09,x=0.75,z=0.5)───iSwap^0.5──────────────────────────iSwap^0.5───PhXZ(a=-0.196,x=0.667,z=1.0)────iSwap^0.5───PhXZ(a=-0.5,x=1,z=0)───iSwap^0.5───PhXZ(a=-1,x=0.5,z=0.25)──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────M──────────\n" ] } ], "source": [ "# Map the line of circuit qubits to the chosen line of device qubits.\n", "qubit_map = dict(zip(qubits, device_qubit_chain))\n", "# Then replace qubits in the circuit according to that map.\n", "device_ready_ghz_circuit = translated_ghz_circuit.transform_qubits(lambda q: qubit_map[q])\n", "print(device_ready_ghz_circuit)" ] }, { "cell_type": "markdown", "metadata": { "id": "dWYXJmyWqg3x" }, "source": [ "### **Running other circuits**\n", "\n", "In principle, you can run any custom [Circuit](../build/circuits.ipynb) with a quantum virtual machine, but realistically there are some constraints. As mentioned, the circuits need to be mappable to the device. Additionally, the number of qubits that are simulatable depends highly on the hardware available to you and how long you are able to run your simulation. As the QVM is instantiated as above, with a `qsimcirq.QSimSimulator`, it only uses the default, local [qsim](https://quantumai.google/qsim) simulator. However, qsim has plenty of support for being run in a [Google Cloud instance](/qsim/tutorials/gcp_before_you_begin){:.external}, with a variable amount of compute power. In order to get the most capacity possible for qsim, use [Multinode Simulation](/qsim/tutorials/multinode).\n", "\n", "For an example of building and running a much larger circuit, see the [QVM Stabilizer Example](./qvm_stabilizer_example.ipynb) tutorial. " ] }, { "cell_type": "markdown", "metadata": { "id": "Zxv0RtJuhaof" }, "source": [ "## **Execute** Your Circuit on the Quantum Virtual Machine\n", "\n", "You can run the now device-ready circuit, as you would with any other `cirq.Engine` instance, by getting a sampler from it and using the `run` function on the circuits. Your choice of `repetitions` is intrinsically related to the accuracy of your simulated results. We recommend 3000 repetitions for trial runs, and 10,000 repetitions for accuracy-critical runs, but you can stick to one to ten repetitions when testing a code pipeline. You can read more about this in [this paper](https://arxiv.org/abs/2111.02396){:.external}." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2024-08-16T10:33:38.403311Z", "iopub.status.busy": "2024-08-16T10:33:38.402813Z", "iopub.status.idle": "2024-08-16T10:34:12.972453Z", "shell.execute_reply": "2024-08-16T10:34:12.971357Z" }, "id": "bFjnNSqRZsFu" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Circuit successfully executed on your quantum virtual machine weber\n", "QVM runtime: 34.56s (3000 repetitions)\n", "You can now print or plot \"results\"\n" ] } ], "source": [ "# @title Execute your device ready circuit on the Quantum Virtual Machine\n", "circuit = device_ready_ghz_circuit\n", "\n", "repetitions = 3000\n", "start = time.time()\n", "results = sim_engine.get_sampler(processor_id).run(circuit, repetitions=repetitions)\n", "elapsed = time.time() - start\n", "\n", "print('Circuit successfully executed on your quantum virtual machine', processor_id)\n", "print(f'QVM runtime: {elapsed:.04g}s ({repetitions} repetitions)')\n", "print('You can now print or plot \"results\"')" ] }, { "cell_type": "markdown", "metadata": { "id": "na6nqbvviW7U" }, "source": [ "## **Visualize** Output\n", "\n", "Finally, you can use a [state histogram](./state_histograms.ipynb) to plot the measured results." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-08-16T10:34:12.976331Z", "iopub.status.busy": "2024-08-16T10:34:12.975841Z", "iopub.status.idle": "2024-08-16T10:34:16.257997Z", "shell.execute_reply": "2024-08-16T10:34:16.257020Z" }, "id": "O92KP1EwZwV9" }, "outputs": [ { "data": { "image/png": "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Nuv999/3tG/btq3UMQGA6oJL+wCgiurZs6fq1aun2NhYDRo0SKGhoVq0aJEaNmwo6fSZkM8//1x33nmnjh49qoMHD+rgwYM6dOiQEhMTtWPHDs8sfxEREdq6dat27Njhz13ymDRpkubNm6e2bdtq6dKlevrpp5WQkKB27drpxx9/9GmMWrVqeb4+fvy4Dh48qM6dO8uyLG3cuPGc68+fP18Oh0O9evXyHLuDBw8qISFBYWFh+uKLL3yq48MPP9Ty5ctLPaKjo8+5bkREhNatW6f9+/f7tK0z/fOf/1RMTIzuueceT1tQUJAeffRRHTt2TKtXr5YkLVmyREFBQXrwwQc9/QICApScnFzu2CNGjCjVZnq8H3jgAc/XERERuuaaaxQaGup1f98111yjiIgI/ec///FxrwGg6uDSPgCoombOnKmrr75aLpdLb7/9tr788kuFhIR4lu/cuVOWZenZZ5/Vs88+W+YYOTk5atCggSZPnqw77rhDV199ta677jrdeuutuu+++3T99ddfrN0p5Z577tE999wjt9utdevWKS0tTfPmzVO/fv20ZcuWc07MkJGRofHjx2vRokWl7mlyuVzn3P6OHTvkcrk892SdzddJL2666SbP5Yxn8mViialTpyopKUmxsbFKSEjQbbfdpiFDhqhZs2bnXHfPnj1q0aKFAgK8/0+0ZcuWnuUl/1555ZWeS/RKXHXVVWWOGxgY6AnrZzI53jVr1ix1aafD4VDDhg297lEraa+se9IAoDIRpACgiurQoYNn1r7+/furS5cuuvfee7V9+3aFhYV57sEZM2aMEhMTyxyj5I/lm266Sbt27dLHH3+sZcuW6f/+7/80ffp0zZo1y3PmwGazybKsUmMUFRVVxu552O129erVS7169VJQUJDmzJmjdevWqVu3buWuU1RUpF69eunw4cN68sknFRcXp9DQUP3yyy8aOnSoT/cnFRcXKyoqSu+9916Zy8u7x6si3XnnneratasWLlyoZcuW6cUXX9Sf//xn/eMf/1CfPn0qfftlCQkJKRXOTI93jRo1yhy7vPay3ncAUNURpACgGqhRo4ZSU1N18803669//aueeuopz1mLoKAg9ezZ85xjREZGatiwYRo2bJiOHTumm266SRMnTvQEqSuuuKLMS6xKzmz8mrPPMpyv9u3ba86cOcrMzPzVcb///nv99NNPmjNnjoYMGeJpP3MWwnPV1rx5c61YsUI33nij12VrF9uVV16pP/zhD/rDH/6gnJwctWvXTs8995wnSJVXf+PGjfXdd9+puLjYK/hs27bNs7zk3y+++EInTpzwOiu1c+dOn2s0Od4AcLngHikAqCa6d++uDh06aMaMGTp16pSioqLUvXt3vfHGG57gcaYDBw54vj506JDXsrCwMF111VXKy8vztDVv3lzbtm3zWm/z5s1as2bNOWsr+ZwhXz6Q98SJE0pPTy9z2WeffSbp9L0zvzZuyZmNM89kWJalV155xefa7rzzThUVFWnKlCml1iksLPT5w4XPV1FRUalL4qKiolS/fn2v1yU0NLTMSxVvu+02ZWVl6YMPPvC0FRYW6i9/+YvCwsI8Z/QSExNVUFCgN99809OvuLjYMx25L0yONwBcLjgjBQDVyNixY/W73/1OaWlpeuSRRzRz5kx16dJFrVq10oMPPqhmzZopOztb6enp2rdvnzZv3ixJio+PV/fu3ZWQkKDIyEh98803nmm3S9x///16+eWXlZiYqOHDhysnJ0ezZs3StddeK7fb/at1JSQkSJKefvpp3X333QoKClK/fv3K/CDXEydOqHPnzurUqZNuvfVWxcbGKjc3Vx999JH+9a9/qX///mrbtq2k0+EuIiJCs2bNUnh4uEJDQ9WxY0fFxcWpefPmGjNmjH755RfZ7XZ9+OGHZd5rU1Lbo48+qsTERNWoUUN33323unXrpocfflipqanatGmTevfuraCgIO3YsUPz58/XK6+8okGDBp3fC+WDo0ePqmHDhho0aJBat26tsLAwrVixQuvXr9e0adO86v/ggw+UkpKiG264QWFhYerXr58eeughvfHGGxo6dKg2bNigJk2aaMGCBVqzZo1mzJih8PBwSacvC+3QoYMef/xx7dy5U3FxcVq0aJFn2nZfziaaHG8AuGz4bb5AAECZSqY/X79+fallRUVFVvPmza3mzZtbhYWFlmVZ1q5du6whQ4ZYMTExVlBQkNWgQQPr9ttvtxYsWOBZ709/+pPVoUMHKyIiwqpVq5YVFxdnPffcc1Z+fr7X+O+++67VrFkzKzg42GrTpo21dOlSn6Y/tyzLmjJlitWgQQMrICDgV6dCLygosN58802rf//+VuPGja2QkBCrdu3aVtu2ba0XX3zRysvL8+r/8ccf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = cirq.plot_state_histogram(results.histogram(key='out'))\n", "ax.get_xaxis().set_ticks([])\n", "plt.gcf().set_size_inches(10, 4)\n", "plt.show(ax)" ] }, { "cell_type": "markdown", "metadata": { "id": "XOTvkKq_Z1UY" }, "source": [ "The leftmost and rightmost bars correspond to $|00..0\\rangle$ and $|11..1\\rangle$, respectively, which matches expectation for a GHZ state. Natural $|1\\rangle → |0\\rangle$ decay causes $|11..1\\rangle$ to be much less common than $|00..0\\rangle$, and other states also appear due to the various error mechanisms in the hardware that are mimicked by the simulated noise model. Learn more about these errors [here](https://arxiv.org/abs/2111.02396){:.external}.\n" ] } ], "metadata": { "colab": { "collapsed_sections": [ "Lfira0gPf0Gd" ], "name": "qvm_basic_example.ipynb", "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "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.10.14" } }, "nbformat": 4, "nbformat_minor": 0 }