-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature]: rydberg gate problem templates #88
Comments
Hi, @aarontrowbridge! This issue is interesting to me. I have basic experience with Julia, but I would like to try it. Do you have any examples you recommend? Thanks! |
Hey @victor-onofre, my collaborator @andgoldschmidt is going to send some details but what we would hopefully be able to do is set up a problem analogously to the quickstart example in the docs. So what needs to be worked out -- and I think we have an idea of how to do this -- is setting up the Hamiltonian eq. (1) in the paper for some specific parameters. The I would be happy to hop on discord with you to get into the details as we really want to make a push on this problem. |
Hi @victor-onofre! Like @aarontrowbridge said, we’ll start from the Hamiltonian (1) in Jandura and Pupillo. As a first pass, we can try to get a similar result in Piccolo without needing to be as clever 😄 First, let’s look at the Hamiltonian. It is defined as two 3 level systems, each system having Setting 1. Create a quantum system. RYDBERG = Dict(
"X" => [0 0 0; 0 0 1; 0 1 0],
"Y" => [0 0 0; 0 0 -1im; 0 1im 0],
"N" => [0 0 0; 0 0 0; 0 0 1]
)
H_drift = kron_from_dict("NN", RYDBERG)
H_drives = [
kron_from_dict("XI", RYDBERG) + kron_from_dict("IX", RYDBERG),
kron_from_dict("YI", RYDBERG) + kron_from_dict("IY", RYDBERG)
]
B = 1.0
system = QuantumSystem(B * H_drift, H_drives) 2. Create a target gate. CZ = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 -1]
levels = [3, 3]
embedding = [1:2, 1:2]
subspace_indices = get_subspace_indices(embedding, levels)
U_goal = EmbeddedOperator(
embed(CZ, system, subspace=subspace_indices),
subspace_indices,
levels
) 3. Define a unitary smooth pulse problem
4. Optimize for noise and uncertainty. |
Some caveats and notes:
|
Hi @andgoldschmidt and @aarontrowbridge, Thank you so much for the clear steps and explanations. I will start working on this tomorrow night (European time). Before starting with the actual problem, I will read your paper on Piccolo to better understand the tool. Then, I will go through the Jandura and Pupilo paper. |
Hi @andgoldschmidt and @aarontrowbridge, I have read your paper and the Rydberg atoms paper. Right now I understand the general steps. I wanted to run the example you have in Quickstart Guide but I have an error. Do you know what is the issue? As I mentioned before, my experience with Julia is basic. Sorry if it is a simple Julia error. Thanks! |
I changed from Ubuntu to Windows, and the |
It is possible that our published code is behind the source. Did you add the package with |
if you run |
this is a julia package registration issue we've been having, that honestly needs to be it's own issue. |
I fix the issue by installing it locally from the source. The problem was the package registration |
I have a couple of questions about the plots in the Quickstart Guide. What is the meaning of the different unitary operator U in the plots? For the one qubit example, you have 8? Why not 2? In your paper, you have an example of a Two-Qubit CNOT Gate Problem: And the results show the 4 different u in the hamiltonian: To me, the plots of the two qubits CNOT make sense, it shows the optimization of the different u to get to the correct state Thanks! |
Right! The unitary is a raw output here, so that means we have to account for all the free numbers. A single qubit means a 4 element unitary with real and imaginary parts, for a total of 8 real components. That's what the This is the state vector that we evolve in the code when we solve for a gate. |
Okay, now is clear to me. Thanks! In the one qubit example, we plot each unitary matrix element. Like in your example in the paper: I think the notation in Quickstart Guide confused me, sorry! How can I plot the pulse like in the CNOT example with Piccolo? |
there's actually a function, |
Hi @andgoldschmidt! Do you think you have time for a Discord call? Maybe tomorrow? It will help me a lot. My timezone is CEST. Thanks! |
Feature Description
We would love to compare Piccolo with the results in Time-Optimal Two- and Three-Qubit Gates for Rydberg Atoms.
This should be a straightforward task where one
src/quantum_system_templates/rydberg.jl
, which is only a two-levels-per-atom system.docs/literate/quickstart.jl
Implementation Guidelines
src/quantum_system_templates
, matching the style of the files therein.docs/literate/examples
docs/literate
folder for referencetest
with some simple tests for the functions exportedImportance
3
What does this feature affect?
Other information
No response
The text was updated successfully, but these errors were encountered: