Programming a neutral-atom QPU
Pulser establishes a framework for programming Quantum Processing Units (QPUs) based on neutral atoms (also named cold-atom Quantum Processing Units). In this page, you will learn:
What mathematical objects are you programming with Pulser? In quantum computing, the evolution of a quantum state is defined by an Hamiltonian. What is a quantum state in Pulser? What are the Hamiltonians that can be defined in Pulser?
How to program these mathematical objects with Pulser? How do you define the quantum state in Pulser? How do you define the Hamiltonian? We give you a step-by-step guide on how to create a quantum program using Pulser.
Introduction
Section titled “Introduction”1. Atoms encode the state
Section titled “1. Atoms encode the state”Neutral atoms store the quantum information in their energy levels (also known as eigenstates). 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\).
Definition of a quantum state with multiple atoms
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
where \(\sum_{i_1, ..., i_N \in [1, ..., d]} |c_{i_1, ..., i_N}|^2 = 1\). If \(d=2\), then this becomes
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
Section titled “2. Hamiltonian evolves the state”In quantum physics, the state of a quantum system evolves along time following the Schrödinger equation:
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:
The Hamiltonian describing the evolution of the system can be written as
where \(H^D_i\) is the driving Hamiltonian for atom \(i\) and \(H^\text{int}_{ij}\) is the interaction Hamiltonian between atoms \(i\) and \(j\).
2.1. Driving Hamiltonian
Section titled “2.1. Driving Hamiltonian”The driving Hamiltonian describes the effect of a pulse on two energy levels of an individual atom, \(|a\rangle\) and \(|b\rangle\). A pulse is determined by its duration \(\Delta t\), its Rabi frequency \(\Omega(t)\), its detuning \(\delta(t)\) and its phase \(\phi\) (constant along the duration of the pulse). Between \(0\) and \(\Delta t\), the driving Hamiltonian is:
Rotations on the Bloch sphere
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)}\).
For a resonant pulse (\(\delta(t)=0\)) of duration \(\Delta t\), we rotate of an angle \(\int_0^{\Delta t} \Omega (t) dt\) around the fixed axis \((\cos(\phi), -\sin(\phi), 0)\) (on the equator of the Bloch sphere).

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\).
2.2. Interaction Hamiltonian
Section titled “2.2. Interaction Hamiltonian”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}\)
The interaction operator \(\hat{U}_{ij}\) is composed of an entangling operator and an interaction strength.
Ising Hamiltonian
Section titled “Ising Hamiltonian”If the Rydberg state \(\left|r\right>\) is involved in the computation, then
Interaction strength and entangling operator
The interaction strength is \(\frac{C_6}{R_{ij}^6}\), with \(C_6\) the Ising interaction 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
Section titled “XY Hamiltonian”If the information is stored in the Rydberg states \(\left|0\right>\) and \(\left|1\right>\) (the so-called XY
basis), then
Interaction strength and entangling operator
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.
Writing a Pulser program
Section titled “Writing a Pulser program”As outlined above, Pulser lets you program an Hamiltonian (the Hamiltonian \(H\)) 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
Section titled “1. Pick a Device”
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 are defined by the device. Notably, the Device
defines the list of Channels
that can be used in the computation, which have a direct impact on the Hamiltonian that can be implemented.
2. Create the Register
Section titled “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.
3. Pick the Channels
Section titled “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:
If the selected Channel is the
Rydberg
or theRaman
channel, the system is initialized in \(\left|gg...g\right>\) and the interaction Hamiltonian is the Ising Hamiltonian
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
A Channel
is also characterized by its addressing, which 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\), all the driving Hamiltonians \(H^D_i\) are expressed as
If the addressing of a Channel
is Local
, then only certain atoms (the “targets”) 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:
4. Add the Pulses
Section titled “4. Add the Pulses”By adding pulses to a channel, we incrementally construct the driving Hamiltonian:
Each
Pulse
defines the Rabi frequency \(\Omega(t)\), the detuning \(\delta(t)\) and the phase \(\phi\) of the driving Hamiltonian over a duration \(\Delta t\). Similarly, a delay sets all these parameters to zero for a given amount of time.The channel dictates the states \(\left|a\right>\) 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
Section titled “Conclusion”We have successfully defined the Hamiltonian \(H\) describing the evolution of the system over time, by:
Picking a
Device
, which defines the value of the \(C_6\) or \(C_3\) coefficients.Creating a
Register
of atoms, which defines the number of atoms used and the distance between them, \(R_{ij}\).Selecting the
Channels
of theDevice
to use, which define the energy levels of the atoms to use - this step completely defines the interaction Hamiltonian. The addressing property of eachChannel
also dictates the atoms that will be targeted by thePulse
.Adding
Pulse
and delays to theChannel
s defines the driving Hamiltonian of each atom along time.
You can now simulate your first Hamiltonian by programming your first Sequence
! In this tutorial, 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 details these and provides examples ofDevices
. TheVirtualDevices
were also mentioned in this document (here), which is a more advanced feature described here.There are multiple ways of defining a
Register
, as is further detailed in this section.The energy levels associated with each
Channel
and the interaction Hamiltonian they implement are summed up in the conventions page. The channels contain lots of constraints and physical informations, they are detailed in the same section as theDevice
.The quantities in a
Pulse
are defined usingWaveform
s, you can read more about these on this page.