Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft Quantum Development Kit (QDK) comprende Python strumenti per sviluppare e testare i protocolli QEC (Quantum Error Correction). Usare il qdk.ec modulo per analizzare i codici di correzione degli errori, creare protocolli eseguibili, convalidare le dichiarazioni di protocollo e studiare i guasti del circuito. Usare qdk.simulation per eseguire programmi logici tramite tali protocolli.
Comprendere gli strumenti di correzione degli QDK errori
Il QDK flusso di lavoro di correzione degli errori usa questi pacchetti e moduli:
| Component | Usalo per |
|---|---|
qodec |
Definire e salvare codici, set di istruzioni, gadget, livelli e protocolli QEC completi. |
qdk.ec |
Analizzare codici e gadget, compilare qodec di base, derivare equazioni e verificare dichiarazioni di protocollo. |
qdk.simulation |
Eseguire Quantum Intermediate Representation programmi (QIR) tramite un qodec e applicare un decodificatore. |
qdk.simulation.decoders |
Selezionare il decodificatore di sindrome predefinito, tracciare i frame o connettersi al decodificatore facoltativo deq. |
qdk.qre |
Stimare lo spazio, il tempo e i costi degli errori dei modelli QEC per la stima fault-tolerant delle risorse. |
Un qodec è una descrizione formale di un protocollo QEC eseguibile. Connette le istruzioni logiche ai circuiti fisici attraverso uno o più livelli. Il qodec pacchetto definisce questo modello di dati e la relativa YAML rappresentazione. Il qdk.ec modulo deriva i fatti dal modello e controlla se le sue dichiarazioni corrispondono ai circuiti.
Per altre informazioni, vedere la qodec panoramica.
Il qdk.qre modulo ha uno scopo diverso. Modella il costo in termini di risorse di uno schema di correzione degli errori. Non definisce, controlla o esegue qodec gadget. Per altre informazioni sulla stima delle risorse quantistica in QDK, vedere Che cos'è lo strumento di stima delle risorse quantum Microsoft?
Comprendere i componenti del protocollo qodec
I componenti seguenti definiscono un qodec protocollo e ne supportano l'esecuzione.
| Component | Description |
|---|---|
| Code | Set statico di stabilizzatori e operatori logici che definiscono uno spazio di codice. |
| Set di istruzioni | Operazioni logiche o fisiche supportate da un livello qodec. |
| Gadget | Circuito che implementa un'istruzione tramite operazioni nel livello inferiore successivo. |
| Livello | Mapping da un set di istruzioni a un set di istruzioni di livello inferiore. |
| Codifica | Connessione tra blocchi logici e qubit di circuito in corrispondenza di un limite di gadget. |
| Controlla | Equazione di parità che deve essere uguale a zero quando la relazione dichiarata è valida. |
| Readout | Equazione che esegue il mapping dei risultati del circuito e dei segni di frame a un risultato logico o a un flag. |
| Flag | Readout con nome che indica se un'istruzione ha soddisfatto la condizione di accettazione. |
| Decoder | Componente che usa le evidenze di sindrome per dedurre correzioni e risultati logici. |
Un qodec può contenere diversi livelli. Il livello superiore può definire operazioni logiche su blocchi codificati. I gadget nel livello superiore possono richiamare le istruzioni nel livello inferiore successivo. Il livello inferiore contiene le operazioni fisiche eseguite dal simulatore.
Flusso di lavoro del protocollo di esempio
Un flusso di lavoro tipico prevede sei passaggi. I passaggi seguenti usano funzioni e classi del qdk.ec modulo.
- Definisci un codice. Creare un
qodec.Codecon stabilizzatori e operatori logici Pauli. - Analizza il codice. Usare la
CodeProfileclasse per esaminare gli operatori logici, calcolare le sindromi e calcolare la distanza del codice. - Creare o caricare un oggetto qodec. Usare la funzione
build_qodecper creare un protocollo di riferimento o caricare un qodec esistente da YAML. - Completare e convalidare il protocollo. Usare la funzione
filledper derivare equazioni di check e di readout supportate. Usare laauditfunzione per trovare dichiarazioni incoerenti o incomplete. - Analizza i guasti del circuito. Usare la
GadgetProfileclasse per ispezionare le azioni logiche, gli effetti dei guasti e la distanza dei gadget. - Esegui programmi logici Compilare codice OpenQASM o Q# in QIR. Passare QIR e qodec a
qdk.simulation.run_qir, quindi selezionare un decodificatore e un modello di rumore.
Il codice seguente illustra gli oggetti principali in questo flusso di lavoro:
import qodec
from qdk import ec
from qdk.simulation import run_qir
code = qodec.Code(
"C4",
stabilizers=["X_0 X_1 X_2 X_3", "Z_0 Z_1 Z_2 Z_3"],
x=["X_0 X_1", "X_0 X_2"],
z=["Z_0 Z_2", "Z_0 Z_1"],
)
code_profile = ec.CodeProfile(code)
print("Code distance:", code_profile.distance())
protocol = ec.build_qodec(code, strategy="bare-css/v1", strict=False)
print(ec.audit(protocol))
# Compile a logical program to QIR before you call run_qir.
# results = run_qir(qir, qodec=protocol, shots=100)
La bare-css/v1 strategia in questo esempio crea un semplice protocollo di base senza qubit di flag. Consente di controllare il flusso di lavoro, ma non garantisce dispositivi resistenti ai guasti. Usare gadget distance analysis prima di scegliere un'implementazione del protocollo.
Separare la convalida del protocollo dall'analisi degli errori
I controlli del protocollo e l'analisi della distanza valutano diversi aspetti di un protocollo QEC.
- I controlli del protocollo controllano se il protocollo dichiarato corrisponde ai circuiti e alle equazioni quando non si verificano guasti.
- L'analisi della distanza determina il numero minimo di errori consentiti o guasti ai circuiti che possono causare un errore logico non rilevato.
Usare la funzione audit per controllare la coerenza priva di rumore. Il controllo verifica l'algebra del codice, le dichiarazioni di istruzioni, le azioni gadget, i controlli, i valori visualizzati, i flag, le relazioni tra frame e i riferimenti tra oggetti qodec.
Un controllo che non segnala alcun problema non garantisce la tolleranza ai guasti. Un circuito può implementare l'azione logica corretta senza guasti e comunque non riuscire dopo un guasto fisico. Usare il CodeProfile.distance metodo per analizzare il codice e il GadgetProfile.distance metodo per analizzare ogni implementazione del circuito.
Prima di usare un protocollo per simulazioni rumorose, eseguire un controllo del protocollo e analizzare le distanze del codice e dei gadget.
Scegliere una strategia di costruzione
La build_qodec funzione supporta due strategie di costruzione di base CSS .
| Strategy | Description |
|---|---|
flagged-css/v1 |
Usa la costruzione contrassegnata CSS e seleziona il conteggio dei flag dalla distanza del codice. Questa strategia è l'impostazione predefinita. |
bare-css/v1 |
Non usa qubit di flag e ignora il calcolo della distanza che seleziona un conteggio dei flag. Usalo per l'ispezione e lo sviluppo iniziale. |
Entrambe le strategie tentano di creare queste istruzioni logiche:
prepare_z_allprepare_x_allsyndromemeasure_z_allmeasure_x_allh_allcx_all
Non tutti i codici supportano ogni candidato. Con l'impostazione strict=Truepredefinita , build_qodec genera un errore quando non riesce a compilare e verificare un'istruzione. Con strict=False, build_qodec mantiene le istruzioni supportate e registra ogni istruzione ignorata nei qodec metadati.
Scegliere l'attività successiva
- Per preparare un Python ambiente, vedere Come installare QDK per la correzione degli errori.
- Per definire un codice e creare un protocollo, vedere Sviluppare e convalidare un protocollo QEC.
- Per compilare, simulare e decodificare i programmi logici, vedere Eseguire e decodificare programmi logici.
Per un notebook completo che segue il flusso di lavoro completo, vedere Sviluppare e testare un protocollo QEC nel QDK repository.