diff --git a/docs/requirements.txt b/docs/requirements.txt index 5c9ef500f..596a762ff 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -6,6 +6,5 @@ nbsphinx nbsphinx-link ipython >= 8.10 # Avoids bug with code highlighting myst-parser - # Not on PyPI # pandoc diff --git a/docs/source/conf.py b/docs/source/conf.py index e40503e2a..3faea6833 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -60,7 +60,7 @@ # "tasklist", ] -myst_heading_anchors = 3 +myst_heading_anchors = 5 # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] diff --git a/docs/source/conventions.md b/docs/source/conventions.md index 73c7e3b34..a3d59d6a6 100644 --- a/docs/source/conventions.md +++ b/docs/source/conventions.md @@ -166,7 +166,7 @@ of $|a\rangle$ and $|b\rangle$. ##### Pulser's state-vector definition -In Pulser, we consistently define the state vectors according to their relative energy. +In Pulser, we consistently define the state vectors according to their relative energy (i.e. from the lowest to the highest energy level). In this way we have, for any given basis, that $$ diff --git a/docs/source/files/bloch_rotation_a_b.png b/docs/source/files/bloch_rotation_a_b.png new file mode 100644 index 000000000..9a374eaa7 Binary files /dev/null and b/docs/source/files/bloch_rotation_a_b.png differ diff --git a/docs/source/files/decision_diagram_device.png b/docs/source/files/decision_diagram_device.png new file mode 100644 index 000000000..fbf0cbc11 Binary files /dev/null and b/docs/source/files/decision_diagram_device.png differ diff --git a/docs/source/index.rst b/docs/source/index.rst index bdccc5b32..48e74c0b3 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -51,7 +51,7 @@ computers and simulators, check the pages in :doc:`review`. :caption: Installation and First Steps installation - intro_rydberg_blockade + programming tutorials/creating tutorials/simulating diff --git a/docs/source/intro_rydberg_blockade.ipynb b/docs/source/intro_rydberg_blockade.ipynb deleted file mode 100644 index 35cef0446..000000000 --- a/docs/source/intro_rydberg_blockade.ipynb +++ /dev/null @@ -1,243 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Quickstart: The Rydberg Blockade" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The following walkthrough highlights some of Pulser's core features and uses them to display a crucial physical effect for neutral atom devices: the **Rydberg blockade**. Bear in mind that it is not meant to be a comprehensive step-by-step guide on how to use Pulser, but rather a showcase of Pulser in action. \n", - "\n", - "For a more detailed introduction to Pulser, check the tutorials on [Pulse Sequence Creation](tutorials/creating.nblink) and [Simulation of Sequences](tutorials/simulating.nblink). To better understand neutral atom devices and how they serve as quantum computers and simulators, check the pages in [Quantum Computing with Neutral Atoms](review.rst)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Pulser's main features" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pulser\n", - "from pulser_simulation import QutipEmulator" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With ``pulser``, it is easy to define a ``Register`` consisting of any arrangement of atoms in a quantum processor. For example, we can generate a register with hexagonal shape:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "layers = 3\n", - "reg = pulser.Register.hexagon(layers, prefix=\"q\")\n", - "reg.draw(with_labels=False)" - ] - }, - { - "attachments": { - "download%20%282%29.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In fact, we can place the atoms in arbitrary positions by specifying the positions of each one. As an exotic example, here is a picture of the Gioconda as a register of neutral atoms made using Pulser:\n", - "\n", - "![download%20%282%29.png](attachment:download%20%282%29.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is also simple to create and design a ``Pulse`` that will act on the atom array:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "duration = 1000 # Typical: ~1 µsec\n", - "pulse = pulser.Pulse(\n", - " amplitude=pulser.BlackmanWaveform(duration, np.pi),\n", - " detuning=pulser.RampWaveform(duration, -5.0, 10.0),\n", - " phase=0,\n", - ")\n", - "pulse.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each pulse acts on a set of atoms at a certain moment of time. The entire ``Sequence`` is stored by Pulser and can then be either simulated or sent to a real device. Below is the example of a sequence sending the same $\\pi$-pulse to two atoms, sequentially, using the same channel." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "reg = pulser.Register.rectangle(1, 2, spacing=8, prefix=\"atom\")\n", - "reg.draw()\n", - "\n", - "pi_pulse = pulser.Pulse.ConstantDetuning(\n", - " pulser.BlackmanWaveform(duration, np.pi), 0.0, 0.0\n", - ")\n", - "\n", - "seq = pulser.Sequence(reg, pulser.DigitalAnalogDevice)\n", - "\n", - "seq.declare_channel(\"ryd\", \"rydberg_local\", \"atom0\")\n", - "\n", - "seq.add(pi_pulse, \"ryd\")\n", - "seq.target(\"atom1\", \"ryd\")\n", - "seq.add(pi_pulse, \"ryd\")\n", - "\n", - "seq.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Probing the Rydberg Blockade Mechanism" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Rydberg atoms are a prominent architecture for exploring condensed matter physics and quantum information processing. For example, one can use Pulser to write a sequence of succesive $\\pi$-pulses on a two atom system, each one coupling the atom to its excited Rydberg state. This will allow us to study the *Rydberg Blockade* effect, using the dedicated ``pulser_simulation`` library:\n", - "\n", - "The presence of the van der Waals interaction when both atoms are in the Rydberg state, prevents the collective ground state $|gg\\rangle$ to couple to $|rr\\rangle$, which is shifted out of resonance. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Hamiltonian for the two-atom system can be written as:\n", - "\n", - "$$H = \\frac{\\hbar \\Omega_1(t)}{2} \\sigma_1^x + \\frac{\\hbar \\Omega_2(t)}{2} \\sigma_2^x + U n_1n_2 $$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We shall explore this blockade by changing the interatomic distance $R$:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "data = []\n", - "distances = np.linspace(6.5, 14, 7)\n", - "\n", - "r = [1, 0] # |r>\n", - "rr = np.kron(r, r) # |rr>\n", - "occup = [np.outer(rr, np.conj(rr))] # |rr> + + Click to expand + +Neutral atoms store the quantum information in their energy levels (also known as [_eigenstates_](./conventions.md)). When only two eigenstates are used to encode information, each atom is a qubit. If these eigenstates are $\left|a\right>$ and $\left|b\right>$, then the state of an atom is described by $\left|\psi\right> = \alpha \left|a\right> + \beta \left|b\right>$, with $|\alpha|^2 + |\beta|^2 = 1$. + +When multiple atoms are used, the state of the system is described by a linear combination of the _eigenstates_ of the multi-atom system, whose set is obtained by making the cross product of the set of eigenstate of each atom. If each atom is described by $d$ eigenstates labelled ${\left|a_1\right>, \left|a_2\right>...\left|a_d\right>}$ (each atom is a _qudit_), and if there are $N$ atoms in the system, then the state of the whole system is provided by + +$$ +\begin{align} +\left|\Psi\right> &= \sum_{i_1, ..., i_N \in [1, ..., d]} c_{i_1, ..., i_N} \left|a_{i_1}...a_{i_N}\right> \\ +&= c_{1, 1, ..., 1}\left|a_{1}a_{1}...a_{1}\right> + ... + c_{1, 1, ..., d}\left|a_{1}a_{1}...a_{d}\right> + ... + c_{d, d, ..., d}\left|a_{d}a_{d}...a_{d}\right> +\end{align} +$$ + +where $\sum_{i_1, ..., i_N \in [1, ..., d]} |c_{i_1, ..., i_N}|^2 = 1$. If $d=2$, then this becomes + +$$ +\left|\Psi\right> = c_{1, 1, ..., 1}\left|a_{1}a_{1}...a_{1}\right> + c_{1, 1, ..., 2}\left|a_{1}a_{1}...a_{2}\right> + ... + c_{2, 2, ..., 2}\left|a_{2}a_{2}...a_{2}\right> +$$ + +If $d=2$ and $N=1$, you have the state of a qubit as above $\left|\Psi\right> = c_{1}\left|a_{1}\right> + c_{2}\left|a_{2}\right>$. + + + +### 2. Hamiltonian evolves the state + +In quantum physics, the state of a quantum system evolves along time following the Schrödinger equation: + +$$i\frac{d\left|\Psi\right>(t)}{dt} = \frac{H(t)}{\hbar} \left|\Psi\right>(t)$$ + +Here $H(t)$ is the Hamiltonian describing the evolution of the system. For a system of atoms in the initial state $\left|\Psi_0\right>$, the final state of the system after a time $\Delta t$ is: + +$$ \left|\Psi_f\right> = \exp\left(-\frac{i}{\hbar}\int_0^{\Delta t} H(t) dt\right)\left|\Psi_0\right>$$ + +The Hamiltonian describing the evolution of the system can be written as + +$$ +H(t) = \sum_i \left (H^D_i(t) + \sum_{j + + Click to expand + +The driving Hamiltonian describes the effect of a pulse on two of energies levels of an individual atom, $|a\rangle$ and $|b\rangle$. A pulse is determined by its Rabi frequency $\Omega(t)$, its detuning $\delta(t)$ and its phase $\phi(t)$. + +$$ +H^D(t) / \hbar = \frac{\Omega(t)}{2} e^{-j\phi(t)} |a\rangle\langle b| + \frac{\Omega(t)}{2} e^{j\phi(t)} |b\rangle\langle a| - \delta(t) |b\rangle\langle b| +$$ + +In the Bloch sphere representation, this Hamiltonian describes a rotation around the axis $\overrightarrow{\Omega}(t) = (\Omega(t)\cos(\phi), -\Omega(t)\sin(\phi), -\delta(t))^T$, with angular velocity $\Omega_{eff}(t) = |\overrightarrow{\Omega}(t)| = \sqrt{\Omega^2(t) + \delta^2(t)}$. + +:::{figure} files/bloch_rotation_a_b.png +:align: center +:alt: Representation of the drive Hamiltonian's dynamics as a rotation in the Bloch sphere. +:width: 300 + +Representation of the drive Hamiltonian's dynamics as a rotation in the Bloch sphere. The coherent excitation is driven between a lower energy level, $|a\rangle$, and a higher energy level, +$|b\rangle$, with Rabi frequency $\Omega(t)$, detuning $\delta(t)$ and phase $\phi$. +::: + + +:::{important} +With Pulser, you program the driving Hamiltonian by setting $\Omega(t)$, $\delta(t)$ and $\phi(t)$, all the while Pulser ensures that you respect the constraints of your chosen device. +::: + + + +#### 2.2. Interaction Hamiltonian + +
+ + Click to expand + +The interaction Hamiltonian depends on the distance between the atoms $i$ and $j$, $R_{ij}$, and the energy levels in which the information is encoded in these atoms, that define the interaction between the atoms $\hat{U}_{ij}$ + +$$ +H^\text{int}_{ij} = \hat{U}_{ij}(R_{ij}) +$$ + +The interaction operator $\hat{U}_{ij}$ is composed of an entangling operator and an interaction strength. + +:::{note} +The interaction Hamiltonian is time-independent. It is always on, no matter the values of the drive Hamiltonian (even if the values of the parameters $\Omega$, $\delta$, $\phi$ are equal to $0$ over a time $\Delta t$). +::: + +##### Ising Hamiltonian + +If the Rydberg state $\left|r\right>$ is involved in the computation, then + +$$ +\hat{U}_{ij}(R_{ij}) = \frac{C_6}{R_{ij}^6} \hat{n}_i \hat{n}_j +$$ + +- The interaction strength is $\frac{C_6}{R_{ij}^6}$, with $C_6$ a coefficient that depends on the principal quantum number of the Rydberg state. +- The entangling operator between atom $i$ and $j$ is $\hat{n}_i\hat{n}_j = |r\rangle\langle r|_i |r\rangle\langle r|_j$. + +Together with the driving Hamiltonian, this interaction encodes the _Ising Hamiltonian_ and is the **most common choice in neutral-atom devices.** + +##### XY Hamiltonian + +If the information is stored in the Rydberg states $\left|0\right>$ and $\left|1\right>$ (the so-called `XY` basis), then + +$$ +\hat{U}_{ij}(R_{ij}) =\frac{C_3}{R_{ij}^3} (|1\rangle\langle 0|_i |0\rangle\langle 1|_j + |0\rangle\langle 1|_i |1\rangle\langle 0|_j) +$$ + +- The interaction strength is $\frac{C_3}{R_{ij}^3}$, with $C_3$ a coefficient that depends on the energy levels used to encode $\left|0\right>$ and $\left|1\right>$. +- The entangling operator between atom $i$ and $j$ is $\hat{\sigma}_i^{+}\hat{\sigma}_j^{-} + \hat{\sigma}_i^{-}\hat{\sigma}_j^{+} = |1\rangle\langle 0|_i |0\rangle\langle 1|_j + |0\rangle\langle 1|_i |1\rangle\langle 0|_j$. + +This interaction hamiltonian is associated with the _XY Hamiltonian_ and is a less common mode of operation, usually accessible only in select neutral-atom devices. + +:::{important} +With Pulser, you program the interaction Hamiltonian by setting the distance between atoms, $R_{ij}$. Additionally, the choice of eigenstates used in the computation and the Rydberg level(s) targeted by the device fully determine the interaction strength. Most commonly, the ground and Rydberg states ($\left|g\right>$ and $\left|r\right>$) are used, such that +$H^\text{int}_{ij} = \frac{C_6}{R_{ij}^6} \hat{n}_i\hat{n}_j$ +When providing the distance between atoms, Pulser ensures that you respect the constraints of your chosen device. +::: + +
+ +## Writing a Pulser program + +As outlined above, Pulser lets you program an Hamiltonian ([the Hamiltonian $H$](programming.md#2-hamiltonian-evolves-the-state)) so that you can manipulate the quantum state of a system of atoms. The series of necessary instructions is encapsulated in the so-called Pulser `Sequence`. Here is a step-by-step guide to create your own Pulser `Sequence`. + +### 1. Pick a Device + + +:::{figure} files/decision_diagram_device.png +:align: center +:alt: Decision Diagram to select a Device for the computation +:width: 600 +::: + +The `Device` you select will dictate some parameters and constrain others. For instance, the value of the $C_6$ and $C_3$ coefficients of the [interaction Hamiltonian](programming.md#22-interaction-hamiltonian) are defined by the device. Notably, the `Device` defines the list of `Channels` that can be used in the computation, that have a direct impact on the Hamiltonian that can be implemented. For a complete view of the constraints introduced by the device, [check its description](./apidoc/core.rst). + +### 2. Create the Register + +The `Register` defines the position of the atoms. This determines: + +- the number of atoms to use in the quantum computation, i.e, the size of the system (let's note it $N$). +- the distance between the atoms, the $R_{ij} (1\le i, j\le N)$ parameters in the [interaction Hamiltonian](programming.md#22-interaction-hamiltonian). + +### 3. Pick the Channels + +A `Channel` targets the transition between two energy levels. Therefore, picking channels defines the energy levels that will be used in the computation. The channels must be picked from the `Device.channels`, so your device selection should take into account the channels it supports. + +Picking the channel will initialize the state of the system, and fully determine the [interaction Hamiltonian](programming.md#22-interaction-hamiltonian): + +- If the selected Channel is the `Rydberg` or the `Raman` channel, the system is initialized in $\left|gg...g\right>$ and the interaction Hamiltonian is the [Ising Hamiltonian](programming.md#ising-hamiltonian) + +$$H^\text{int}_{ij} =\frac{C_6}{R_{ij}^6}|r\rangle\langle r|_i |r\rangle\langle r|_j$$ + +- If the selected Channel is the `Microwave` channel, the system is initialized in $\left|00...0\right>$ and the interaction Hamiltonian is the [XY Hamiltonian](programming.md#xy-hamiltonian) + +$$H^\text{int}_{ij} =\frac{C_3}{R_{ij}^3}|1\rangle\langle 0|_i |0\rangle\langle 1|_j + |0\rangle\langle 1|_i |1\rangle\langle 0|_j$$ + +:::{important} +At this stage, the [interaction Hamiltonian](programming.md#22-interaction-hamiltonian) is fully determined. +::: + +A `Channel` is also determined by its addressing. This defines the number of atoms that are going to be targeted by a pulse. If the addressing of a `Channel` is `Global`, all the atoms will experience the same pulse targetting the same transition. In the [Hamiltonian $H$](programming.md#2-hamiltonian-evolves-the-state), all the driving Hamiltonians $H^D_i$ are expressed as + +$$ +H^D_i(t) / \hbar = \frac{\Omega(t)}{2} e^{-j\phi(t)} |a\rangle_i \langle b|_i + \frac{\Omega(t)}{2} e^{j\phi(t)} |b\rangle_i\langle a|_i - \delta(t) |b\rangle_i\langle b|_i +$$ + +If the addressing of a `Channel` is `Local`, then only certain atoms (the atoms "target") will experience the pulse and have their evolution follow $H^D_i$. The driving hamiltonian of the other atoms is $H^D_i = \hat{0}_i$. The hamiltonian $H$ can also be rewritten: + +$$ +H(t) = \sum_{i \in targeted\_ atoms} H^D_i(t) + \sum_i \sum_{j$ and $\left|b\right>$ of the driving Hamiltonian. + +By applying a series of pulses and delays, one defines the entire driving Hamiltonian of each atom over time. + +## Conclusion + +We have successfully defined the [Hamiltonian](programming.md#2-hamiltonian-evolves-the-state) $H$ describing the evolution of the system over time, by: +- picking a `Device`, that defined the value of the $C_6$ or $C_3$ coefficients. +- creating a `Register` of atoms, that defined the number of atoms used and the distance between the atoms $R_{ij}$. +- Selecting the `Channels` of the `Device` to use, that defined the energy levels of the atoms to use: that step completely defined the [interaction Hamiltonian](programming.md#22-interaction-hamiltonian). The addressing property of each `Channel` also dictates the atoms that will be targeted by the `Pulse`. +- Adding `Pulse` and delays to the `Channel`s defines the [driving Hamiltonian](programming.md#21-driving-hamiltonian) of each atom along time. + +You can now simulate your first Hamiltonian by programming your first `Sequence` ! [In this tutorial](tutorials/creating.nblink), you will simulate the evolution of the state of an atom initialized in $\left|g\right>$ under a Hamiltonian $H(t)=\frac{\Omega(t)}{2} |g\rangle \langle r|+\frac{\Omega(t)}{2} |r\rangle\langle g|$, with $\Omega$ chosen such that the final state of the atom is the excited state $\left|r\right>$. + +Many concepts have been introduced here and you might want further explanations. +- The `Device` object contains all the constraints and physical quantities that are defined in a QPU. [This section in the fundamentals](apidoc/core.rst) details these and provides examples of `Devices`. The `VirtualDevices` were also mentioned in this document ([here](programming.md#1-pick-a-device)), this is a most advanced feature described [here](tutorials/virtual_devices.nblink). +- There are multiple ways of defining a `Register`, this is further detailed [in this section](tutorials/reg_layouts.nblink). +- The energy levels associated with each `Channel` and the interaction Hamiltonian they implement are summed up in [the conventions page](conventions.md). The channels contain lots of constraints and physical informations, they are detailed in [the same section as the `Device`](apidoc/core.rst). +- The quantities in a `Pulse` are defined using `Waveform`s, read more about this [on this page](tutorials/composite_wfs.nblink). \ No newline at end of file diff --git a/tutorials/creating_sequences.ipynb b/tutorials/creating_sequences.ipynb index b5fc3aaf1..8d4cbc001 100644 --- a/tutorials/creating_sequences.ipynb +++ b/tutorials/creating_sequences.ipynb @@ -4,543 +4,308 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Pulse Sequence Creation" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pulser\n", - "from pprint import pprint" + "# Tutorial: Programming with Pulser" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. Creating the `Register`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `Register` defines the positions of the atoms and their names of each one. There are multiple ways of defining a `Register`, the most customizable one being to create a dictionary that associates a name (the key) to a cooordinate (the value)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "L = 4\n", - "square = np.array([[i, j] for i in range(L) for j in range(L)], dtype=float)\n", - "square -= np.mean(square, axis=0)\n", - "square *= 5\n", + "This tutorial demonstrates how to use Pulser to program the evolution of a quantum system. In a first part, we excite one atom from its ground state to its excited state using a constant pulse. In a second part, we show how to prepare a quantum system of 9 atoms in an anti-ferromagnetic state using time-dependent pulses.\n", "\n", - "qubits = {f\"q{i}\": point for (i, point) in enumerate(square)}\n", - "reg = pulser.Register(qubits)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `Register` class provides some useful features, like the ability to visualise the array and to make a rotated copy." + "This tutorial illustrates the recipe to program using Pulser provided in the [programming page](docs/programming.md). For more information regarding the steps followed and the mathematical objects at stake, please refer to this page." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "print(\"The original array:\")\n", - "reg.draw()\n", - "reg1 = reg.rotated(45) # Rotate by 45 degrees\n", - "print(\"The rotated array:\")\n", - "reg1.draw()" + "import numpy as np\n", + "import pulser" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If one doesn't particularly care about the name given to the qubits, one can also create a `Register` just from a list of coordinates (using the `Register.from_coordinates` class method). In this case, the qubit ID's are just numbered, starting from 0, in the order they are provided in, with the option of adding a common prefix before each number. Also, it automatically centers the entire array around the origin, an option that can be disabled if desired." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "reg2 = pulser.Register.from_coordinates(\n", - " square, prefix=\"q\"\n", - ") # All qubit IDs will start with 'q'\n", - "reg2.draw()" + "## Programming a constant Hamiltonian without interaction: Exciting one atom in the Rydberg state" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Furthermore, there are also built-in class methods from creation of common array patterns, namely:\n", - "- Square lattices in rectangular or square shapes\n", - "- Triangular lattices\n", + "As presented in [\"Programming a neutral-atom QPU\"](docs/programming.md), Pulser enables you to program [an Hamiltonian $H$](docs/programming.md#2-hamiltonian-evolves-the-state) composed of an interaction Hamiltonian and a drive Hamiltonian.\n", "\n", - "We could, thus, create the same square array as before by doing:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "reg3 = pulser.Register.square(\n", - " 4, spacing=5, prefix=\"q\"\n", - ") # 4x4 array with atoms 5 um apart\n", - "reg3.draw()" + "Let's program this Hamiltonian such that an atom initially in the ground state $\\left|g\\right>$ is measured in the rydberg state $\\left|r\\right>$ after a time $\\Delta t$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 2. Initializing the Sequence" + "### 1. Picking a `Device`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To create a `Sequence`, one has to provide it with the `Register` instance and the device in which the sequence will be executed. The chosen device will dictate whether the register is valid or not.\n", - "\n", - "We import the device (in this case, `DigitalAnalogDevice`) from `pulser.devices` and initialize our sequence with the freshly created register:" + "We need a `Device` that will enable us to target the transition between the ground and the rydberg state. The `Device` `pulser.AnalogDevice` contains the `Rydberg.Global` channel, that targets the transition between these two states. Let's select this `Device` !" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Register parameters:\n", + " - Dimensions: 2D\n", + " - Rydberg level: 60\n", + " - Maximum number of atoms: 25\n", + " - Maximum distance from origin: 35 µm\n", + " - Minimum distance between neighbouring atoms: 5 μm\n", + " - SLM Mask: No\n", + "\n", + "Layout parameters:\n", + " - Requires layout: Yes\n", + " - Accepts new layout: No\n", + " - Minimal number of traps: 1\n", + " - Maximum layout filling fraction: 0.5\n", + "\n", + "Device parameters:\n", + " - Maximum number of runs: 2000\n", + " - Maximum sequence duration: 4000 ns\n", + " - Channels can be reused: No\n", + " - Supported bases: ground-rydberg\n", + " - Supported states: r, g\n", + " - Ising interaction coefficient: 865723.02\n", + "\n", + "Channels:\n", + " - 'rydberg_global': Rydberg(addressing='Global', max_abs_detuning=125.66370614359172, max_amp=12.566370614359172, min_retarget_interval=None, fixed_retarget_t=None, max_targets=None, clock_period=4, min_duration=16, max_duration=100000000, min_avg_amp=0, mod_bandwidth=8, custom_phase_jump_time=None, eom_config=RydbergEOM(limiting_beam=, max_limiting_amp=188.49555921538757, intermediate_detuning=2827.4333882308138, controlled_beams=(,), mod_bandwidth=40, custom_buffer_time=240, multiple_beam_control=True, blue_shift_coeff=1.0, red_shift_coeff=1.0), propagation_dir=None)\n" + ] + } + ], "source": [ - "from pulser.devices import DigitalAnalogDevice\n", - "\n", - "seq = pulser.Sequence(reg, DigitalAnalogDevice)" + "device = pulser.AnalogDevice\n", + "print(device.specs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 3. Declaring the channels that will be used" + "### 2. Creating the `Register`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Inspecting what channels are available on this device:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.available_channels" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We're going to choose the `'rydberg_local'` and `'raman_local'` channels. Note how a declared channel is no longer reported as available." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "seq.declare_channel(\"ch0\", \"raman_local\")\n", - "print(\"Available channels after declaring 'ch0':\")\n", - "pprint(seq.available_channels)\n", + "We want to excite one atom. There will therefore be only one atom in the `Register`, whose position does not matter because it will not interact with another atom (in this specific case, the [interaction Hamiltonian](docs/programming.md#22-interaction-hamiltonian) is the operator 0 and $H(t)=H^D(t)$).\n", "\n", - "seq.declare_channel(\"ch1\", \"rydberg_local\", initial_target=\"q4\")\n", - "print(\"\\nAvailable channels after declaring 'ch1':\")\n", - "pprint(seq.available_channels)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At any time, we can also consult which channels were declared, their specifications and the name they were given by calling:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "seq.declared_channels" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. Composing the Sequence" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Every channel needs to start with a target. For `Global` channels this is predefined to be all qubits in the device, but for `Local` channels this has to be defined. This initial target can be set through at channel declaration (see how `'ch1'` was set to target qubit `4`), or it can be done through the standard `target` instruction." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.target(\"q1\", \"ch0\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now both channels have an initial target, so we can start building the sequence. Let's start by creating a simple pulse with a constant Rabi frequency of 2 rad/µs and a constant detuning of -10 rad/µs that lasts 200 ns." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "simple_pulse = pulser.Pulse.ConstantPulse(200, 2, -10, 0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's add this pulse to `'ch0'`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.add(simple_pulse, \"ch0\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, say we want to idle `'ch1'` for 100 ns while `'ch0'` is doing its pulse. We do that by calling: " + "Let's then create a `Register` containing one atom at the coordinate (0, 0)." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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R2936dIFFy5caNd3EjWGyYaogx07dgx5eXlQVbXFZ8D36NEDkiShtLS0xc+12+0Nytzd3bVtSZKaLLtyqnNJSQn8/f1b/E6i1mKyIepAtbW1mD59OqZOnYq//vWv+OMf/9igV3E5q9WKoUOHIisrq8F7Vw59HT9+3CkxVldX49ixYxg1apRTPo8IYLIh6lBPP/00bDYb3nzzTSxatAgDBw7E/fff3+w+cXFxSExMbFC+efNmfPXVVzh27BhefPFFZGVl4eTJkzhz5sxVxbh79254eHggJibmqj6H6HJMNkQdZOfOnVi1ahU++eQT+Pj4QJZlfPLJJ1AUBe+8806T+82ZMwdbt26FzWZzKJ8wYQJeeeUVDB06FD/99BPWrFmDvXv34pNPPrmqOP/5z39i2rRp8PLyuqrPIbqcJC6f80hEhnTvvffi+uuvx5IlSwBcus8mIiICq1atcur3nD17FoMGDUJqair69+/v1M+mzo09GyITWLFiBby9vXX/nhMnTmDNmjVMNOR07NkQmZBePRsivTDZEBGR7jiMRkREumOyISIi3THZEBGR7phsiIhId0w2RESkOyYbIiLSHZMNERHpjsmGiIh09/8BOWE+nwR0SJ8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "seq.delay(100, \"ch1\")" + "register = pulser.Register.from_coordinates([(0, 0)], prefix=\"q\")\n", + "register.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we want to create a more complex pulse to add to `'ch1'`, where the amplitude and the detuning are not constant. To do that, we use `Waveform`s:" + "At this stage, we can initialize the `Sequence`, our quantum program. This will check that the created `Register` matches the parameters set by the `Device` we picked. " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ - "duration = 1000\n", - "amp_wf = pulser.BlackmanWaveform(\n", - " duration, np.pi / 2\n", - ") # Duration: 1000 ns, Area: pi/2\n", - "detuning_wf = pulser.RampWaveform(\n", - " duration, -20, 20\n", - ") # Duration: 1000ns, linear sweep from -20 to 20 rad/µs" + "sequence = pulser.Sequence(register, device)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can visualize a waveform by calling:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "amp_wf.draw()" + "### 3. Picking the Channels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Also, it is often convenient to find the integral of a waveform, which can be obtain by calling:" + "The only channel we need to pick is a `Rydberg` channel to target the transition between $\\left|g\\right>$ and $\\left|r\\right>$. Since we only have one atom, the addressing does not matter, the `Rydberg.Global` channel will address the atom in the register. " ] }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "amp_wf.integral # dimensionless" - ] - }, - { - "cell_type": "markdown", + "execution_count": 5, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The available channels were {'rydberg_global': Rydberg(addressing='Global', max_abs_detuning=125.66370614359172, max_amp=12.566370614359172, min_retarget_interval=None, fixed_retarget_t=None, max_targets=None, clock_period=4, min_duration=16, max_duration=100000000, min_avg_amp=0, mod_bandwidth=8, custom_phase_jump_time=None, eom_config=RydbergEOM(limiting_beam=, max_limiting_amp=188.49555921538757, intermediate_detuning=2827.4333882308138, controlled_beams=(,), mod_bandwidth=40, custom_buffer_time=240, multiple_beam_control=True, blue_shift_coeff=1.0, red_shift_coeff=1.0), propagation_dir=None)}\n", + "The states used in the computation are ['r', 'g']\n" + ] + } + ], "source": [ - "We then create the pulse with the waveforms instead of fixed values and we can also visualize it:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "complex_pulse = pulser.Pulse(amp_wf, detuning_wf, phase=0)\n", - "complex_pulse.draw()" + "print(\"The available channels were\", sequence.available_channels)\n", + "sequence.declare_channel(\"ch_0\", \"rydberg_global\")\n", + "print(\n", + " \"The states used in the computation are\", sequence.get_addressed_states()\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "When we're satisfied, we can then add it to a channel:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.add(complex_pulse, \"ch1\")" + "At this stage, the atom is initialized in the ground state $\\left|g\\right>$ and only two energy levels are used in the computation: the state of the system is described by a qubit." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's check the schedule to see how this is looking:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "print(seq)" + "### 4. Adding the pulses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We can also draw the sequence, for a more visual representation:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, let's see how the Sequence builder handles conflicts (i.e. two channels acting on the same qubit at once). We're going to add a `complex_pulse`to `'ch0'`, but now we want to target it to qubit `4`, which is the same target of `'ch1'`." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.target(\"q4\", \"ch0\")\n", - "seq.add(complex_pulse, \"ch0\")\n", + "Let's now add a pulse to the `Rydberg.Global` channel to modify the state of the atom and make it reach the state $\\left|r\\right>$.\n", "\n", - "print(\"Current Schedule:\")\n", - "print(seq)\n", - "seq.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "scrolled": true - }, - "source": [ - "By looking at the current schedule, we can see that `'ch0'` was delayed from `ti=220` to `tf=1100`, and only then was the `complex_pulse` added. The reason for this is simple: it had to wait for the pulse on `ch1`, also targeted to qubit `4`, to finish before it could apply its own. It behaved this way because, in `Sequence.add` there is a default argument `protocol='min-delay`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another protocol for pulse addition is `wait-for-all`, which makes the new pulse wait even if there is no conflict. Let's remove the conflict and add two `simple_pulse`s to `ch1` with the different protocols to see how the compare." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.target(\"q0\", \"ch1\")\n", - "seq.add(simple_pulse, \"ch1\", protocol=\"min-delay\")\n", - "seq.add(simple_pulse, \"ch1\", protocol=\"wait-for-all\")\n", + "Since $H=H^D$, the final state after a pulse of duration $\\Delta t$, constant amplitude $\\Omega$, detuning $\\delta=0$ and phase $\\phi=0$ is:\n", "\n", - "print(\"Current Schedule:\")\n", - "print(seq)\n", - "seq.draw()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Because we removed the conflict by changing the target of `ch1` to qubit `0`, we see that the first pulse was added without delay from `ti=1100` to `tf=1300` (i.e. while `complex_pulse` is still running in `ch0`). However, once we changed to `protocol='wait-for-all'`, there is now a delay (from `ti=1300` to `tf=2100`) that idles `ch1` until `ch0`is finished with its pulse, even though there was no conflict." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The third protocol is called `'no-delay'` which, as the name implies, never delays the channel where the pulse is being added, even if that means introducing a conflict." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.target(\"q0\", \"ch0\")\n", - "seq.add(complex_pulse, \"ch0\", protocol=\"no-delay\")\n", + "$$\n", + "\\begin{align}\n", + "\\left|\\Psi_f\\right> &= \\exp\\left(-i \\frac{\\Omega}{2} \\Delta t (|g\\rangle\\langle r| + |r\\rangle\\langle g|)\\right) \\left|g\\right> \\\\\n", + "&= \\left(I \\cos\\left(\\frac{\\Omega}{2} \\Delta t\\right) - i \\sin\\left(\\frac{\\Omega}{2} \\Delta t\\right)(|g\\rangle\\langle r| + |r\\rangle\\langle g|)\\right)\\left|g\\right>\n", + "\\end{align}\n", + "$$\n", + "\n", + "From which we get that for $\\frac{\\Omega}{2} \\Delta t = \\frac{\\pi}{2}$, the final state should be equal to $\\left|r\\right>$ (up to a phase, that is irrelevant when measuring with cold atoms since we measure $\\left|\\left<\\Psi_f\\right|\\left|r\\right>\\right|^2$, see below).\n", "\n", - "print(\"Current Schedule:\")\n", - "print(seq)\n", - "seq.draw()" + "We then only have to select $\\Omega$ and $\\Delta t$ to fulfill this condition. We choose $\\Delta t = 1000\\ ns$ and $\\Omega=\\pi\\ rad/\\mu s$:" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 6, "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AQAAAAAAAAAAoN8YOgEAAAAAAAAAAKDfGDoBAAAAAAAAAACg3xg6AQAAAAAAAAAAoN8YOiGkPPHEExo1apTi4uJ0+umn66uvvgr2lgD00+LFi3XaaacpOTlZWVlZuvzyy1VQUNBjTVtbmxYuXKj09HQlJSXpqquuUmVlZY81JSUluvjii5WQkKCsrCzdeeed6uzsDOSXAqCfHnroIRmGodtuu817G49/ILKVlZXpBz/4gdLT0xUfH6/Jkydr48aN3vtN09Q999yjoUOHKj4+XnPnztW+fft6nKOurk7XXXedbDabUlNT9eMf/1hNTU2B/lIA9IHb7dZvfvMbjR49WvHx8TrxxBP1wAMPyDRN7xoe/0DkWLNmjS699FINGzZMhmFo6dKlPe4fqMf7tm3bdPbZZysuLk65ubn67//+b39/aQCOA0MnhIzXX39dd9xxh377299q8+bNmjp1qi688EJVVVUFe2sA+mH16tVauHChvvjiCy1fvlwdHR264IIL1Nzc7F1z++236/3339ebb76p1atXq7y8XFdeeaX3frfbrYsvvljt7e1at26dXnzxRb3wwgu65557gvElATgOGzZs0FNPPaUpU6b0uJ3HPxC56uvrdeaZZyomJkYfffSRdu3apUceeURpaWneNf/93/+tP/7xj3ryySf15ZdfKjExURdeeKHa2tq8a6677jrt3LlTy5cv17Jly7RmzRrdfPPNwfiSAByj3//+91qyZIkef/xx7d69W7///e/13//93/rTn/7kXcPjH4gczc3Nmjp1qp544ole7x+Ix7vT6dQFF1ygvLw8bdq0SQ8//LDuvfdePf30037/+gD0kQmEiJkzZ5oLFy70fu52u81hw4aZixcvDuKuAAy0qqoqU5K5evVq0zRNs6GhwYyJiTHffPNN75rdu3ebksz169ebpmmaH374oWmxWEy73e5ds2TJEtNms5kulyuwXwCAPmtsbDRPOukkc/ny5ebs2bPNW2+91TRNHv9ApPvVr35lnnXWWYe93+PxmDk5OebDDz/sva2hocG0Wq3m3/72N9M0TXPXrl2mJHPDhg3eNR999JFpGIZZVlbmv80D6JeLL77Y/NGPftTjtiuvvNK87rrrTNPk8Q9EMknmu+++6/18oB7vf/7zn820tLQe/w7wq1/9yhw3bpyfvyIAfcUznRAS2tvbtWnT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "With this protocol, it is possible (though not advised), to create an overlap where multiple channels can be acting on the same qubit at the same time. Here, we can see that both act on qubit `0` from `ti=2100` to `tf=2300`." + "pi_pulse = pulser.Pulse.ConstantPulse(1000, np.pi, 0, 0)\n", + "sequence.add(pi_pulse, \"ch_0\")\n", + "sequence.draw()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 5. Measurement" + "### Executing the Pulse Sequence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To finish a sequence, we measure it. A measurement signals the end of a sequence, so after it no more changes are possible. We can measure a sequence by calling:" + "We are now done with our first Pulser program ! We can now submit it to a backend for execution. Pulser provides multiple backends, notably the QPUs, but also a backend to simulate small quantum systems on your laptop based on **Qutip**. Let's use this `QutipBackend` to simulate the final state of the system: " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ - "seq.measure(basis=\"ground-rydberg\")" + "backend = pulser.backends.QutipBackend(sequence)\n", + "result = backend.run()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "When measuring, one has to select the desired measurement basis. The availabe options depend on the device and can be consulted by calling:" + "The result object stores the state of the atom at each nanosecond. Let's measure the probability that the final state is in the excited state:" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Probability to measure the atom in the rydberg state: 0.9999997649778671\n" + ] + } + ], "source": [ - "DigitalAnalogDevice.supported_bases" + "r_state = np.array([1, 0])\n", + "print(\n", + " \"Probability to measure the atom in the rydberg state:\",\n", + " np.abs(np.dot(result.get_final_state().full().T, r_state))[0] ** 2,\n", + ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And so, we've obtained the final sequence!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "seq.draw()" + "The probability to measure the atom in the rydberg state is very close to 1, which means we designed our quantum program correctly !" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "pulserenv", "language": "python", "name": "python3" }, @@ -554,7 +319,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.3" } }, "nbformat": 4,