Sari la conținutul principal
Acest proiect este în versiune beta. Ai găsit o eroare? Deschide un issue pe GitHub. Ai o întrebare sau o idee? Întreabă în Discussions — ne-ar plăcea să aflăm părerea ta!
Cum este calitatea traducerii pe această pagină?

Casete îmbrăcate

Mecanismele fizice de zgomot care apar în timpul execuției circuitelor cuantice sunt contextuale. Când se aplică operații simultan pe seturi disjuncte de qubiți, profilul de zgomot al operației de ansamblu poate diferi de profilurile de zgomot ale părților componente dacă acestea ar fi aplicate izolat. În mod similar, pentru operațiile care ideal comută pe aceiași qubiți, profilul de zgomot asociat operațiilor individuale poate să nu comute și ar putea fi cu totul diferit dacă ordinea operațiilor s-ar schimba. Prin urmare, protocoalele de suprimare, atenuare și corectare a zgomotului trebuie să cunoască contextul în care acesta apare.

Samplomatic folosește instrucțiuni de tip casetă pentru a raționa despre colecții de operații de circuit care ar trebui tratate ca având un context de zgomot stabil, și folosește adnotări pe casete pentru a le permite utilizatorilor să declare și să configureze această intenție. Fiecare casetă este un domeniu care deține un set de qubiți, operațiile care acționează asupra acestor qubiți și o listă de adnotări. Adnotările Samplomatic specifică directive și îmbrăcări. Directivele specifică ce să se facă cu caseta, de exemplu, să se aplice twirling casetei. Îmbrăcările sunt grupuri de porți parametrizate care se adaugă în partea stângă sau dreaptă a casetei, de exemplu, un strat de porți cu un singur qubit. Porțile dintr-o îmbrăcare încorporează porți din casetă și operații necesare pentru a pune în aplicare directivele, cum ar fi următoarele:

  • Porți din casetă care sunt compatibile cu porțile parametrizate și se află pe aceeași parte cu acestea.

  • Porți de twirling eșantionate dintr-un set pentru a randomiza caseta.

  • Porți de injectare a zgomotului eșantionate dintr-o hartă Pauli Lindblad.

  • Porți de schimbare a bazei specificate de utilizator.

Reține că directivele pot modifica îmbrăcările altor casete.

Exemplu​

Să presupunem că vrem să aplicăm twirling următorului circuit, adăugând porți Pauli aleatorii înainte și după porțile de încâlcire paralele, care nu schimbă conținutul logic al circuitului, dar schimbă modelul de zgomot efectiv.

../_images/undressed_pauli.drawio.png

Circuit pentru twirling Pauli.

Acest lucru se realizează prin stratificarea circuitului în casete și adăugarea adnotărilor de twirling.

../_images/dressed_pauli_twirl.drawio.png

Circuit cu directive de twirling Pauli. Simbolul @ este folosit pentru a specifica directivele, iar îmbrăcarea este implicit în stânga.

Fiecare casetă îmbrăcată conține un strat de porți cu un singur qubit și un strat de porți de încâlcire cu doi qubiți pe perechi disjuncte de qubiți. Stratul de porți de încâlcire este înconjurat de straturi de porți Pauli aleatorii, astfel încât acțiunea logică a casetei rămâne neschimbată. Aceste straturi Pauli aleatorii sunt virtuale, în același mod ca o poartă Z virtuală. Ele nu adaugă operații circuitului, ci acționează ca o directivă care modifică modul în care sunt implementate porțile adiacente cu un singur qubit.

../_images/pauli_twirl.drawio.png

Circuit cu îmbrăcări și porți provenite din directive. Îmbrăcările sunt casetele punctate. Straturile Pauli legate prin săgeți se anulează reciproc. Ultimul strat Pauli va fi aplicat ca inversări de biți asupra rezultatelor măsurătorilor.

Stratul Pauli aleatoriu dintre porțile de încâlcire și porțile cu un singur qubit este compus în stratul de porți cu un singur qubit și este implementat în îmbrăcarea acestuia. Celălalt strat Pauli aleatoriu va fi compus în îmbrăcarea următoarei casete îmbrăcate.

Pe scurt, directiva de twirling stânga (sau dreapta) implementează un Pauli aleatoriu în îmbrăcarea acestei casete și aplică Pauli-ul care îl anulează în îmbrăcarea casetei următoare (sau anterioare). Directivele de injectare a zgomotului și de schimbare a bazei sunt analoage.

Randomizarea circuitului cu porți virtuale​

Samplomatic folosește cadrul porților virtuale pentru a raționa despre circuite cu casete îmbrăcate. Conceptual, și așa cum este implementat într-o instanță Samplex produsă de procesul build(), porțile virtuale sunt generate la granița casetei opusă îmbrăcării sale. Aceste porți virtuale sunt mutate prin circuit într-un mod prestabilit și trebuie compuse într-o îmbrăcare. Dacă toate porțile virtuale pot fi compuse într-o îmbrăcare, randomizările circuitului pot fi construite procedural.

../_images/dressed_box.drawio.png

Circuit cu directive de twirling, schimbare a bazei și injectare a zgomotului.

Porțile de pe partea îmbrăcării care sunt compatibile cu parametrizarea șablonului îmbrăcării pot fi compuse în aceasta, reducând numărul de porți fizice. Acestea se numesc porți ușoare. Restul casetei se numește dificil și este implementat ca atare.

../_images/dressed_box_uncollected.drawio.png

Exemple de circuite cu porți virtuale rămase în aer. Porțile virtuale de pe partea opusă a îmbrăcării nu au unde să fie implementate.

../_images/dressed_box_collected.drawio.png

Exemple de circuite în care toate porțile virtuale sunt compuse în îmbrăcări. Măsurătorile au porți Pauli compuse prin luarea în considerare a inversării de bit pe care o induc.

../_images/dressed_box_mixed_collect.drawio.png

Exemplu complex în care toate porțile virtuale sunt colectate. Porțile virtuale generate de o casetă pot fi compuse în îmbrăcări diferite.

Acest lucru permite construcții în care casetele îmbrăcate nu trebuie să aibă aceeași lățime.