-
Notifications
You must be signed in to change notification settings - Fork 9
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! |
Can I learn the code about Time-Optimal Two- and Three-Qubit Gates for Rydberg Atoms, I cannot reproduce it, however, I really want to learn how it is implemented. I would greatly appreciate it if you could provide me with any assistance. @andgoldschmidt @aarontrowbridge @victor-onofre @zacmanchester @circuitqed |
In fact, the answer |
This might be something that can be better addressed in an Office Hour on the Unitary Fund Discord: |
Hi Fuqiang, I am working on that template and will update at the end of this year. Thanks,Hong-YeHong-Ye Hu, Ph.D.Department of Physics,Harvard University, Cambridge, MAOn Nov 23, 2024, at 10:29 AM, Andy Goldschmidt ***@***.***> wrote:
This might be something that can be better addressed in an Office Hour on the Unitary Fund Discord:
Piccolo.jl Office Hours (13:00 PDT | 16:00 EDT | 22:00 CEST)
Unitary Fund's 🔗 𝗗𝗶𝘀𝗰𝗼𝗿𝗱: buff.ly/3R0YsHf
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Thank you very much@andgoldschmidt @hongyehu. Could you first briefly explain the approach to this article? Maybe I can try writing it first. I cannot to solve this parameter 'theta', which is target-dependent. So I cannot write the target state. If you can help me. I would be very grateful.@hongyehu |
hey @gfq960906 i think to help you get things running it would be fine to start solving problem with a fixed θ, and then once that's running we can help you make the changes to implement a "free phase objective" which is in the codebase (here) but is very experimental atm |
Thank you, I will try to do it. If I have any new progress, I hope you can help me again. @aarontrowbridge |
Hello, Have you made any progress on the template for this article (Time-Optimal Two- and Three-Qubit Gates for Rydberg Atoms)? @hongyehu |
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: