-
Notifications
You must be signed in to change notification settings - Fork 25
Piecemaker #288
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
base: master
Are you sure you want to change the base?
Piecemaker #288
Changes from 35 commits
d8b724e
337fc92
39ae298
54d9ad2
307fd09
f7a3f47
8a14160
0957cf6
0aaeae1
be08d75
81f12d1
cef2e06
467a314
77631f2
e7d4349
5ab85ce
46681bb
badefaa
3a40643
9a12dd6
751c5b1
e9761d6
83276fe
c032be4
b81b390
87a5816
47e6134
1847ccc
c703404
38d0784
315a4ab
720fd3e
1b4b477
ff44bee
97caf9e
ca48d0d
6ae9e1a
31b6b2a
5c23612
669528c
502d33f
e82c3a5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| [deps] | ||
| Bonito = "824d6782-a2ef-11e9-3a09-e5662e0c26f8" | ||
| CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" | ||
| Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" | ||
| ConcurrentSim = "6ed1e86c-fcaf-46a9-97e0-2b26a2cdb499" | ||
| DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" | ||
| Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" | ||
| GLMakie = "e9467ef8-e4e7-5192-8a1a-b1aee30e663a" | ||
| GraphMakie = "1ecd5474-83a3-4783-bb4f-06765db800d2" | ||
| Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" | ||
| NetworkLayout = "46757867-2c16-5918-afeb-47bfcb05e46a" | ||
| QuantumClifford = "0525e862-1e90-11e9-3e4d-1b39d7109de1" | ||
| QuantumSavory = "2de2e421-972c-4cb5-a0c3-999c85908079" | ||
| ResumableFunctions = "c5292f4c-5179-55e1-98c5-05642aab7184" | ||
| Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" | ||
| Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" | ||
| WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| # System Overview | ||
|
||
| The goal is to share a GHZ state among multiple users. To do so, the clients connect to a central switch node, which then serves the GHZ state to them. Each of the $n$ clients can store one memory qubit in its memory buffer and one qubit at the switch side. In addition the switch's register holds a dedicated 'piecemaker' slot - a qubit in the $|+\rangle$ state, which all successfull clients fuse their switch'side qubits with. | ||
|
|
||
| # Entanglement Distribution | ||
| In each time step, $n$ entanglement processes run in parallel. Upon completion of an entanglement link, it is fused with the piecemaker qubit. Once all clients went through this fusion operation, the piecemaker qubit is measured. This projects the state back to the clients, resulting in the desired shared GHZ state. | ||
|
|
||
| # Fusion Operation | ||
| The fusion operation is performed on the switch node. Let's take a client who just managed to generate a bipartide entangled state -- entangled link -- with its associated qubit at the switch side. The switch executes a `CNOT` gate on the client's qubit (target) and the piecemaker qubit (control). Next, the switch measures the client qubit in the computational basis and sends the outcome to the client (in order to apply the necessary Pauli correction). This procedure merges the bipartide state into the (entangled) state that the piecemaker qubit is currently part of, modulo any required Pauli corrections. | ||
|
|
||
| # Noise | ||
| The memories residing in the nodes' `Register`s suffer from depolarizing noise, see [`Depolarization`](https://github.com/QuantumSavory/QuantumSavory.jl/blob/2d40bb77b2abdebdd92a0d32830d97a9234d2fa0/src/backgrounds.jl#L18). | ||
|
||
|
|
||
| ### Protocol flow | ||
|
|
||
| ```mermaid | ||
| sequenceDiagram | ||
| participant Client1 | ||
| participant ClientN | ||
|
|
||
| participant SwitchNode | ||
| participant Log | ||
|
|
||
| Note over Client1,SwitchNode: Round 1 (1 unit time) | ||
| par Entanglement Generation | ||
| Client1->>+SwitchNode: Try to generate entanglement | ||
| ClientN->>+SwitchNode: Try to generate entanglement | ||
| end | ||
|
|
||
| SwitchNode->>SwitchNode: Run fusions with successful clients | ||
|
|
||
| par Send Measurement Outcomes | ||
| SwitchNode-->>-Client1: Send measurement outcomes | ||
| SwitchNode-->>-ClientN: Send measurement outcomes | ||
| end | ||
|
|
||
| par Apply Corrections (No time cost) | ||
| Client1->>Client1: Apply correction gates | ||
| ClientN->>ClientN: Apply correction gates | ||
| end | ||
|
|
||
| loop Check Fusion Status (No time cost) | ||
| SwitchNode->>SwitchNode: Check if all clients are fused | ||
| alt All clients fused | ||
| SwitchNode->>SwitchNode: Measure piecemaker | ||
| SwitchNode->>SwitchNode: Compute fidelity to GHZ state | ||
| SwitchNode->>Log: Log fidelity and time | ||
| SwitchNode->>SwitchNode: Trigger STOP | ||
| else | ||
| SwitchNode->>SwitchNode: Keep checking | ||
| end | ||
| end | ||
| ``` | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. check the readme of https://github.com/QuantumSavory/QuantumSavory.jl/tree/master/examples/simpleswitch and https://github.com/QuantumSavory/QuantumSavory.jl/tree/master/examples/state_explorer to add similar structural components like a spelled out link to docs and a link to live example (just make up one in the same style, e.g. areweentagledyet...../PICK_A_NAME) -- I will make sure it runs by the time we merge this |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the tests run with a different project.toml file -- in case some tests fail with a missing dependency, probably you just need to add the dependency to the test project.toml
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
when I run
julia --project=. runtests.jlintestI get the following error"ERROR: LoadError: UndefVarError:
onchangenot defined inMain.var"##234""There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that might be because of a weird setup for your project environment; we can debug it with
] status