Conversation
a-corni
commented
Dec 12, 2024
- Neutral-atom Hardware (A)
- What are the components of a neutral-atom QC ? How does it work ?
- Device
- What are the physical constraints explicited in a Device ?
- Channel
- What are the components of a Channel ?
- What are the example of devices present in Pulser ? (AnalogDevice, DigitalAnalogDevice, MockDevice)
- The simplest example: AnalogDevice
- Description of the contents of AnalogDevice
- The simplest example: AnalogDevice
… Device, adding the presence of EOM in Channel display
|
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
HGSilveri
left a comment
There was a problem hiding this comment.
Let's try to fix the build to help the review
| "source": [ | ||
| "As presented in the [introduction to programming a neutral-atom QPU](programming.md#writing-a-pulser-program), the first step to writing a Pulser program is [the selection of a `Device`](programming.md#pick-a-device). \n", | ||
| "\n", | ||
| "The `Device` object stores **all the physical constraints a quantum program written with `Pulser` should verify**, for it to be run on a neutral-atom QPU. The quantum programs, the `pulser.Sequence`, verify that each operation added to them are valid with respect to the constraints of the `Device`. " |
There was a problem hiding this comment.
I just realised that we never mentioned in the quick-start notebooks about the sequence initialisation besides a short sentence. Probably worth a step itself.
| "source": [ | ||
| "As presented in the [introduction to programming a neutral-atom QPU](programming.md#writing-a-pulser-program), the first step to writing a Pulser program is [the selection of a `Device`](programming.md#pick-a-device). \n", | ||
| "\n", | ||
| "The `Device` object stores **all the physical constraints a quantum program written with `Pulser` should verify**, for it to be run on a neutral-atom QPU. The quantum programs, the `pulser.Sequence`, verify that each operation added to them are valid with respect to the constraints of the `Device`. " |
There was a problem hiding this comment.
This sentence sounds a bit bizarre. We haven't said what a device is yet we say what it contains and why we care.
How about the Device object is a fundamental component of the abstract models of neutral atoms QPU used in Pulser. It stores inside the physical characteristics/aspects of the hardware, as for example the channels[link] which are supported.
Also, instead of saying physical constraints a program must verify, how about the physical constraint the user must be aware when writing a program in Pulser.
There was a problem hiding this comment.
-
When it comes to running a program on a QPU: Each QPU has an associated
Device, which you can get from the cloud provider you use to access this QPU. -
For sole designing purposes:
Pulserprovides examples of typical physical devices inpulser.devices. Notably,pulser.AnalogDeviceis an example of a QPU implementing an Ising Hamiltonian. -
For designing without physical constraints during the writing of your quantum program, you can use a
VirtualDevice. An example of such aVirtualDeviceis theMockDeviceprovided in thepulser.devices, which gives full liberty to write a quantum program.VirtualDeviceis detailed in an advanced tutorial.
| "cell_type": "markdown", | ||
| "metadata": {}, | ||
| "source": [ | ||
| "If you want to run a quantum program on a QPU, start by selecting the `Backend` associated with this QPU. From this `Backend` the `Device` associated with the QPU can be accessed via the `get_available_devices` method.\n", |
There was a problem hiding this comment.
I feel we're mixing up the goals: do we want to present the devices or something different? I feel confused reading this sentence. Same applies for next two paragraphs.