You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/home/background.md
+4-5Lines changed: 4 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,7 @@ For a more nuanced and in-depth read about the neutral atoms that Bloqade and *A
10
10
11
11
## Analog vs Digital Quantum Computing
12
12
13
-
There are two modes of quantum computation that [neutral atoms](#neutral-atom-qubits) are capable of: [*Analog*](#analog-mode) and [*Digital*](#digital-mode).
13
+
There are two modes of quantum computation that [neutral atoms](#neutral-atom-qubits) are capable of: [*Analog*](#analog-mode) and [*Digital*](#digital-mode).
14
14
15
15
You can find a brief explanation of the distinction below but for a more in-depth explanation you can refer to QuEra's qBook section on [Analog vs Digital Quantum Computing](https://qbook.quera.com/learn/?course=6630211af30e7d0013c66147&file=6630211af30e7d0013c6614a)
16
16
@@ -46,11 +46,11 @@ The [Rydberg Many-Body Hamiltonian](#rydberg-many-body-hamiltonian) already impl
46
46
They are a sum of one or more *spatial modulations*, which allows you to *scale* the amplitude of the waveform across the different sites in the system:
In a [Jupyter Notebook](https://jupyter.org/) you'll need to type `.` and then hit tab for the hints to appear:
24
24
@@ -85,7 +85,7 @@ After you've [defined a geometry](#defining-atom-geometry) you:
85
85
* Specify `detuning`, `rabi.amplitude` or `rabi.phase`
86
86
* Specify the [spatial modulation][local-control]
87
87
88
-
Which then leads you to the ability to specify a waveform of interest and begin constructing your pulse sequence.
88
+
Which then leads you to the ability to specify a waveform of interest and begin constructing your pulse sequence.
89
89
In the example below, we target the ground-Rydberg level coupling to drive with uniform [spatial modulation][local-control] for the Rabi amplitude. Our waveform is a piecewise linear one which ramps from $0$ to $5 \,\text{rad/us}$, holds that value for $1 \,\text{us}$ and then ramps back down to $0 \,\text{rad/us}$.
In this form you can immediately [emulate](#emulation) it if you'd like but to run this on [hardware](#submitting-to-hardware) you need to discretize it. The waveform on hardware has to either be:
132
+
In this form you can immediately [emulate](#emulation) it if you'd like but to run this on [hardware](#submitting-to-hardware) you need to discretize it. The waveform on hardware has to either be:
133
133
134
134
* Piecewise linear for Rabi amplitude and detuning terms of the Hamiltonian
135
135
* Piecewise constant for the Phase term of the Hamiltonian
Programs that have custom functions as waveforms are not fully serializable. This means that when you are [saving and reloading results](#saving-and-loading-results), the original embedded program will be missing that custom waveform. You will still be able to analyze the saved results!
149
+
Programs that have custom functions as waveforms are not fully serializable. This means that when you are [saving and reloading results](#saving-and-loading-results), the original embedded program will be missing that custom waveform. You will still be able to analyze the saved results!
This program will run fine in [emulation](#emulation) but due to hardware constraints certain waveforms (such as those targeting the Rabi Amplitude), the waveform needs to start and end at $0 \,\text{rad}/\text{us}$. Thus, there needs to be a way to slice our waveform but also add an end component to that waveform. `.record` in Bloqade lets you literally "record" the value at the end of a `.slice` and then use it to construct further parts of the waveform.
175
175
176
-
In the program below the waveform is still sliced but with the help of `.record` a linear segment that pulls the waveform down to $0.0 \,\text{rad}/\text{us}$ from whatever its current value at the slice is in $0.7 \,\text{us}$ is added.
176
+
In the program below the waveform is still sliced but with the help of `.record` a linear segment that pulls the waveform down to $0.0 \,\text{rad}/\text{us}$ from whatever its current value at the slice is in $0.7 \,\text{us}$ is added.
177
177
178
178
```python
179
179
from bloqade import start
@@ -219,7 +219,7 @@ pulse_sequence.show()
219
219
And when you're content with it you just `.apply()` it on the geometries of your choice:
220
220
221
221
```python
222
-
from bloqade.atom_arrangement import Honeycomb, Kagome
222
+
from bloqade.atom_arrangement import Honeycomb, Kagome
223
223
224
224
geometry_1 = Honeycomb(2, lattice_spacing=6.0)
225
225
geometry_2 = Kagome(2, lattice_spacing=6.0)
@@ -318,7 +318,7 @@ report.rydberg_densities()
318
318
```
319
319
```
320
320
0 1
321
-
task_number
321
+
task_number
322
322
0 0.053 0.054
323
323
```
324
324
@@ -334,7 +334,7 @@ report.show()
334
334
335
335
## Parameter Sweeps
336
336
337
-
You can easily do parameter sweeps in emulation and on *Aquila* with variables. Bloqade automatically detects strings in your program as variables that you can later assign singular or multiple values to.
337
+
You can easily do parameter sweeps in emulation and on *Aquila* with variables. Bloqade automatically detects strings in your program as variables that you can later assign singular or multiple values to.
338
338
339
339
In the example below, we define a program with a singular variable that controls the amplitude of the waveform.
Copy file name to clipboardExpand all lines: docs/index.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ from bloqade.atom_arrangement import Honeycomb
36
36
geometry = Honeycomb(2, lattice_spacing=10.0)
37
37
```
38
38
39
-
We can verify what the atom geometry looks like by `.show()`'ing it:
39
+
We can verify what the atom geometry looks like by `.show()`'ing it:
40
40
41
41
```python
42
42
geometry.show()
@@ -60,7 +60,7 @@ rabi_program = (
60
60
)
61
61
```
62
62
<!--explain what uniform is-->
63
-
Here `rabi.amplitude` means exactly what it is, the Rabi amplitude term of the [Hamiltonian][rydberg-hamiltonian]. `uniform` refers to applying the waveform uniformly across all the atom locations.
63
+
Here `rabi.amplitude` means exactly what it is, the Rabi amplitude term of the [Hamiltonian][rydberg-hamiltonian]. `uniform` refers to applying the waveform uniformly across all the atom locations.
64
64
65
65
We can visualize what our program looks like again with `.show()`:
66
66
@@ -88,7 +88,7 @@ Which gives us:
88
88
[OrderedDict([('0', 55), ('1', 45)])]
89
89
```
90
90
91
-
If we want to submit our program to hardware we'll need to adjust the waveform as there is a constraint the Rabi amplitude waveform must start and end at zero.
91
+
If we want to submit our program to hardware we'll need to adjust the waveform as there is a constraint the Rabi amplitude waveform must start and end at zero.
92
92
This is easy to do as we can build off the atom geometry we saved previously but apply a piecewise linear waveform:
93
93
94
94
```python
@@ -106,8 +106,8 @@ hardware_rabi_program.show()
106
106
</picture>
107
107
</div>
108
108
109
-
Now instead of using the built-in Bloqade emulator we submit the program to *Aquila*. You will need to use the [AWS CLI](https://aws.amazon.com/cli/) to obtain credentials from your AWS account
110
-
or set the proper environment variables before hand.
109
+
Now instead of using the built-in Bloqade emulator we submit the program to *Aquila*. You will need to use the [AWS CLI](https://aws.amazon.com/cli/) to obtain credentials from your AWS account
110
+
or set the proper environment variables before hand.
0 commit comments