pulser: an open-source package for the design of pulse

20
Pulser: An open-source package for the design of pulse sequences in programmable neutral-atom arrays Henrique Silvério 1,* , Sebastián Grijalva 1,* , Constantin Dalyac 1 , Lucas Leclerc 1 , Peter J. Karalekas 2 , Nathan Shammah 2 , Mourad Beji 1 , Louis-Paul Henry 1 , and Loïc Henriet 1 1 Pasqal, 2 avenue Augustin Fresnel, 91120 Palaiseau, France 2 Unitary Fund, Walnut, CA 91789, USA Programmable arrays of hundreds of Ry- dberg atoms have recently enabled the exploration of remarkable phenomena in many-body quantum physics. In addition, the development of high-fidelity quantum gates are making them promising architec- tures for the implementation of quantum circuits. We present here Pulser, an open-source Python library for programming neutral- atom devices at the pulse level. The low- level nature of Pulser makes it a versatile framework for quantum control both in the digital and analog settings. The library also contains simulation routines for study- ing and exploring the outcome of pulse se- quences for small systems. 1 Introduction Individual neutral atoms trapped in optical tweezers [110] have emerged as a powerful plat- form for quantum information processing. In those systems, one uses the strong interaction be- tween atoms excited to a Rydberg state to gen- erate entanglement. This interaction can be ex- ploited for various tasks, including the creation of fast and robust quantum gates [1114] for digital quantum information processing, the generation of tunable spin models for the study of many- body quantum physics [1519], or the determinis- tic creation of large highly entangled GHZ states with up to 20 atoms [19]. Quantum computing and quantum simulation Peter J. Karalekas: (current address) AWS Center for Quan- tum Computing, Pasadena, CA 91125, USA Loïc Henriet: (corresponding author) [email protected] * These authors contributed equally. schemes for neutral-atom Quantum Processing Units (QPUs) are extremely flexible, in part due to the fact that, unlike for most other platforms, the QPU (and therefore its qubit connectivity) is not hard-wired during the manufacturing pro- cess. In fact, in neutral-atom optical traps, the connectivity of the QPU can be reprogrammed at every single run. This opportunity opens up new avenues for exploration on these devices but also requires providing the user with a lower-level description of the physical setup. We here introduce Pulser [20], an open-source software library for designing pulse sequences for neutral-atom QPUs. The main goal of this li- brary is to serve as an interface between expe- rienced users and neutral-atom quantum hard- ware. Providing users with a pulse-level access to QPUs will allow them to explore advanced pulse- shaping techniques facilitating the design of new quantum gate protocols, the implementation of optimal control and error mitigation techniques, or the exploration of mixed digital-analog algo- rithms [21]. Exposing the low-level details of the hardware will also enable algorithm developers to design software procedures while keeping the par- ticularities of the hardware in mind. Besides pro- viding an interface to a QPU, Pulser includes a built-in emulator that faithfully reproduces the hardware behavior. This is intended to make the design of experiments easier for both the theo- retician and the experimentalist. Pulser is an open-source Python library in- tended for the community of quantum scientists and engineers working on neutral-atom devices. The development and use of open-source software has enabled the flexible and efficient simulation of quantum systems [22, 23], the connection of quan- tum processors to the cloud [24, 25] and their use to launch jobs running quantum hardware. 1 arXiv:2104.15044v1 [quant-ph] 30 Apr 2021

Upload: others

Post on 14-Jan-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pulser: An open-source package for the design of pulse

Pulser: An open-source package for the design of pulsesequences in programmable neutral-atom arraysHenrique Silvério1,*, Sebastián Grijalva1,*, Constantin Dalyac1, Lucas Leclerc1, Peter J. Karalekas2,Nathan Shammah2, Mourad Beji1, Louis-Paul Henry1, and Loïc Henriet1

1Pasqal, 2 avenue Augustin Fresnel, 91120 Palaiseau, France2Unitary Fund, Walnut, CA 91789, USA

Programmable arrays of hundreds of Ry-dberg atoms have recently enabled theexploration of remarkable phenomena inmany-body quantum physics. In addition,the development of high-fidelity quantumgates are making them promising architec-tures for the implementation of quantumcircuits.We present here Pulser, an open-source

Python library for programming neutral-atom devices at the pulse level. The low-level nature of Pulser makes it a versatileframework for quantum control both in thedigital and analog settings. The libraryalso contains simulation routines for study-ing and exploring the outcome of pulse se-quences for small systems.

1 Introduction

Individual neutral atoms trapped in opticaltweezers [1–10] have emerged as a powerful plat-form for quantum information processing. Inthose systems, one uses the strong interaction be-tween atoms excited to a Rydberg state to gen-erate entanglement. This interaction can be ex-ploited for various tasks, including the creation offast and robust quantum gates [11–14] for digitalquantum information processing, the generationof tunable spin models for the study of many-body quantum physics [15–19], or the determinis-tic creation of large highly entangled GHZ stateswith up to 20 atoms [19].

Quantum computing and quantum simulation

Peter J. Karalekas: (current address) AWS Center for Quan-tum Computing, Pasadena, CA 91125, USALoïc Henriet: (corresponding author) [email protected]

*These authors contributed equally.

schemes for neutral-atom Quantum ProcessingUnits (QPUs) are extremely flexible, in part dueto the fact that, unlike for most other platforms,the QPU (and therefore its qubit connectivity)is not hard-wired during the manufacturing pro-cess. In fact, in neutral-atom optical traps, theconnectivity of the QPU can be reprogrammedat every single run. This opportunity opens upnew avenues for exploration on these devices butalso requires providing the user with a lower-leveldescription of the physical setup.

We here introduce Pulser [20], an open-sourcesoftware library for designing pulse sequences forneutral-atom QPUs. The main goal of this li-brary is to serve as an interface between expe-rienced users and neutral-atom quantum hard-ware. Providing users with a pulse-level access toQPUs will allow them to explore advanced pulse-shaping techniques facilitating the design of newquantum gate protocols, the implementation ofoptimal control and error mitigation techniques,or the exploration of mixed digital-analog algo-rithms [21]. Exposing the low-level details of thehardware will also enable algorithm developers todesign software procedures while keeping the par-ticularities of the hardware in mind. Besides pro-viding an interface to a QPU, Pulser includes abuilt-in emulator that faithfully reproduces thehardware behavior. This is intended to make thedesign of experiments easier for both the theo-retician and the experimentalist.

Pulser is an open-source Python library in-tended for the community of quantum scientistsand engineers working on neutral-atom devices.The development and use of open-source softwarehas enabled the flexible and efficient simulation ofquantum systems [22, 23], the connection of quan-tum processors to the cloud [24, 25] and theiruse to launch jobs running quantum hardware.

1

arX

iv:2

104.

1504

4v1

[qu

ant-

ph]

30

Apr

202

1

Page 2: Pulser: An open-source package for the design of pulse

These tasks appear as quantum circuits expressedin intermediate representation, or in the more re-cent framework of hybrid classical-quantum algo-rithms, which require a fast and tailored inter-operability between quantum and classical com-puting units with classical optimization routines[26–28]. More recently, specific tools and frame-works have also put more focus on the pulse-leveldescription of quantum controls [29–31], and theiroptimization to mitigate the impact of noise onthe coherence of the intended protocols [32] in theso-called era of noisy-intermediate scale quantumcomputing (NISQ) [33]. However, no existingopen-source tool has yet specialized its features tothe physics of neutral-atom quantum processors,which, due to the peculiarities of their physicalproperties, provide largely untapped opportuni-ties both for quantum simulation and quantumcomputing tasks.

In this paper, we start by briefly reviewingin Section 2 the main physical ingredients thatdetermine the dynamics of Rydberg atom ar-rays. We then present in Section 3 a guidedwalk-through for designing pulse sequences withPulser, followed by examples on how Pulser canbe leveraged for some notable use-cases in Sec-tion 4. Finally, we conclude and comment on thefuture directions and extensions for this tool.

2 Description of the physical system

In neutral-atom devices, atoms are trapped byarrays of optical tweezers [34] in arbitrary, cus-tomizable patterns. In Pulser, we call this en-semble of atoms and their specific positions theRegister. For each atom in a Register, thequantum information is encoded in specific elec-tronic energy levels, which are reached throughoptical addressing techniques. In Pulser, thecomponents responsible for driving these transi-tions are called Channels and they do so throughthe emission of Pulses.

2.1 Driving two-level transitions

We define a pulse as the modulation of a chan-nel’s output amplitude, detuning, and phase overa finite duration τ . For a channel targeting thetransition between energy levels a and b, with res-onance frequency ωab = |Ea − Eb|/~, the output

amplitude determines the Rabi frequency2 Ω(t),and the detuning δ(t) is defined relatively to ωaband the frequency of the channel’s output signalω(t), as δ(t) = ω(t)−ωab. Additionally, the phaseϕ of a pulse can be set to an arbitrary, constantvalue.

A pulse-driven transition between two energylevels can be mapped to a spin-1/2 systemthrough the drive Hamiltonian:

HD(t) = ~2Ω(t) · σ, (1)

where σ = (σx, σy, σz)T is the Pauli vector andΩ(t) = (Ω(t) cos(ϕ),−Ω(t) sin(ϕ),−δ(t))T therotation vector. Since there can be multiple tran-sitions being addressed overall, we explicitly de-fine the Pauli matrices for a transition betweenstates |a〉 and |b〉 (where Eb > Ea) to be:

σx = |a〉〈b|+ |b〉〈a| (2)σy = i |a〉〈b| − i |b〉〈a| (3)σz = |b〉〈b| − |a〉〈a| (4)

In the Bloch sphere representation, for each in-stant t, this Hamiltonian describes a rotationaround the axis Ω with angular velocity Ωeff =|Ω| =

√Ω2 + δ2, as illustrated in Figure 1.

Figure 1: Representation of the drive Hamiltonian’s dy-namics as a rotation in the Bloch sphere.

2The Rabi frequency determines the amplitude of asignal (in frequency units), not the frequency itself.

2

Page 3: Pulser: An open-source package for the design of pulse

2.2 Rydberg states

In neutral-atom devices, atoms are driven toRydberg states as a way to make them interactover large distances. Depending on the electroniclevels that are involved in the process, theatoms experience different types of interactions,translating into different Hamiltonians [6].

In the so-called “Ising” configuration, which isobtained when the spin states are one of theground states |g〉 and a Rydberg state [15, 16,35, 36] |r〉 (the ground-rydberg basis in Pulser,see Fig. 2.), the interaction adds a term to thedrive Hamiltonian describing the transition be-tween those states:

Hgr(t) =∑i

HDi (t) +

∑j<i

C6(Rij)6 ninj

, (5)

where ni denotes the projector |r〉〈r|i on the i-thatom, Rij is the distance between atoms i and j,and C6 is a constant depending on the specificRydberg level |r〉.

Figure 2: The excitation between a ground and Ryd-berg state is taken as two-level transition with Rabi fre-quency Ω and detuning δ. In Pulser, it is called theground-rydberg basis and is addressed by Rydbergchannels.

The effect of this interaction is expressed in theso-called Rydberg blockade, illustrated in Figure3. When driving two atoms from |g〉 to |r〉 witha resonant pulse (δ = 0) of Rabi frequency Ω, theinteraction prevents the simultaneous excitationof the two atoms in the state |r〉 if ~Ω C6/R

6.Instead, the system evolves between the |gg〉 andthe entangled state |ψ+〉 = (|gr〉 + |rg〉)/

√23,

with an effective Rabi frequency of√

2Ω. Sim-ilarly, an atom’s excitation from |g〉 to |r〉 is sup-pressed if there is another atom in the Rydberg

3Note that the state |ψ−〉 = (|gr〉 − |rg〉)/√

2 is notcoupled to |gg〉 by the laser

state at a distance R Rb, where

Rb =(C6~Ω

)1/6(6)

is the Rydberg blockade radius.

<latexit sha1_base64="1yIU++CaeN9suIo1aZULEpvbfws=">AAAB8XicdZDLSgMxFIYz9VbrrerSTWgRBKFkxtrWXdGNywr2gp1SMmnahmYyQ5IRhrFv0Y0LRdz6Nu76NmZaBRX9IfDz/eeQc44XcqY0QnMrs7K6tr6R3cxtbe/s7uX3D1oqiCShTRLwQHY8rChngjY105x2Qkmx73Ha9iZXad6+p1KxQNzqOKQ9H48EGzKCtUF3D1K6EosRp/18EZUuahWnXIGohFDVduzUONXyWRnahqQq1gvu6Wxejxv9/Ls7CEjkU6EJx0p1bRTqXoKlZoTTac6NFA0xmeAR7RorsE9VL1lMPIXHhgzgMJDmCQ0X9HtHgn2lYt8zlT7WY/U7S+FfWTfSw1ovYSKMNBVk+dEw4lAHMF0fDpikRPPYGEwkM7NCMsYSE22OlDNH+NoU/m9aTsk+L6Ebu1i/BEtlwREogBNggyqog2vQAE1AgAAz8ASeLWU9Wi/W67I0Y332HIIfst4+AG0/lGU=</latexit>|rri

<latexit sha1_base64="g5SBX+3Xl/CKN3YpLFN1/7XRXoM=">AAAB8XicbZDLSsNAFIYnXmu9VV26GVoEQSiJILoMunFZwV6wCWUyPUmHTiZhZiKE2LfoxoUibn0bd30bp5eFtv4w8PH/5zDnnCDlTGnbnlhr6xubW9ulnfLu3v7BYeXouKWSTFJo0oQnshMQBZwJaGqmOXRSCSQOOLSD4d00bz+DVCwRjzpPwY9JJFjIKNHGenqJIk8SEXHoVWp23Z4Jr4KzgJpb9S7GEzdv9CrfXj+hWQxCU06U6jp2qv2CSM0oh1HZyxSkhA5JBF2DgsSg/GI28QifGaePw0SaJzSeub87ChIrlceBqYyJHqjlbGr+l3UzHd74BRNppkHQ+UdhxrFO8HR93GcSqOa5AUIlM7NiOiCSUG2OVDZHcJZXXoXWZd25qtsPTs29RXOV0CmqonPkoGvkonvUQE1EkUBj9IbeLWW9Wh/W57x0zVr0nKA/sr5+AOsklA0=</latexit>|ggi

<latexit sha1_base64="ZcyRVytKaw27+tYeG5j9VjCwFEU=">AAAB/HicbVDJSgNBEO1xjXEbDXjxMhgET2FGED2GePGYiFkgGYaeTiVp0rPQXSMOQ/wVLx4UydUv8Au8efFb7CwHTXxQ8Hivqrvq+bHgCm37y1hZXVvf2Mxt5bd3dvf2zYPDhooSyaDOIhHJlk8VCB5CHTkKaMUSaOALaPrD64nfvAepeBTeYRqDG9B+yHucUdSSZxZuvayD8IBZRURsSLswGnlm0S7ZU1jLxJmTYvmo9s3HlY+qZ352uhFLAgiRCapU27FjdDMqkTMBo3wnURBT/Xof2pqGNADlZtPlR9apVrpWL5K6QrSm6u+JjAZKpYGvOwOKA7XoTcT/vHaCvSs342GcIIRs9lEvERZG1iQJq8slMBSpJpRJrne12IBKylDnldchOIsnL5PGecm5KNk1p1iukBly5JickDPikEtSJjekSuqEkZQ8kRfyajwaz8abMZ61rhjzmQL5A+P9B0nwmOI=</latexit>

RBlockade

<latexit sha1_base64="oI9JFH+qQ+STAR5bKoYCuxZxO/8=">AAACHHicbVDLSgMxFM3UV62vat25CRahIpSZitRlqRuXFewDOqVk0sw0NJMZk4xQpv0JcePGX3HjQhE3LgT/wM8w03ahrQcunJxzL7n3OCGjUpnml5FaWl5ZXUuvZzY2t7Z3srt7DRlEApM6DlggWg6ShFFO6ooqRlqhIMh3GGk6g4vEb94SIWnAr9UwJB0feZy6FCOlpW721HYFwrE1jm15IxQsjaFdpV5h5AlbIO4xAk/gSHizR+Idd7N5s2hOABeJNSP5Svn+bpj73q91sx92L8CRT7jCDEnZtsxQdWIkFMWMjDN2JEmI8AB5pK0pRz6RnXhy3BgeaaUH3UDo4gpO1N8TMfKlHPqO7vSR6st5LxH/89qRcs87MeVhpAjH04/ciEEVwCQp2KOCYMWGmiAsqN4V4j7SaSmdZ0aHYM2fvEgapaJ1VjSvrHylCqZIgwNwCArAAmVQAZegBuoAgwfwBF7Aq/FoPBtvxvu0NWXMZnLgD4zPHzehpGw=</latexit>

1p2

|gri + |rgi

Energy

<latexit sha1_base64="p1F4jxnaX40MQ98AXJWemT97Sis=">AAAB7XicbVDLSgNBEOz1GeMr6tHLYBA8hV1R9Bj04jGKeUCyhNnJbDLJPJaZWSEs+QcvHhTx6v9482+cJHvQxIKGoqqb7q4o4cxY3//2VlbX1jc2C1vF7Z3dvf3SwWHDqFQTWieKK92KsKGcSVq3zHLaSjTFIuK0GY1up37ziWrDlHy044SGAvclixnB1kmNh27GhpNuqexX/BnQMglyUoYctW7pq9NTJBVUWsKxMe3AT2yYYW0Z4XRS7KSGJpiMcJ+2HZVYUBNms2sn6NQpPRQr7UpaNFN/T2RYGDMWkesU2A7MojcV//PaqY2vw4zJJLVUkvmiOOXIKjR9HfWYpsTysSOYaOZuRWSANSbWBVR0IQSLLy+TxnkluKz49xfl6k0eRwGO4QTOIIArqMId1KAOBIbwDK/w5invxXv3PuatK14+cwR/4H3+ALQijzY=</latexit>

Rij

Rij

<latexit sha1_base64="1yIU++CaeN9suIo1aZULEpvbfws=">AAAB8XicdZDLSgMxFIYz9VbrrerSTWgRBKFkxtrWXdGNywr2gp1SMmnahmYyQ5IRhrFv0Y0LRdz6Nu76NmZaBRX9IfDz/eeQc44XcqY0QnMrs7K6tr6R3cxtbe/s7uX3D1oqiCShTRLwQHY8rChngjY105x2Qkmx73Ha9iZXad6+p1KxQNzqOKQ9H48EGzKCtUF3D1K6EosRp/18EZUuahWnXIGohFDVduzUONXyWRnahqQq1gvu6Wxejxv9/Ls7CEjkU6EJx0p1bRTqXoKlZoTTac6NFA0xmeAR7RorsE9VL1lMPIXHhgzgMJDmCQ0X9HtHgn2lYt8zlT7WY/U7S+FfWTfSw1ovYSKMNBVk+dEw4lAHMF0fDpikRPPYGEwkM7NCMsYSE22OlDNH+NoU/m9aTsk+L6Ebu1i/BEtlwREogBNggyqog2vQAE1AgAAz8ASeLWU9Wi/W67I0Y332HIIfst4+AG0/lGU=</latexit>|rri

<latexit sha1_base64="g5SBX+3Xl/CKN3YpLFN1/7XRXoM=">AAAB8XicbZDLSsNAFIYnXmu9VV26GVoEQSiJILoMunFZwV6wCWUyPUmHTiZhZiKE2LfoxoUibn0bd30bp5eFtv4w8PH/5zDnnCDlTGnbnlhr6xubW9ulnfLu3v7BYeXouKWSTFJo0oQnshMQBZwJaGqmOXRSCSQOOLSD4d00bz+DVCwRjzpPwY9JJFjIKNHGenqJIk8SEXHoVWp23Z4Jr4KzgJpb9S7GEzdv9CrfXj+hWQxCU06U6jp2qv2CSM0oh1HZyxSkhA5JBF2DgsSg/GI28QifGaePw0SaJzSeub87ChIrlceBqYyJHqjlbGr+l3UzHd74BRNppkHQ+UdhxrFO8HR93GcSqOa5AUIlM7NiOiCSUG2OVDZHcJZXXoXWZd25qtsPTs29RXOV0CmqonPkoGvkonvUQE1EkUBj9IbeLWW9Wh/W57x0zVr0nKA/sr5+AOsklA0=</latexit>|ggi<latexit sha1_base64="ZcyRVytKaw27+tYeG5j9VjCwFEU=">AAAB/HicbVDJSgNBEO1xjXEbDXjxMhgET2FGED2GePGYiFkgGYaeTiVp0rPQXSMOQ/wVLx4UydUv8Au8efFb7CwHTXxQ8Hivqrvq+bHgCm37y1hZXVvf2Mxt5bd3dvf2zYPDhooSyaDOIhHJlk8VCB5CHTkKaMUSaOALaPrD64nfvAepeBTeYRqDG9B+yHucUdSSZxZuvayD8IBZRURsSLswGnlm0S7ZU1jLxJmTYvmo9s3HlY+qZ352uhFLAgiRCapU27FjdDMqkTMBo3wnURBT/Xof2pqGNADlZtPlR9apVrpWL5K6QrSm6u+JjAZKpYGvOwOKA7XoTcT/vHaCvSs342GcIIRs9lEvERZG1iQJq8slMBSpJpRJrne12IBKylDnldchOIsnL5PGecm5KNk1p1iukBly5JickDPikEtSJjekSuqEkZQ8kRfyajwaz8abMZ61rhjzmQL5A+P9B0nwmOI=</latexit>

RBlockade

<latexit sha1_base64="oI9JFH+qQ+STAR5bKoYCuxZxO/8=">AAACHHicbVDLSgMxFM3UV62vat25CRahIpSZitRlqRuXFewDOqVk0sw0NJMZk4xQpv0JcePGX3HjQhE3LgT/wM8w03ahrQcunJxzL7n3OCGjUpnml5FaWl5ZXUuvZzY2t7Z3srt7DRlEApM6DlggWg6ShFFO6ooqRlqhIMh3GGk6g4vEb94SIWnAr9UwJB0feZy6FCOlpW721HYFwrE1jm15IxQsjaFdpV5h5AlbIO4xAk/gSHizR+Idd7N5s2hOABeJNSP5Svn+bpj73q91sx92L8CRT7jCDEnZtsxQdWIkFMWMjDN2JEmI8AB5pK0pRz6RnXhy3BgeaaUH3UDo4gpO1N8TMfKlHPqO7vSR6st5LxH/89qRcs87MeVhpAjH04/ciEEVwCQp2KOCYMWGmiAsqN4V4j7SaSmdZ0aHYM2fvEgapaJ1VjSvrHylCqZIgwNwCArAAmVQAZegBuoAgwfwBF7Aq/FoPBtvxvu0NWXMZnLgD4zPHzehpGw=</latexit>

1p2

|gri + |rgi

Figure 3: Two nearby atoms interact via a van der Waalspotential which shifts the energy level for the doublyexcited state |rr〉. If the laser excites simultaneouslyboth atoms, the lower-energy entangled state (|gr〉 +|rg〉)/

√2 is produced instead.

By acting on all atoms with the same globalpulse, addressing the |g〉 ↔ |r〉 transition withϕ = 0, one obtains the Hamiltonian:

H(t) =∑i

~Ω(t)2 σxi − ~δ(t)ni +

∑j<i

C6(Rij)6 ninj

(7)

Since ni = (1 + σzi )/2, Eq. (7) represents aquantum Ising Hamiltonian with transverse fieldΩ(t) and Ising couplings Jij ∝ 1/R6

ij .

Other configurations exist, but the correspond-ing channels are currently not implemented inPulser. In the so-called “XY” configuration,which is obtained when the spin states |↓〉 and |↑〉are two Rydberg states that are dipole-coupled,such as |nS〉 and |nP 〉 [18, 37, 38], the dipolar in-teraction generates an exchange-like term of theform

Hint = 2∑i 6=j

C3R3ij

(σxi σ

xj + σyi σ

yj

), (8)

where C3 is a coefficient which depends on theselected Rydberg states. In this configuration,the driving is induced by a microwave fieldinstead of an optical laser field.

3

Page 4: Pulser: An open-source package for the design of pulse

The continuous manipulation of a system’sHamiltonian is referred to as the analog approachto quantum computing. The very high levelof control in this analog mode has severalapplications, the most direct one being thequantum simulation of interacting many-bodysystems. This includes observing the out-of-equilibrium dynamics of the system after aquench or a drive [16, 39], or determining theground-state of a specific Hamiltonian throughadiabatic variation of its parameters [17, 40, 41].Additionally, one can use the blockade effectto reproduce a connectivity structure amongthe atoms, which can be exploited to solvecombinatorial problems that can be mappedonto the Ising Hamiltonian [42–44]. Those appli-cations will be studied in more detail in Section 4.

2.3 Digital addressing and quantum gatesIn opposition to the analog approach stands thedigital approach, in which a system’s state evolvesthrough a series of discrete manipulations of itsqubits’ states, known as quantum gates. Thisis the underlying approach in quantum circuitsand can be replicated on neutral-atom devices atthe pulse-level. To achieve this, the qubit statesare encoded in two hyperfine ground states ofthe system, named ground, |g〉 ≡ |0〉, and hy-perfine, |h〉 ≡ |1〉. In Pulser, these states formthe digital basis, which is addressed by Ramanchannels.

For these energy levels, the Rydberg blockadeeffect is not present, so the resulting dynamicsfrom a pulse addressing the |h〉 ↔ |g〉 transitionof an atom will be dictated by the driving Hamil-tonian of eq. (1). For a pulse of duration τ , thetime evolution of this system is dictated by theoperator

U(Ω, τ) = exp[− i2

∫ τ

0Ω(t) · σdt

], (9)

which describes a rotation around the time-dependent axis Ω(t). For a resonant pulse (i.e.one with δ = 0) of phase ϕ, we get a rotationangle of

θ =∫ τ

0Ω(t)dt (10)

around the fixed axis

e(ϕ) = (cosϕ,− sinϕ, 0), (11)

control target

p p

2p

control target

p p 2p

DE

2 21 3

1 3

|1i<latexit sha1_base64="1A1xSnNHv4JcoCj30QeatqCdjZI=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVRIVdFl040oq2FZpRZLptIbmxWQilNqtP+BWv0v8A/0L74xTUIvohCRnzr3nzNx7/TQMMuk4rwVrZnZufqG4WFpaXlldK69vNLMkF4w3WBIm4tL3Mh4GMW/IQIb8MhXci/yQt/zBiYq37rjIgiS+kMOUX0dePw56AfMkUVf3bkd4cT/kN+WKU3X0sqeBa0AFZtWT8gs66CIBQ44IHDEk4RAeMnracOEgJe4aI+IEoUDHOcYokTanLE4ZHrED+vZp1zZsTHvlmWk1o1NCegUpbeyQJqE8QVidZut4rp0V+5v3SHuquw3p7xuviFiJW2L/0k0y/6tTtUj0cKRrCKimVDOqOmZcct0VdXP7S1WSHFLiFO5SXBBmWjnps601ma5d9dbT8TedqVi1ZyY3x7u6JQ3Y/TnOadDcq7r71b3zg0rt2Iy6iC1sY5fmeYgaTlFHg7wjPOIJz9aZJa2RNf5MtQpGs4lvy3r4AOB7kts=</latexit>

|0i<latexit sha1_base64="t2dx1MmpHWODVBIWmd+Ry0XCRdY=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVVIVdFl040oq2Ie0RZJ0WodOHkwmQqnd+gNu9bvEP9C/8M6YglpEJyQ5c+49Z+be68WCJ8pxXnPW3PzC4lJ+ubCyura+UdzcaiRRKn1W9yMRyZbnJkzwkNUVV4K1YsncwBOs6Q3PdLx5x2TCo/BKjWLWDdxByPvcdxVR1/dOR7rhQLCbYskpO2bZs6CSgRKyVYuKL+ighwg+UgRgCKEIC7hI6GmjAgcxcV2MiZOEuIkzTFAgbUpZjDJcYof0HdCunbEh7bVnYtQ+nSLolaS0sUeaiPIkYX2abeKpcdbsb95j46nvNqK/l3kFxCrcEvuXbpr5X52uRaGPE1MDp5piw+jq/MwlNV3RN7e/VKXIISZO4x7FJWHfKKd9to0mMbXr3rom/mYyNav3fpab4l3fkgZc+TnOWdA4KFcOyweXR6XqaTbqPHawi32a5zGqOEcNdfIO8IgnPFsXlrLG1uQz1cplmm18W9bDB94Ukto=</latexit>

|ri<latexit sha1_base64="lo9qmNeQSfHYOQaNqpSycoVJ0Gk=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVVIVdFl040oq2Ie0RZJ0WodOHkwmQqnd+gNu9bvEP9C/8M6YglpEJyQ5c+49Z+be68WCJ8pxXnPW3PzC4lJ+ubCyura+UdzcaiRRKn1W9yMRyZbnJkzwkNUVV4K1YsncwBOs6Q3PdLx5x2TCo/BKjWLWDdxByPvcdxVR1/eyI91wINhNseSUHbPsWVDJQAnZqkXFF3TQQwQfKQIwhFCEBVwk9LRRgYOYuC7GxElC3MQZJiiQNqUsRhkusUP6DmjXztiQ9tozMWqfThH0SlLa2CNNRHmSsD7NNvHUOGv2N++x8dR3G9Hfy7wCYhVuif1LN838r07XotDHiamBU02xYXR1fuaSmq7om9tfqlLkEBOncY/ikrBvlNM+20aTmNp1b10TfzOZmtV7P8tN8a5vSQOu/BznLGgclCuH5YPLo1L1NBt1HjvYxT7N8xhVnKOGOnkHeMQTnq0LS1lja/KZauUyzTa+LevhA3yxkxw=</latexit>

control target

p p 2p

control target

p p

2p

𝜓!"!#!$% = |1&1'⟩

DE

2 2

1 3

1 3

|1i<latexit sha1_base64="1A1xSnNHv4JcoCj30QeatqCdjZI=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVRIVdFl040oq2FZpRZLptIbmxWQilNqtP+BWv0v8A/0L74xTUIvohCRnzr3nzNx7/TQMMuk4rwVrZnZufqG4WFpaXlldK69vNLMkF4w3WBIm4tL3Mh4GMW/IQIb8MhXci/yQt/zBiYq37rjIgiS+kMOUX0dePw56AfMkUVf3bkd4cT/kN+WKU3X0sqeBa0AFZtWT8gs66CIBQ44IHDEk4RAeMnracOEgJe4aI+IEoUDHOcYokTanLE4ZHrED+vZp1zZsTHvlmWk1o1NCegUpbeyQJqE8QVidZut4rp0V+5v3SHuquw3p7xuviFiJW2L/0k0y/6tTtUj0cKRrCKimVDOqOmZcct0VdXP7S1WSHFLiFO5SXBBmWjnps601ma5d9dbT8TedqVi1ZyY3x7u6JQ3Y/TnOadDcq7r71b3zg0rt2Iy6iC1sY5fmeYgaTlFHg7wjPOIJz9aZJa2RNf5MtQpGs4lvy3r4AOB7kts=</latexit>

|0i<latexit sha1_base64="t2dx1MmpHWODVBIWmd+Ry0XCRdY=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVVIVdFl040oq2Ie0RZJ0WodOHkwmQqnd+gNu9bvEP9C/8M6YglpEJyQ5c+49Z+be68WCJ8pxXnPW3PzC4lJ+ubCyura+UdzcaiRRKn1W9yMRyZbnJkzwkNUVV4K1YsncwBOs6Q3PdLx5x2TCo/BKjWLWDdxByPvcdxVR1/dOR7rhQLCbYskpO2bZs6CSgRKyVYuKL+ighwg+UgRgCKEIC7hI6GmjAgcxcV2MiZOEuIkzTFAgbUpZjDJcYof0HdCunbEh7bVnYtQ+nSLolaS0sUeaiPIkYX2abeKpcdbsb95j46nvNqK/l3kFxCrcEvuXbpr5X52uRaGPE1MDp5piw+jq/MwlNV3RN7e/VKXIISZO4x7FJWHfKKd9to0mMbXr3rom/mYyNav3fpab4l3fkgZc+TnOWdA4KFcOyweXR6XqaTbqPHawi32a5zGqOEcNdfIO8IgnPFsXlrLG1uQz1cplmm18W9bDB94Ukto=</latexit>

|ri<latexit sha1_base64="lo9qmNeQSfHYOQaNqpSycoVJ0Gk=">AAACzHicjVHLSsNAFD2Nr1pfVZdugkVwVVIVdFl040oq2Ie0RZJ0WodOHkwmQqnd+gNu9bvEP9C/8M6YglpEJyQ5c+49Z+be68WCJ8pxXnPW3PzC4lJ+ubCyura+UdzcaiRRKn1W9yMRyZbnJkzwkNUVV4K1YsncwBOs6Q3PdLx5x2TCo/BKjWLWDdxByPvcdxVR1/eyI91wINhNseSUHbPsWVDJQAnZqkXFF3TQQwQfKQIwhFCEBVwk9LRRgYOYuC7GxElC3MQZJiiQNqUsRhkusUP6DmjXztiQ9tozMWqfThH0SlLa2CNNRHmSsD7NNvHUOGv2N++x8dR3G9Hfy7wCYhVuif1LN838r07XotDHiamBU02xYXR1fuaSmq7om9tfqlLkEBOncY/ikrBvlNM+20aTmNp1b10TfzOZmtV7P8tN8a5vSQOu/BznLGgclCuH5YPLo1L1NBt1HjvYxT7N8xhVnKOGOnkHeMQTnq0LS1lja/KZauUyzTa+LevhA3yxkxw=</latexit>

𝜓!"!#!$% = |1&0'⟩ 𝜓!"!#!$% = |0&0'⟩

𝜓!"!#!$% = |0&1'⟩

Figure 4: CZ implementation protocol, where three con-secutive pulses address the |g〉 ↔ |r〉 transition. Full(dashed) red lines illustrate if a given pulse is effective(not effective).

situated on the equator of the Bloch sphere. Thecorresponding unitary operator is

Re(ϕ)(θ) = e−iθ2 (cos(ϕ)σx−sin(ϕ)σy)

= eiϕ2 σze−i

θ2σxe−i

ϕ2 σz

= Rz(−ϕ)Rx(θ)Rz(ϕ)

(12)

which, as its decomposition shows, can bethought of as a rotation around the Bloch sphere’sx-axis, conjugated by z-rotations (i.e. phasegates). By following this gate with another z-rotation (which can be achieved virtually througha shift in the phase reference frame [45]), we canthen construct any arbitrary single-qubit gate,

U(γ, θ, ϕ) = Rz(γ + ϕ)Re(ϕ)(θ)= Rz(γ)Rx(θ)Rz(ϕ),

(13)

which relies solely on resonant pulses and phasereference frame changes.

With the ability to perform arbitrary single-qubit gates, all that is missing in order to havea universal quantum gate set is an appropriatetwo-qubit gate. In neutral-atom devices, the na-tive gate is the controlled-Z (CZ); its implementa-tion leverages the Rydberg blockade effect to flipthe phase of a two-qubit subsystem, conditionallyon its initial state. To achieve this, the atoms,

4

Page 5: Pulser: An open-source package for the design of pulse

depending on their initial state, are sequentiallybrought to the Rydberg state and back by a se-quence of three consecutive laser pulses. The ef-fect of this pulse sequence on the four computa-tional states |00〉, |01〉, |10〉 and |11〉 is shown inFigure 4. The first π-pulse attempts to bring thecontrol atom into the Rydberg state, which willcondition whether the target will be able to go to|r〉 and back with the second 2π-pulse, due to theRydberg blockade. In particular, the |00〉 statedoes not experience two consecutive phase flipsas it would if the atoms did not interact (see topright panel of Fig. 4, where the Rydberg energylevel of the target atom experiences a shift in en-ergy ∆E due to the control atom being in |r〉).Finally, the third pulse brings the control back toits original state, in case it was excited. In theend, all states but |11〉 experience a phase flip(see bottom left panel of Fig. 4), and the processcorresponds to an application of a CZ within aglobal phase of π (see table 1).

Initial state |00〉 |01〉 |10〉 |11〉Final state − |00〉 − |01〉 − |10〉 |11〉

Table 1: Effect of the CZ pulse sequence in the compu-tational basis.

Altogether, the space in which the atom arrayscan evolve is here composed of three states: twonon-interacting hyperfine states, |g〉, |h〉 and anauxiliary Rydberg state |r〉. The Rydberg statethus plays both the role of an excited state in theground-rydberg basis in the analog approach,and of an auxiliary state for realizing multi-qubitgates in the digital basis.

Since the most general sequence, with channelsaddressing both transitions, involves three energylevels, the size of the Hilbert space is 3N , whereN is the number of atoms in the array. Typically,a personal computer can efficiently simulate theevolution of systems of size below N ∼ 20.

2.4 MeasurementIn neutral-atom devices, the measurement pro-cess encompasses all the atoms in the register andnecessarily terminates the computation. The pro-cess is based on the fluorescence imaging of theatom array, where “bright” and “dark” sites arelinked to the measured states [46]. Due to therebeing multiple addressable transitions, the finalstate of each atom can be in more than two levels

and, therefore, the measurement’s outcome willbe basis-dependent. In Pulser, the convention isto associate the state that is exclusive to a givenbasis to 1 and all other outcomes to 0, as sum-marized in table 2.

ground-rydberg digital

|r〉 1 0|g〉 0 0|h〉 0 1

Table 2: Corresponding measurement outcome of eachstate, depending on the measurement basis.

3 Designing sequences with PulserPulser is written in the Python language to fa-cilitate adoption by a widespread audience. It isalso Open Source Software and can be accessedand developed by any interested contributor. Toinstall the latest stable version of the Pulser pack-age, type into a terminal (where Python version3.7 or greater is installed):

pip install pulser

3.1 Code ArchitectureThe main components of Pulser are:

(i) The Device, which consists of a series ofspecifications that characterize the hard-ware, including the chosen Rydberg level,the ranges of the amplitudes and frequen-cies of the lasers, the minimal and maximaldistance between the atoms, and the differ-ent channels that can be declared (see (iii)below).

(ii) The Register stores the information aboutthe coordinates of the atoms and their re-spective ID’s, which serve to identify themwhen targeting specific operations.

(iii) The Channels represent the action of thelasers and are organized by addressing (localor global) and the type of transition (Ryd-berg or Raman).

(iv) Waveforms are the basic building blocks ofa pulse. They can have custom or prede-termined shapes, like a ramp waveform or a

5

Page 6: Pulser: An open-source package for the design of pulse

Figure 5: Relationship between the main Pulser classes. The central object is the Sequence, which is linked to aDevice. The Device holds the available Channels — which are selected and declared in the Sequence — andinformation of the hardware constraints. These constraints are enforced upon the Register, where the neutral-atomarray is defined, and upon the Pulses. Each Pulse, defined by its amplitude and detuning Waveforms and a fixedphase, populates the declared channels alongside other commands like target — which points local addressingchannels to specific qubits — and delay — which idles the channel. The resulting Sequence can then be sent forexecution on the neutral-atom QPU or emulated through Pulser’s Simulation class.

Blackman waveform, all of them indicatingthe specific profile of the waveform and itsduration.

(v) Pulses consist of waveforms for the ampli-tude and the detuning. They can be furthershifted by a phase. Once a Pulse is con-structed it has to be added to the sequenceindicating which atom(s) are targeted andwhat channel will implement it.

(vi) The Sequence contains the schedule of thepulses in each channel. It is also linked witha Register and the Device in which it isto be executed. This is the information thatcan be sent to a real neutral-atom QPU orsimulated on a classical computer.

(vii) Simulation is included to emulate resultsfor the application of sequences on small in-stances. In Pulser, we have made use ofthe QuTiP libraries [22, 23] for the simula-tion of quantum systems. Each simulationrun returns a specialized object that holdsthe results and features methods for post-processing them.

3.2 Pulse Sequence Creation: A guided walk-through

We will show, step-by-step, how a basic pulse se-quence is created with Pulser by going throughthe paradigmatic protocol for creating the Bellstate

∣∣Φ+⟩ = 1√2(|00〉+ |11〉).

Starting from the archetypal circuit in Figure6(a), we need to adapt it for execution on neutral-atom devices. The major and necessary changeis the decomposition of the CNOT gate, which isnot native in neutral-atom devices, to an equiv-alent construction based on the CZ gate. Addi-tionally, we replace the Hadamard with an equiv-alent gate (when starting from |0〉) that can beexecuted with a resonant pulse, which reduces thenumber of free parameters in the pulse, makingit less error-prone. These changes result in theequivalent circuit of Figure 6(b).

(a) (b)

Figure 6: (a) Typical quantum circuit for generating theBell state |Φ+〉 . (b) Equivalent circuit to that of Figure6(a), adapted for execution on a neutral-atom device.

6

Page 7: Pulser: An open-source package for the design of pulse

From this quantum circuit, we can create thecorresponding pulse sequence in Pulser. For thiseffect, the following modules will be needed:

1 import numpy as np2 import pulser3 from pulser import Pulse, Sequence, Register

3.2.1 Creating the Register

The Register defines the positions of the atomsand their respective names. There are multipleways of defining a Register, the most customiz-able one being to create a dictionary that asso-ciates a name (the key) to a coordinate in mi-crometers (the value). In this case, we only needtwo qubits, so we will create a Register with twoatoms, 4 µm apart, which we will name 'c' and't'.

4 # Coordinates in micrometers5 qubits = 'c': (-2, 0), 't': (2, 0)6 reg = Register(qubits)

3.2.2 Initializing the Sequence

To create a Sequence, one has to provide it withthe Register instance and the Device in whichthe sequence will be executed. Each Deviceobject is associated with a physical device andholds its particular constraints. When linked toa Sequence, it dictates whether the chosen regis-ter is valid and, as the sequence is created, vali-dates all instructions. We import the device (inthis case, Chadoq2) from pulser.devices andinitialize our sequence with the freshly createdregister:

7 from pulser.devices import Chadoq28 seq = Sequence(reg, Chadoq2)

3.2.3 Channel declaration

Each device has a set of available chan-nels, which can be consulted throughseq.available_channels. Since we needlocal addressing on both the ground-rydbergbasis (for the CZ gate) and the digital basis(for the single-qubit gates), we will declarethe 'rydberg_local' and 'raman_local' channels,which we will name 'rydberg' and 'digital',respectively.

9 seq.declare_channel('digital', 'raman_local')10 seq.declare_channel('rydberg', 'rydberg_local',11 initial_target='c')

On real devices, each channel can only be de-clared once and will no longer appear in the listof available channels after declaration, appearinginstead in seq.declared_channels.

3.2.4 Making the pulses

The different channels will be populated bypulses, which are specific objects that need to becreated. A pulse is made up of an amplitude (i.e.Rabi frequency) waveform, a detuning waveformand a fixed phase, although special conveniencemethods exist when one or both waveforms areconstant. In our example, all pulses will be reso-nant, so we will use Pulse.ConstantDetuning()to conveniently set δ = 0 without defining itswaveform.

For the amplitude waveform, eq. (10) tells usthat what defines the angle of rotation is sim-ply the integral of the waveform. This ideal sce-nario does not distinguish between a rectangularwaveform or something more complex, as long asits integral is the same. In practice, a properly-shaped waveform — like the Blackman waveform,which we will use here — can mitigate unwantedmodifications to the modulated signal, stemmingfrom spectral leakage or noise sensitivity.

Starting with the single-qubit gates, all of thoseinvolved have θ = π/2, so we declare a Blackmanwaveform with an area of π/2 and duration of200 ns, making up a relatively short pulse with-out exceeding the amplitude range allowed by thechannel where it will be executed.

12 from pulser.waveforms import BlackmanWaveform13 half_pi_wf = BlackmanWaveform(200, np.pi/2)

The rotation axis is defined from eq. (11), fromwhich we gather that a rotation around the y-axis corresponds to a phase ϕ = −π/2. Inversely,since R†y(π/2) = R−y(π/2), we will also haveϕ = π/2, defining a rotation around −y. Thecorresponding pulse declarations are:

14 ry_pulse = Pulse.ConstantDetuning(15 amplitude=half_pi_wf,16 detuning=0,17 phase=-np.pi/2,18 )

7

Page 8: Pulser: An open-source package for the design of pulse

19 ry_dag_pulse = Pulse.ConstantDetuning(20 amplitude=half_pi_wf,21 detuning=0,22 phase=np.pi/2,23 )

Moving on to the CZ gate, which follows theprotocol of Figure 4, we will need a π-pulse anda 2π-pulse, which we can shape with a Black-man waveform as well. However, because we arenow dealing with Rydberg interactions, we haveto make sure that the Rydberg blockade radiusresulting from the chosen waveform is well abovethe spacing between the atoms. This concerndoes not extend to all the pulses assigned to theRydberg channel, because a Rydberg blockade isonly meaningful if multiple atoms are being ex-cited to the Rydberg state simultaneously or if anatom is being excited after its neighbors. Thus,in this case, only the 2π-pulse will determine arelevant Rydberg blockade radius, which meansthe π-pulses surrounding it can be kept short:

24 pi_wf = BlackmanWaveform(200, np.pi)25 pi_pulse = Pulse.ConstantDetuning(pi_wf, 0, 0)

To figure out what is the Rabi frequency up-per bound that corresponds to a certain Rydbergblockade radius, as dictated by eq. (6), we usethe rabi_from_blockade() method of our cho-sen device. We set a conservative Rydberg block-ade radius of 8µm, double the distance betweenthe atoms. The corresponding maximum Rabifrequency value is then

26 max_val = Chadoq2.rabi_from_blockade(8)27 # Result: max_val = 19.10672378540039 rad/us

Conversely, it is also possible to figure outwhat the Rydberg blockade radius is fora given Rabi frequency value through therydberg_blockade_radius() method.

With an upper bound on the amplitude, wecan create the appropriate Blackman waveformand corresponding pulse using the following for-mulation (which leverages the fact that there isa simple relationship between the duration, areaand maximum value of a Blackman waveform):

28 two_pi_wf = BlackmanWaveform.from_max_val(29 max_val=max_val,30 area=2*np.pi,31 )32 two_pi_pulse = Pulse.ConstantDetuning(33 amplitude=two_pi_wf,

34 detuning=0,35 phase=0,36 )

All the pulse objects necessary to program thecircuit of Figure 6(b) have been created. As aremark, note that every Pulse and Waveformcan be plotted by calling its draw() method.As an example, Figure 7 displays the plot oftwo_pi_pulse, showing both the amplitude and de-tuning waveforms in the same picture.

0 100 200 300 400 500 600 700 800t (ns)

0.0

2.5

5.0

7.5

10.0

12.5

15.0

17.5

20.0

(rad

/µs)

0.04

0.02

0.00

0.02

0.04

(rad

/µs)

Figure 7: The outcome of calling two_pi_pulse.draw().Both the amplitude and detuning waveforms are dis-played.

3.2.5 Composing the Sequence

As previously mentioned, the workings of neutral-atom devices ultimately influence the sequencesdesigned in Pulser. In many aspects — like theway single-qubit gates are realized as pulses —neutral-atom devices are very similar to otherpopular implementations. However, when com-pared to superconducting qubit architectures forinstance, there are some marked differences, themost striking being in the connection betweenchannels and qubits.

In superconducting qubit devices, each qubithas multiple dedicated channels, each serving aspecific function, like that of manipulating ormeasuring the state of the qubit. This means thatif one is to apply a pulse on a given qubit, thatpulse will be allocated to the channel exclusivelyserving that qubit.

On the other hand, a channel in a neutral-atomQPU can serve all the qubits in the register, be itsimultaneously or sequentially. In practice, thismeans that a channel needs to know on whichqubit (or qubits) to apply the pulses to, and while

8

Page 9: Pulser: An open-source package for the design of pulse

there are some channels — specifically, those ofthe Global type — whose targets are fixed tobe the entire register, the channels of type Localhave the ability to change their target throughoutthe sequence. When the state of a single-qubit ischanged, a Local channel targets it before apply-ing the pulse, after which it can move on to targeta different qubit onto which the next pulse will beapplied. In this way, a Local channel can indi-vidually manipulate the state of all the qubits ina register, though it will do it sequentially ratherthan in parallel.

Thus, every channel needs to start with a tar-get. For Global channels, all the atoms are thetarget by definition, but for Local channels, theirtarget has to be explicitly defined. This initialtarget can be set at channel declaration (see how'rydberg' was set to target the 'c' atom), or it canbe done by using the standard target method ofseq — the Sequence instance previously created.

37 seq.target('c', 'digital')

Now both channels have an initial target, sowe can compose the sequence by allocating thePulses to the declared Channels.

We start with the single-qubit gates, Ry(π/2)and R†y(π/2). Recall that these transitions areaddressed by the Raman-type channel, which wecalled 'digital'. Thus, the first two gates of cir-cuit 6 are added to the same channel as follows:

38 seq.add(ry_pulse, 'digital')39 seq.target('t', 'digital')40 seq.add(ry_dag_pulse, 'digital')

Notice how the target is changed to 't' in be-tween additions, so that the R†y(π/2) gate actson the correct qubit.

Next, we implement the CZ gate by replicat-ing the protocol of Figure 4. This will involvethe other declared channel, so we must clarifyhow pulses in different channels are aligned intime. By default, when adding a pulse to a chan-nel (which is targeting one or more qubits), itwill be added as soon as all targeted qubits arefree. This means that, if existing pulses on otherchannels are acting on one of the targeted qubits,the channel will be idle until they are done. Onthe other hand, if there is no overlap betweenthe different channels’ targets, the pulses will beplayed in parallel; this is called the 'min-delay'

protocol. The other addition protocols are the'wait-for-all', in which the pulse will only playafter all previously added pulses are finished, andthe 'no-delay', where a delay is never added.

There is an additional command, calledalign(), which introduces delays that align asubset of channels with the one that finished thelatest, such that the next pulse added to anyof them will start right after the latest channelhas finished. When all the declared channels arealigned, the outcome is identical to that of usingthe 'wait-for-all' protocol; otherwise, when onlysome of the channels are aligned, it correspondsto a “wait-for-some” protocol.

As illustrated in Fig. 4, the CZ implementationstarts with a π-pulse on channel 'rydberg', whichis targeted to the 'c' qubit. The channel startsempty, but the pulse will not be added at t = 0by default because it would overlap with the firstpulse of channel 'digital', which is also targeting'c'. Instead, it would wait for this first pulse toend and then start playing in parallel with thesecond pulse in the 'digital' channel. Althoughthis would be a valid implementation, we will in-stead use the align command to make the pulsestart only after the 'digital' channel is done withboth pulses (the 'wait-for-all' would work toobecause we only declared two channels, but thisway can be generalized to the case were otherchannels are declared). This will avoid dead-times in the CZ implementation, thus keeping theatoms in the Rydberg state no longer than neces-sary (which is desirable, since the atoms are moresensitive to noise when in the Rydberg state).

Thus, the CZ is implemented through

41 seq.align('digital', 'rydberg')42 seq.add(pi_pulse, 'rydberg')43 seq.target('t', 'rydberg')44 seq.add(two_pi_pulse, 'rydberg')45 seq.target('c', 'rydberg')46 seq.add(pi_pulse, 'rydberg')

Finally, there is still a single-qubit gate on the't' qubit that must be applied after the CZ isdone (recall that channel 'digital' was left tar-geting 't'),

47 seq.align('digital', 'rydberg')48 seq.add(ry_pulse, 'digital')

9

Page 10: Pulser: An open-source package for the design of pulse

Figure 8: The final Bell state creation sequence, displayed by calling seq.draw(). The current target of each channelis displayed in the orange boxes and is part of the original output, but the gates corresponding to each part of thecircuit were annotated on top of it.

3.2.6 Measurement

At last, the measurement signals the end of a se-quence, so after it no more changes are possible.We can measure a sequence by calling:

49 seq.measure(basis='digital')

When measuring, one has to select the desiredmeasurement basis4. The available options de-pend on the device and can be consulted bycalling the chosen device’s supported_bases at-tribute.

3.2.7 Visualization

Throughout its creation process, the sequencecan be visualized through the Sequence.draw()method. As an example, the final sequence isshown in Figure 8. Note that the phase of eachpulse is not represented, only the amplitude anddetuning modulations of each channel’s output —the latter being always zero in this example. Toinspect the phase of each pulse, one can print outthe sequence instead, through

4Here, we choose the 'digital' basis, not to be con-fused with the channel we named 'digital' for address-ing this transition.

50 print(seq)

This will list all the contents of each channel,alongside its start and finish times.

3.2.8 Simulation

The primary goal of Pulser is to serve as afront-end framework for sending sequences toneutral-atom quantum processors. However, itis also possible to emulate the output of a se-quence locally on a classical device through theSimulation class. Pulser’s emulator relies onthe open-source package QuTiP. Incorporating anemulator in Pulser is valuable for several reasons.First, it enables users to carefully design theirpulse sequences and understand their effects be-fore sending the instructions to a real device. Italso enables them to gain intuition with simplesetups, and explore new possible applications onlimited-size systems. Coming back to our exam-ple, we use the emulator on our sequence by call-ing:

51 from pulser import Simulation52 sim = Simulation(seq)53 res = sim.run()

10

Page 11: Pulser: An open-source package for the design of pulse

Every time the run() method is called, aSimulationResults object instance is returned,which holds the results of the simulation.

The simulation performed is a time evolution ofthe system at specific times, such that res holdsthe state of the system at each instant. All thestates can be accessed through the states at-tribute, the final entry being the state of the sys-tem at the end of the sequence (before measure-ment).

In this case, since the three energy levels of thetwo atoms were involved, the final state will bea nine-entry vector. However, the population ofthe Rydberg levels should be negligible, so it ispossible to reduce the final state to the 'digital'basis of interest. We do so by calling

54 res.get_final_state(reduce_to_basis='digital')

which returns a qutip.Qobj instance holding thefinal state in the 'digital' basis. For this exam-ple, the outcome is

0.707 + i0.006

−3.88× 10−05 + i0.006−2.99× 10−05

0.707

,

which is very close to what we expect for∣∣Φ+⟩.

Another way to probe the results is to emulatea real experiment, in which case the only infor-mation about the final state of the system is ob-tained in the measurement. For a given numberN_samples of repetitions of the experiment, wecall

55 results.sample_final_state(N_samples=1e4)

Due to finite sampling errors, the outcome willvary slightly for each call. An example of an out-come is '00': 5005, '11': 4995.

4 Pulser in action : exploration of use-cases with the emulator

In this section, we reproduce some results ob-tained experimentally using Pulser’s built-in em-ulator.

4.1 Preparing an antiferromagnetic state andobserving the produced correlationsFirst we illustrate how to build a sequence for adi-abatically preparing an antiferromagnetic statefrom the Ising-like model of eq.(5), as well asstudying its correlations. These types of stateshave been studied in neutral-atom setups up tohundreds of qubits, showing remarkable preci-sion and allowing measurements that are beyondthe best available classical simulation algorithms[16, 17, 40, 41].

The atoms will be placed in a square array ofinteratomic distance R. We will shine a laserglobally with a pulse sequence representing a pathin the phase diagram of the quantum Ising model,that starts in the paramagnetic phase and endsin the antiferromagnetic dome, as shown in Fig.9(a). We shall evaluate the quality of the result-ing state by calculating the spin-spin correlationfunction, defined as:

g(2)(k, l) = 1Nk,l

∑i,j

(〈ninj〉 − 〈ni〉〈nj〉

). (14)

The function g(2) measures the correlation be-tween local operators ni, nj at different positions,averaged over all pairs of atoms i, j separated bya vector (kR, lR) (Nk,l is the total number of suchpairs). The pulses will be constructed by indicat-ing the values for the maximum Rabi frequency,and the initial and final detuning (as reported in[47]).

1 # Load basic packages and classes2 import numpy as np3 import pulser4 from pulser import Register, Pulse, Sequence,

Simulation5 from pulser.devices import Chadoq26 from pulser.waveforms import RampWaveform7 # Define setup parameters (in rad/us and ns)8 Omega_max = 2.3 * 2*np.pi9 U = Omega_max / 2.3

10 delta_0 = -6 * U11 delta_f = 2 * U12 t_rise = 25013 t_fall = 50014 t_sweep = (delta_f-delta_0)/(2*np.pi*10)*1000

Since we want to use the blockade effect fornearest-neighbors only, we tune Ωmax to be of thesame order as the van der Waals interaction mag-nitude for nearby atoms, Ωmax ∼ U . This will fixan interatomic distance Rinteratomic, which we useto define our register:

11

Page 12: Pulser: An open-source package for the design of pulse

(b)

!(ra

d/µs

) Ω

(rad/µs

) 20

0−20

510

20−4

0

0 200 400 600 800 1000 1200 1400 1600$ (ns) ℏΩ($)/*

ℏ!($)

/*(a)

Figure 9: (a) Schematic phase diagram of a two-dimensional quantum Ising system, with respect to the ratio ofapplied Rabi frequency ~Ω/U and detuning ~δ/U . The blue region indicates the antiferromagnetic (AFM) phase,and outside of this region a paramagnetic (PM) phase is found. (b) The pulse sequence for the adiabatic preparationof the antiferromagnetic state in the Ising model, displayed by calling seq.draw().

15 R_interatomic =Chadoq2.rydberg_blockade_radius(U)

16 reg = Register.square(3, R_interatomic,prefix='q')

4.1.1 Creating the sequence

We compose our pulse using the Pulse andSequence classes:

17 # Define each pulse18 rise = Pulse.ConstantDetuning(19 RampWaveform(t_rise, 0., Omega_max),20 delta_0,21 0.)22 sweep = Pulse.ConstantAmplitude(23 Omega_max,24 RampWaveform(t_sweep, delta_0, delta_f),25 0.)26 fall = Pulse.ConstantDetuning(27 RampWaveform(t_fall, Omega_max, 0.),28 delta_f,29 0.)30 # Add to sequence31 seq = Sequence(reg, Chadoq2)32 seq.declare_channel('ising', 'rydberg_global')33 seq.add(rise, 'ising')34 seq.add(sweep, 'ising')35 seq.add(fall, 'ising')

The sequence is readily plotted with the draw()method, as illustrated in Figure 9(b).

4.1.2 Simulation: Spin-Spin Correlation Function

We run a simulation of the sequence with therun() method of the Simulation class. For sim-ple pulse sequences like the one we are using here,we can use a reduced sampling rate for faster em-ulation. A progress estimate can also be included

if desired, with the parameter progress_bar=True.Once the final state is obtained, we may sam-ple from it using the sample_final_state()method. Since there was no measurement ba-sis ('ground-rydberg' or 'digital') specified dur-ing the composition of the sequence, we includeit as an argument with meas_basis:

36 simul = Simulation(seq, sampling_rate=0.02)37 results = simul.run(progress_bar=True)38 count = results.sample_final_state(39 meas_basis='ground-rydberg')40 most_freq = k:v for k,v in count.items() if

v>10

From the output of the simulation, we canplot the histogram of the sampled results, shownin Figure 10. Notice the peak corresponding tothe antiferromagnetic state.

0111

0010

110

1000

101

1010

0011

110

1001

101

1010

0111

110

1010

101

1010

1011

110

1011

101

1011

0001

110

1100

101

1011

0101

110

1101

110

1011

1010

111

0001

101

1100

0111

111

0101

101

1110

0010

111

1001

110

1110

1010

111

1100

101

bitstrings

0

20

40

60

80

100

120

coun

ts

Figure 10: Most frequent results from the sampling ofthe final state.

From results, one can access the state of the

12

Page 13: Pulser: An open-source package for the design of pulse

(a)

(b)

Figure 11: (a) Simulation results for the g(2) correla-tion function, eq.(14). (b) Sweep results for the SNéelstructure factor, eq.(15).

system throughout the simulation (as a list ofqutip.Qobjs) by calling results.states. This canbe useful for post-processing the simulation re-sults and computing observables. Alternatively,one can also call results.expect(obs_list) in orderto get the expectation value of a list of observ-ables (provided under the form of qutip.Qobjsor numpy.ndarrays). We show in Figure 11(a)the obtained results from the output of the sim-ulation for the correlation function g(2), eq. (14).Note that the correlation function is expected todecay exponentially (modulo finite-size effects),which is best observed at larger system sizes [40].

4.1.3 Néel Structure Factor

We will next explore the Ω = 0 line on thephase diagram, Fig. 9(a), in order to evaluatehow well the produced state represents an anti-ferromagnetic state for different endpoints of thepulse’s path. Since the value of correlation func-tion g(2)(k, l) (eq. (14)) can be positive or nega-tive, we compensate with alternating minus signsand construct a single score for the state, the Néel

Structure Factor:

SNéel =∑

(k,l)6=(0,0)(−1)|k|+|l|g(2)(k, l), (15)

which should be largest when the state is clos-est to an antiferromagnetic product state. Bysweeping over different values of detuning δf , weexamine the region 0 < ~δf/U < 4. In a few sec-onds, Pulser gives the results shown in Figure 11(b), showing where the antiferromagnetic phaseis more strongly present.

4.2 Variational algorithms with Pulser: solvinga graph problem with neutral atoms

The implementation of variational algorithms,such as the Quantum Approximation Optimiza-tion Algorithm [48] (QAOA), is facilitated by theuse of a parametrized sequence in Pulser. Weillustrate this aspect here, by solving the Max-imum Independent Set (MIS) problem on UnitDisk graphs, which can be naturally studied onneutral-atom devices [42–44].

4.2.1 From a graph to an atomic register

An independent set of a graph is a subset ofvertices where any two elements of this subsetare not connected by an edge. The MIS cor-responds to the largest of such subsets. Theso-called Unit Disk (UD) version of this problemcorresponds to the instances where the graphunder consideration lives in 2D and displays anedge between two nodes if they are within a unitlength of each other.

Interestingly, ensembles of interacting Rydbergatoms in 2D can be naturally represented by UnitDisk graph structures: the atoms are the nodesof the graphs and an edge in the graph cor-responds to two atoms being within the block-ade radius of each other. In this example, wewill take Ω fixed to a frequency of 1 rad/µs,hence the blockade radius can be obtained byusing Chadoq2.rydberg_blockade_radius(1.). Thefollowing code block instantiates the atomicregister, and displays the graph induced bytheir interactions with the draw_graph=True anddraw_half_radius=True arguments passed to thereg.draw() method, as illustrated in Figure 12.

1 # Load basic packages and classes

13

Page 14: Pulser: An open-source package for the design of pulse

2 import numpy as np3 import pulser4 from pulser import Register, Pulse, Sequence,

Simulation5 from pulser.devices import Chadoq26 # Set Register7 pos = np.array([[0., 0.], [-4, -7], [4,-7],

[8,6], [-8,6]])8 reg = Register.from_coordinates(pos)9 Rb = Chadoq2.rydberg_blockade_radius(1.)

10

11 reg.draw(12 blockade_radius=Rb,13 draw_graph=True,14 draw_half_radius=True15 )

5 0 5µm

6

4

2

0

2

4

6

µm

0

1 2

34

Figure 12: The register for the MIS graph problem. Theshaded circles show the blockade half-radius, such thatthe intersecting regions indicate existing links.

The graph G has two maximal independentsets: (1, 3, 4) and (2, 3, 4), respectively 01011 and00111 in binary. One could try to prepare thosestates using an adiabatic approach such as theone illustrated in section 4.1. Another approachis to use QAOA, as we illustrate below.

4.2.2 Building the parametrized sequence

QAOA exploits both a quantum and a classicalprocessor that exchange information within afeedback loop to solve an optimization problem.The role of the neutral-atom processor is toprepare and measure an N -atom parametrizedwavefunction. The outcome of the measurementis then used by the classical processor in astandard classical optimization procedure, thatupdates the parameters for the next iteration.

More specifically, the preparation ofthe parametrized wavefunction is achievedthrough the successive application of two non-commutative Hamiltonians, with all atoms

initially starting in the ground state |00 . . . 0〉 ofthe ground-rydberg basis. The first one is realizedby taking Ω = 1 rad/µs, and δ = 0 rad/µs inEq.(7). The second Hamiltonian is realized withΩ = δ = 1 rad/µs. These two Hamiltoniansare applied successively, for durations tj andsj , respectively. The dimension of t and s, i.e.the number of layers applied to the system, isreferred to as the depth of the algorithm. Theoutcome of the measurement is then used as theobjective function in a standard classical opti-mization procedure, that updates the parametersfor the next iteration.

When implementing a variational procedure,multiple sequences are created that differ onlyby the durations tj and sj of the pulses. Thisis conveniently handled in Pulser by turning aregular sequence into a parametrized sequence.A Sequence is said to be parametrized oncea variable is declared and used in a sequence-building call, from which point the sequencebuilding process can continue as usual but thesequence is no longer built on the fly. Instead,all calls to a parametrized sequence are storedas a blueprint for generating a new Sequence,which may depend on the value of the declaredvariables. Consequently, it is not possible toprogressively monitor the creation process of asequence that is parametrized (e.g. by drawingthe state of a sequence as new pulses are added).The building of the sequence itself only happenswhen Sequence.build() is called, at whichpoint specific values for all the declared variableshave to be specified as arguments.

The Variable objects are obtained by call-ing Sequence.declare_variable() and canbe used throughout the Sequence creationprocess (i) as parameters when creating newWaveforms and Pulses, or (ii) as argumentsfor standard sequence creation methods likeadd, target, align and delay. Moreover, theysupport basic arithmetic operations and, whenthey are of size> 1, iteration and item accessing.

The notion of parametrized sequence can be-come very handy with real world constraints suchas those we find in cloud-based platforms.

First, the bandwidth allocation of a program,variational or not, is greatly reduced thanks to

14

Page 15: Pulser: An open-source package for the design of pulse

this factorization. A user only needs to sendthe parametrized sequence that describes his pro-gram once, and then each new iteration only re-quires the associated set of parameters. Thanksto the high flexibility of Pulser, users can have avery fine-grained control over the waveforms thatdefine their pulses. This results in needing largerobjects to define these pulses, which makes sucha factorization even more useful.

In addition, one area of improvement for coldatom platforms is the large calibration times foratom register configuration changes. This meansthat running randomly independent sequenceson the same QPU can be very inefficient. Thesequences of a given user’s program on the otherhand share some common parameters, includingthe register configuration. On the QPU side, wecan treat the parametrized sequences as the basicblock of the QPU scheduling to greatly reducethe latencies due to the calibration processes,make sure the different user programs are runefficiently and that all the sequences in a givenprogram are run on the same QPU.

The example below shows how Sequence canbe used to create a parametrized QAOA sequencewith two layers, with the variable duration of eachlayer stored in the t_list and s_list arrays. No-tice that no value is given to the contents of t_listand s_list.

16 # Parametrized sequence17 seq = Sequence(reg, Chadoq2)18 seq.declare_channel('ch0', 'rydberg_global')19

20 t_list = seq.declare_variable('t_list', size=2)21 s_list = seq.declare_variable('s_list', size=2)22

23 for t, s in zip(t_list, s_list):24 pulse_1 = Pulse.ConstantPulse(1000*t, 1.,

0., 0)25 pulse_2 = Pulse.ConstantPulse(1000*s, 1.,

1., 0)26

27 seq.add(pulse_1, 'ch0')28 seq.add(pulse_2, 'ch0')

The sequence seq above will only be builtonce the user provides specific values for t_listand s_list while calling the Sequence.build()method. It thus enables to build a variety of se-quences that share the same structure:

# Build sequences with specific valuesmy_seq_1 = seq.build(t_list=[2,4], s_list=[3,6])

my_seq_2 = seq.build(t_list=[1,3], s_list=[2,5])

4.2.3 Classical optimization and QAOA results

The parametrized sequence above can then beused in conjunction with a standard classical op-timizer in order to determine a set of good val-ues for t_list and s_list. When running the fullQAOA procedure on quantum hardware, the userwill be asked periodically to provide the next val-ues of the parameters for the next iteration. Thisprocedure can also be emulated locally, and weshow in Figure 13 the bitstrings that are sampledafter optimization.

0011

101

011

0001

101

000

0010

010

000

0010

101

010

0100

100

110

0000

000

001

0001

001

110

1001

010

100

bitstrings

0

50

100

150

200

coun

ts

Figure 13: Histogram of most frequent bitstrings afterthe optimization loop. The MIS graphs (in red) are theones that are observed most frequently.

QAOA is capable of finding good variationalparameters s and t, seeing as sampling from thefinal state |ψ(tf )〉 will return both MISs of thegraph with high probability.

5 ConclusionWith recent advances in the field, neutral-atomprocessors now provide unique opportunities forthe exploration of uncharted territories in many-body quantum physics with hundreds of inter-acting quantum units [39–41]. By using distinctelectronic transitions for encoding the quantuminformation, one can implement various Hamil-tonians depending on the task at hand. Beyondanalog computing, recent developments in qubitaddressing have opened the door to high-fidelityquantum gates [13, 14]. In addition to the flexi-bility in terms of information encoding and pro-

15

Page 16: Pulser: An open-source package for the design of pulse

cessing, the geometry of the quantum registeritself is also highly programmable [5, 49]. Thisholds great promises for the implementation ofgraph-related algorithms [43, 44, 50, 51], the ex-ploration of lattice models in condensed-matterphysics [18, 40, 41], or the reduction of the gate-count for quantum circuits [7].

In this paper, we introduced Pulser, an open-source Python library allowing users to pilotsuch powerful devices at the pulse level. Thistool will enable the exploration of new avenuesin physics and quantum information science re-quiring an advanced control of the system. Af-ter their creation in Pulser, pulse sequences canbe translated and read by an arbitrary wave-form generator for implementation on a quan-tum processor. The architecture of the soft-ware makes it possible to use as an interface forany neutral-atom QPU as the specifics of theback-end can be encapsulated by creating newDevice objects. Pulser currently enables thecontrol of laser pulses during the quantum in-formation processing phase, but it could be ex-tended in the future to include other controls ei-ther in the processing phase, during the assem-bly of the register or the measurement phase.Being a low-level tool, Pulser is readily com-patible with higher-level application-oriented li-braries and frameworks for digital quantum infor-mation processing, such as Cirq [52], Qiskit [53],Atos myQLM, Pennylane [54] or tket [55], whichabstract away many hardware features.

The primary purpose of Pulser’s built-in emu-lator is to reproduce faithfully what the outputof a real experiment would look like, in order tofacilitate the design of hardware runs. In thatspirit, some developments are currently under-way for the inclusion of realistic error models [56].Some work could also be done to extend the sim-ulations capabilities in terms of the number ofqubits that can be efficiently simulated, includingthe development of tensor-network based meth-ods and GPU acceleration.

Acknowledgments

We thank Lucas Beguin, Antoine Browaeys, EricGiguere, Christophe Jurczak, Thierry Lahaye,Boxi Li, Georges-Olivier Reymond, Adrien Sig-noles, and William J. Zeng for useful discussions.

References[1] M. Saffman, T. G. Walker, and K. Mølmer.

Quantum information with Rydberg atoms.Reviews of Modern Physics, 82(3):2313–2363, Jul 2010. DOI: 10.1103/RevMod-Phys.82.2313.

[2] M. Saffman. Quantum computing withatomic qubits and Rydberg interactions:progress and challenges. Journal ofPhysics B Atomic Molecular Physics, 49(20):202001, October 2016. DOI: 10.1088/0953-4075/49/20/202001.

[3] Daniel Barredo, Sylvain de Léséleuc, Vin-cent Lienhard, Thierry Lahaye, and An-toine Browaeys. An atom-by-atom assem-bler of defect-free arbitrary two-dimensionalatomic arrays. Science, 354(6315):1021–1023, November 2016. ISSN 0036-8075,1095-9203. DOI: 10.1126/science.aah3778.URL https://science.sciencemag.org/content/354/6315/1021.

[4] Manuel Endres, Hannes Bernien, Alexan-der Keesling, Harry Levine, Eric R. An-schuetz, Alexandre Krajenbrink, CrystalSenko, Vladan Vuletic, Markus Greiner,and Mikhail D. Lukin. Atom-by-atom as-sembly of defect-free one-dimensional coldatom arrays. Science, 354(6315):1024–1027, November 2016. ISSN 0036-8075,1095-9203. DOI: 10.1126/science.aah3752.URL https://science.sciencemag.org/content/354/6315/1024.

[5] Daniel Barredo, Vincent Lienhard, Syl-vain de Léséleuc, Thierry Lahaye, and An-toine Browaeys. Synthetic three-dimensionalatomic structures assembled atom by atom.Nature, 561(7721):79–82, September 2018.ISSN 1476-4687. DOI: 10.1038/s41586-018-0450-2. URL https://www.nature.com/articles/s41586-018-0450-2.

[6] Antoine Browaeys and Thierry Lahaye.Many-body physics with individually con-trolled Rydberg atoms. Nature Physics, 16(2):132–142, 2020. DOI: 10.1038/s41567-019-0733-z. URL https://doi.org/10.1038/s41567-019-0733-z.

[7] Loïc Henriet, Lucas Beguin, Adrien Sig-noles, Thierry Lahaye, Antoine Browaeys,Georges-Olivier Reymond, and ChristopheJurczak. Quantum computing with neutralatoms. Quantum, 4:327, September 2020.

16

Page 17: Pulser: An open-source package for the design of pulse

ISSN 2521-327X. DOI: 10.22331/q-2020-09-21-327. URL https://doi.org/10.22331/q-2020-09-21-327.

[8] M. Morgado and S. Whitlock. Quantumsimulation and computing with Rydberg-interacting qubits. arXiv e-prints, art.arXiv:2011.03031, November 2020.

[9] I. I. Beterov. Quantum ComputersBased on Cold Atoms. Optoelectron-ics, Instrumentation and Data Process-ing, 56(4):317–324, July 2020. DOI:10.3103/S8756699020040020.

[10] Xiaoling Wu, Xinhui Liang, Yaoqi Tian, FanYang, Cheng Chen, Yong-Chun Liu, MengKhoon Tey, and Li You. A concise review ofRydberg atom based quantum computationand quantum simulation. arXiv e-prints, art.arXiv:2012.10614, December 2020.

[11] D. Jaksch, J. I. Cirac, P. Zoller, S. L.Rolston, R. Côté, and M. D. Lukin.Fast quantum gates for neutral atoms.Phys. Rev. Lett., 85:2208–2211, Sep 2000.DOI: 10.1103/PhysRevLett.85.2208. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.85.2208.

[12] L. Isenhower, E. Urban, X. L. Zhang,A. T. Gill, T. Henage, T. A. Johnson, T. G.Walker, and M. Saffman. Demonstration of aneutral atom controlled-not quantum gate.Phys. Rev. Lett., 104:010503, Jan 2010.DOI: 10.1103/PhysRevLett.104.010503.URL https://link.aps.org/doi/10.1103/PhysRevLett.104.010503.

[13] Harry Levine, Alexander Keesling, AhmedOmran, Hannes Bernien, Sylvain Schwartz,Alexander S. Zibrov, Manuel Endres,Markus Greiner, Vladan Vuletić, andMikhail D. Lukin. High-Fidelity Con-trol and Entanglement of Rydberg-Atom Qubits. Phys. Rev. Lett., 121(12):123603, September 2018. DOI:10.1103/PhysRevLett.121.123603. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.121.123603.

[14] Harry Levine, Alexander Keesling, Giu-lia Semeghini, Ahmed Omran, Tout T.Wang, Sepehr Ebadi, Hannes Bernien,Markus Greiner, Vladan Vuletić, HannesPichler, and Mikhail D. Lukin. Parallelimplementation of high-fidelity multi-qubit gates with neutral atoms. Phys.

Rev. Lett., 123:170503, Oct 2019. DOI:10.1103/PhysRevLett.123.170503. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.123.170503.

[15] Henning Labuhn, Daniel Barredo, Syl-vain Ravets, Sylvain De Léséleuc, Tom-maso Macrì, Thierry Lahaye, and AntoineBrowaeys. Tunable two-dimensional arraysof single rydberg atoms for realizing quan-tum Ising models. Nature, 534(7609):667–670, 2016.

[16] Hannes Bernien, Sylvain Schwartz, Alexan-der Keesling, Harry Levine, Ahmed Omran,Hannes Pichler, Soonwon Choi, Alexander S.Zibrov, Manuel Endres, Markus Greiner,Vladan Vuletić, and Mikhail D. Lukin. Prob-ing many-body dynamics on a 51-atomquantum simulator. Nature, 551(7682):579–584, November 2017. DOI: 10.1038/na-ture24622.

[17] Vincent Lienhard, Sylvain de Léséleuc,Daniel Barredo, Thierry Lahaye, An-toine Browaeys, Michael Schuler, Louis-Paul Henry, and Andreas M. Läuchli.Observing the space- and time-dependentgrowth of correlations in dynamically tunedsynthetic ising models with antiferromag-netic interactions. Phys. Rev. X, 8:021070, Jun 2018. DOI: 10.1103/Phys-RevX.8.021070. URL https://link.aps.org/doi/10.1103/PhysRevX.8.021070.

[18] Sylvain de Léséleuc, Vincent Lienhard,Pascal Scholl, Daniel Barredo, SebastianWeber, Nicolai Lang, Hans Peter Büchler,Thierry Lahaye, and Antoine Browaeys.Observation of a symmetry-protected topo-logical phase of interacting bosons withRydberg atoms. Science, page eaav9105,August 2019. ISSN 0036-8075, 1095-9203.DOI: 10.1126/science.aav9105. URL https://science.sciencemag.org/content/early/2019/07/31/science.aav9105.

[19] Ahmed Omran, Harry Levine, Alexan-der Keesling, Giulia Semeghini, Tout T.Wang, Sepehr Ebadi, Hannes Bernien,Alexander S. Zibrov, Hannes Pichler, Soon-won Choi, Jian Cui, Marco Rossignolo,Phila Rembold, Simone Montangero, Tom-maso Calarco, Manuel Endres, MarkusGreiner, Vladan Vuletić, and Mikhail D.Lukin. Generation and manipulation

17

Page 18: Pulser: An open-source package for the design of pulse

of Schr\"odinger cat states in Rydbergatom arrays. arXiv:1905.05721 [cond-mat, physics:physics, physics:quant-ph], May2019. URL http://arxiv.org/abs/1905.05721. arXiv: 1905.05721.

[20] Henrique Silvério, Sebastian Grijalva, LoïcHenriet, Peter Karalekas, Lucas Leclerc,Nathan Shammah, and Constantin Dalyac.Pulser, April 2021. URL https://doi.org/10.5281/zenodo.4709401.

[21] Adrian Parra-Rodriguez, Pavel Lougovski,Lucas Lamata, Enrique Solano, and MikelSanz. Digital-analog quantum computation.Phys. Rev. A, 101(2):022305, February 2020.DOI: 10.1103/PhysRevA.101.022305.

[22] J.R. Johansson, P.D. Nation, and FrancoNori. QuTiP: An open-source Python frame-work for the dynamics of open quantumsystems. Computer Physics Communica-tions, 183(8):1760–1772, Aug 2012. ISSN0010-4655. DOI: 10.1016/j.cpc.2012.02.021.URL http://dx.doi.org/10.1016/j.cpc.2012.02.021.

[23] J.R. Johansson, P.D. Nation, and FrancoNori. QuTiP 2: A Python frameworkfor the dynamics of open quantum sys-tems. Computer Physics Communica-tions, 184(4):1234–1240, Apr 2013. ISSN0010-4655. DOI: 10.1016/j.cpc.2012.11.019.URL http://dx.doi.org/10.1016/j.cpc.2012.11.019.

[24] Will Zeng, Blake Johnson, Robert Smith,Nick Rubin, Matt Reagor, Colm Ryan, andChad Rigetti. First quantum computersneed smart software. Nature News, 549(7671):149, 2017.

[25] Peter J Karalekas, Nikolas A Tezak,Eric C Peterson, Colm A Ryan, Mar-cus P da Silva, and Robert S Smith.A quantum-classical cloud platform opti-mized for variational hybrid algorithms.Quantum Science and Technology, 5(2):024003, Apr 2020. DOI: 10.1088/2058-9565/ab7559. URL https://doi.org/10.1088%2F2058-9565%2Fab7559.

[26] Jarrod R McClean, Jonathan Romero, RyanBabbush, and Alán Aspuru-Guzik. The the-ory of variational hybrid quantum-classicalalgorithms. New Journal of Physics, 18(2):023023, 2016.

[27] Kishor Bharti, Alba Cervera-Lierta, Thi Ha

Kyaw, Tobias Haug, Sumner Alperin-Lea,Abhinav Anand, Matthias Degroote, Her-manni Heimonen, Jakob S. Kottmann, TimMenke, Wai-Keong Mok, Sukin Sim, Leong-Chuan Kwek, and Alán Aspuru-Guzik.Noisy intermediate-scale quantum (NISQ)algorithms, 2021.

[28] Suguru Endo, Zhenyu Cai, Simon C. Ben-jamin, and Xiao Yuan. Hybrid quantum-classical algorithms and quantum error mit-igation. Journal of the Physical Societyof Japan, 90(3):032001, Mar 2021. ISSN1347-4073. DOI: 10.7566/jpsj.90.032001.URL http://dx.doi.org/10.7566/JPSJ.90.032001.

[29] Thomas Alexander, Naoki Kanazawa,Daniel J Egger, Lauren Capelluto, Christo-pher J Wood, Ali Javadi-Abhari, and DavidC McKay. Qiskit pulse: programmingquantum computers through the cloud withpulses. Quantum Science and Technology,5(4):044006, Aug 2020. ISSN 2058-9565.DOI: 10.1088/2058-9565/aba404. URLhttp://dx.doi.org/10.1088/2058-9565/aba404.

[30] Harrison Ball, Michael J. Biercuk, An-dre Carvalho, Jiayin Chen, Michael Hush,Leonardo A. De Castro, Li Li, Per J. Lieber-mann, Harry J. Slatyer, Claire Edmunds,Virginia Frey, Cornelius Hempel, and Alis-tair Milne. Software tools for quantum con-trol: Improving quantum computer perfor-mance through noise and error suppression,2020.

[31] Nicolas Wittler, Federico Roy, Kevin Pack,Max Werninghaus, Anurag Saha Roy,Daniel J. Egger, Stefan Filipp, Frank K.Wilhelm, and Shai Machnes. Integratedtool set for control, calibration, andcharacterization of quantum devices ap-plied to superconducting qubits. Phys-ical Review Applied, 15(3), Mar 2021.ISSN 2331-7019. DOI: 10.1103/physrevap-plied.15.034080. URL http://dx.doi.org/10.1103/PhysRevApplied.15.034080.

[32] Michael H. Goerz, Daniel Basilewitsch, Fer-nando Gago-Encinas, Matthias G. Krauss,Karl P. Horn, Daniel M. Reich, and Chris-tiane P. Koch. Krotov: A Python im-plementation of Krotov’s method for quan-tum optimal control. SciPost Phys.,

18

Page 19: Pulser: An open-source package for the design of pulse

7:80, 2019. DOI: 10.21468/SciPost-Phys.7.6.080. URL https://scipost.org/10.21468/SciPostPhys.7.6.080.

[33] John Preskill. Quantum computing in thenisq era and beyond. Quantum, 2:79, Aug2018. ISSN 2521-327X. DOI: 10.22331/q-2018-08-06-79. URL http://dx.doi.org/10.22331/q-2018-08-06-79.

[34] F. Nogrette, H. Labuhn, S. Ravets,D. Barredo, L. Béguin, A. Vernier, T. La-haye, and A. Browaeys. Single-atom trap-ping in holographic 2d arrays of microtrapswith arbitrary geometries. Phys. Rev. X,4:021034, May 2014. DOI: 10.1103/Phys-RevX.4.021034. URL https://link.aps.org/doi/10.1103/PhysRevX.4.021034.

[35] Peter Schauß, Johannes Zeiher, TakeshiFukuhara, Sebastian Hild, Marc Cheneau,Tommaso Macrì, Thomas Pohl, ImmanuelBloch, and Christian Groß. Crystallizationin Ising quantum magnets. Science, 347(6229):1455–1458, 2015.

[36] Sylvain de Léséleuc, Sebastian Weber, Vin-cent Lienhard, Daniel Barredo, Hans PeterBüchler, Thierry Lahaye, and AntoineBrowaeys. Accurate mapping of mul-tilevel Rydberg atoms on interactingspin-1/2 particles for the quantum sim-ulation of Ising models. Phys. Rev.Lett., 120:113602, Mar 2018. DOI:10.1103/PhysRevLett.120.113602. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.120.113602.

[37] Daniel Barredo, Henning Labuhn, Syl-vain Ravets, Thierry Lahaye, AntoineBrowaeys, and Charles S. Adams. Co-herent excitation transfer in a spinchain of three Rydberg atoms. Phys.Rev. Lett., 114:113002, Mar 2015. DOI:10.1103/PhysRevLett.114.113002. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.114.113002.

[38] A. Piñeiro Orioli, A. Signoles, H. Wild-hagen, G. Günter, J. Berges, S. Whit-lock, and M. Weidemüller. Relaxationof an isolated dipolar-interacting Ry-dberg quantum spin system. Phys.Rev. Lett., 120:063601, Feb 2018. DOI:10.1103/PhysRevLett.120.063601. URLhttps://link.aps.org/doi/10.1103/PhysRevLett.120.063601.

[39] D. Bluvstein, A. Omran, H. Levine,A. Keesling, G. Semeghini, S. Ebadi, T. T.Wang, A. A. Michailidis, N. Maskara,W. W. Ho, S. Choi, M. Serbyn, M. Greiner,V. Vuletić, and M. D. Lukin. Con-trolling quantum many-body dynamicsin driven rydberg atom arrays. Sci-ence, 2021. ISSN 0036-8075. DOI:10.1126/science.abg2530. URL https://science.sciencemag.org/content/early/2021/02/24/science.abg2530.

[40] Pascal Scholl, Michael Schuler, Hannah JWilliams, Alexander A Eberharter, DanielBarredo, Kai-Niklas Schymik, Vincent Lien-hard, Louis-Paul Henry, Thomas C Lang,Thierry Lahaye, et al. Programmable quan-tum simulation of 2d antiferromagnets withhundreds of rydberg atoms. arXiv preprintarXiv:2012.12268, 2020.

[41] Sepehr Ebadi, Tout T Wang, HarryLevine, Alexander Keesling, Giulia Semegh-ini, Ahmed Omran, Dolev Bluvstein, RhineSamajdar, Hannes Pichler, Wen Wei Ho,et al. Quantum phases of matter on a256-atom programmable quantum simula-tor. arXiv preprint arXiv:2012.12281, 2020.

[42] Hannes Pichler, Sheng-Tao Wang, Leo Zhou,Soonwon Choi, and Mikhail D Lukin. Quan-tum optimization for maximum indepen-dent set using rydberg atom arrays. arXivpreprint arXiv:1808.10816, 2018.

[43] Loïc Henriet. Robustness to spontaneousemission of a variational quantum algorithm.Physical Review A, 101(1):012335, 2020.

[44] Constantin Dalyac, Loïc Henriet, Em-manuel Jeandel, Wolfgang Lechner, SimonPerdrix, Marc Porcheron, and MargaritaVeshchezerova. Qualifying quantum ap-proaches for hard industrial optimizationproblems. a case study in the field of smart-charging of electric vehicles. arXiv preprintarXiv:2012.14859, 2020.

[45] David C. McKay, Christopher J. Wood,Sarah Sheldon, Jerry M. Chow, and Jay M.Gambetta. Efficient z gates for quan-tum computing. Phys. Rev. A, 96:022330, Aug 2017. DOI: 10.1103/Phys-RevA.96.022330. URL https://link.aps.org/doi/10.1103/PhysRevA.96.022330.

[46] A. Fuhrmanek, R. Bourgain, Y. R. P. Sor-tais, and A. Browaeys. Free-space lossless

19

Page 20: Pulser: An open-source package for the design of pulse

state detection of a single trapped atom.Phys. Rev. Lett., 106:133003, Mar 2011.DOI: 10.1103/PhysRevLett.106.133003.URL https://link.aps.org/doi/10.1103/PhysRevLett.106.133003.

[47] Vincent Lienhard, Sylvain de Léséleuc,Daniel Barredo, Thierry Lahaye, AntoineBrowaeys, Michael Schuler, Louis-PaulHenry, and Andreas M Läuchli. Observ-ing the space-and time-dependent growth ofcorrelations in dynamically tuned syntheticising models with antiferromagnetic interac-tions. Physical Review X, 8(2):021070, 2018.

[48] Edward Farhi, Jeffrey Goldstone, and SamGutmann. A Quantum Approximate Op-timization Algorithm. arXiv e-prints, art.arXiv:1411.4028, Nov 2014.

[49] Kai-Niklas Schymik, Vincent Lienhard,Daniel Barredo, Pascal Scholl, HannahWilliams, Antoine Browaeys, and ThierryLahaye. Enhanced atom-by-atom assem-bly of arbitrary tweezer arrays. Phys. Rev.A, 102(6):063107, December 2020. DOI:10.1103/PhysRevA.102.063107.

[50] Hannes Pichler, Sheng-Tao Wang, Leo Zhou,Soonwon Choi, and Mikhail D. Lukin. Quan-tum Optimization for Maximum Indepen-dent Set Using Rydberg Atom Arrays. arXive-prints, art. arXiv:1808.10816, Aug 2018.

[51] Leo Zhou, Sheng-Tao Wang, Soonwon Choi,Hannes Pichler, and Mikhail D. Lukin.Quantum approximate optimization algo-rithm: Performance, mechanism, and imple-mentation on near-term devices. Phys. Rev.X, 10:021067, Jun 2020. DOI: 10.1103/Phys-RevX.10.021067. URL https://link.aps.org/doi/10.1103/PhysRevX.10.021067.

[52] Cirq Developers. Cirq, March 2021.URL https://doi.org/10.5281/zenodo.4586899. See full list of authors on Github:Cirq/graphs/contributors.

[53] Qiskit Developers. Qiskit: An open-sourceframework for quantum computing, 2019.

[54] Ville Bergholm, Josh Izaac, Maria Schuld,Christian Gogolin, M. Sohaib Alam, Shah-nawaz Ahmed, Juan Miguel Arrazola,Carsten Blank, Alain Delgado, Soran Ja-hangiri, Keri McKiernan, Johannes JakobMeyer, Zeyue Niu, Antal Száva, and NathanKilloran. PennyLane: Automatic differenti-ation of hybrid quantum-classical computa-

tions. arXiv e-prints, art. arXiv:1811.04968,November 2018.

[55] Seyon Sivarajah, Silas Dilkes, AlexanderCowtan, Will Simmons, Alec Edgington, andRoss Duncan. t|ket⟩: a retargetable com-piler for NISQ devices. Quantum Scienceand Technology, 6(1):014003, January 2021.DOI: 10.1088/2058-9565/ab8e92.

[56] Sylvain de Léséleuc, Daniel Barredo, VincentLienhard, Antoine Browaeys, and ThierryLahaye. Analysis of imperfections in thecoherent optical excitation of single atomsto Rydberg states. Phys. Rev. A, 97(5):053803, May 2018. DOI: 10.1103/Phys-RevA.97.053803.

20