Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Microsoft Quantum Development-kit (QDK) bevat Python hulpprogramma's voor het ontwikkelen en testen van quantumfoutcorrectieprotocollen. Gebruik de qdk.ec module om foutcorrectiecodes te analyseren, uitvoerbare protocollen te bouwen, protocoldeclaraties te valideren en fouten in het circuit te bestuderen. Gebruik qdk.simulation om logische programma's uit te voeren via deze protocollen.
Begrijp de QDK hulpprogramma's voor foutcorrectie
De QDK werkstroom voor foutcorrectie maakt gebruik van deze pakketten en modules:
| Component | Gebruik het om |
|---|---|
qodec |
Codes, instructiesets, gadgets, lagen en volledige QEC-protocollen definiëren en opslaan. |
qdk.ec |
Analyseer codes en gadgets, bouw basislijn qodecs, leid vergelijkingen af en controleer protocolverklaringen. |
qdk.simulation |
Voer Quantum Intermediate Representation (QIR) programma's uit via een qodec en pas een decoder toe. |
qdk.simulation.decoders |
Selecteer de ingebouwde syndroomdecoder, trackframes of maak verbinding met de optionele deq decoder. |
qdk.qre |
Maak een schatting van de ruimte, tijd en foutkosten van QEC-modellen voor fouttolerante resourceraming. |
Een qodec is een formele beschrijving van een uitvoerbaar QEC-protocol. Het verbindt logische instructies met fysieke circuits via een of meer lagen. Het qodec pakket definieert dit gegevensmodel en de YAML weergave ervan. De qdk.ec module leidt feiten af van het model en controleert of de declaraties overeenkomen met de circuits.
Zie het qodec overzicht voor meer informatie.
De qdk.qre module heeft een ander doel. Hiermee worden de resourcekosten van een foutcorrectieschema gemodelleerd. Er worden geen gadgets gedefinieerd, geaudit of uitgevoerd qodec gadgets. Voor meer informatie over kwantumresourceschatting in de , zie QDK
Begrijp de qodec protocolonderdelen
De volgende onderdelen definiëren een qodec protocol en ondersteunen de uitvoering ervan.
| Component | Description |
|---|---|
| Code | Een statische set stabilisatoren en logische operators die een coderuimte definiëren. |
| Instructieset | De logische of fysieke bewerkingen die een qodec laag ondersteunen. |
| Gadget | Een circuit dat een instructie implementeert via bewerkingen in de volgende onderste laag. |
| Laag | Een toewijzing van één instructieset naar een instructieset op lager niveau. |
| Codering | De verbinding tussen logische blokken en circuit qubits op een gadgetgrens. |
| Controle | Een pariteitsvergelijking die gelijk moet zijn aan nul wanneer de gedeclareerde relatie geldt. |
| Uitlezing | Een functie die circuitresultaten en frametekens toewijst aan een logische uitkomst of markering. |
| Flag | Een benoemde uitlezing die rapporteert of een instructie aan de acceptatievoorwaarde heeft voldaan. |
| Decoder | Een onderdeel dat gebruikmaakt van syndroom-bewijs om correcties en logische resultaten af te leiden. |
Een qodec kan verschillende lagen bevatten. De bovenste laag kan logische bewerkingen definiëren voor gecodeerde blokken. De gadgets in de bovenste laag kunnen instructies aanroepen in de laag direct eronder. De onderste laag bevat de fysieke bewerkingen die de simulator uitvoert.
Voorbeeld van protocolworkflow
Een typische werkstroom heeft zes stappen. In de volgende stappen worden functies en klassen uit de qdk.ec module gebruikt.
- Definieer een code. Maak een
qodec.Codemet stabilisatoren en logische Pauli operators. - Analyseer de code. Gebruik de
CodeProfileklasse om logische operatoren te inspecteren, syndromen te berekenen en de codeafstand te berekenen. - Bouw of laad een qodec. Gebruik de
build_qodecfunctie om een basislijnprotocol te maken of een bestaand qodec vanuit YAML te laden. - Voltooi en valideer het protocol. Gebruik de functie
filledom ondersteunde controlebit- en uitleesvergelijkingen af te leiden. Gebruik deauditfunctie om inconsistente of onvolledige declaraties te vinden. - Circuitfouten analyseren. Gebruik de
GadgetProfileklasse om logische acties, fouteffecten en gadgetafstand te inspecteren. - Logische programma's uitvoeren. Compileer Q# of OpenQASM code naar QIR. Geef QIR en
qdk.simulation.run_qirdoor aan qodec, en selecteer vervolgens een decoder en ruismodel.
De volgende code toont de hoofdobjecten in deze werkstroom:
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)
Met bare-css/v1 de strategie in dit voorbeeld wordt een eenvoudig basislijnprotocol gemaakt zonder flagqubits. Het helpt u bij het inspecteren van de workflow, maar garandeert geen fouttolerante gadgets. Gebruik gadgetafstandsanalyse voordat u een protocol-implementatie kiest.
Protocolvalidatie scheiden van foutanalyse
Protocolcontroles en afstandsanalyse beoordelen verschillende aspecten van een QEC-protocol.
- Protocolcontroles controleren of het gedeclareerde protocol overeenkomt met de circuits en vergelijkingen wanneer er geen fouten optreden.
- De afstandsanalyse bepaalt het minimale aantal toegestane fouten of circuitstoringen waarbij een logische fout onopgemerkt blijft.
Gebruik de audit functie om ruisloze consistentie te controleren. De audit controleert code algebra, instructiedeclaraties, gadgetacties, controles, lees-outs, vlaggen, framerelaties en verwijzingen tussen qodec objecten.
Een controle die geen problemen rapporteert, garandeert geen fouttolerantie. Een circuit kan de juiste logische actie zonder fouten implementeren en nog steeds mislukken na één fysieke fout. Gebruik de CodeProfile.distance methode om de code en de GadgetProfile.distance methode te analyseren om elke circuit-implementatie te analyseren.
Voordat u een protocol gebruikt voor ruissimulaties, voert u een protocolaudit uit en analyseert u code- en gadgetafstanden.
Een bouwstrategie kiezen
De build_qodec functie ondersteunt twee baseline-constructiestrategieën CSS.
| Strategy | Description |
|---|---|
flagged-css/v1 |
Maakt gebruik van de gemarkeerde CSS constructie en selecteert het aantal vlaggen op basis van de codeafstand. Deze strategie is de standaardinstelling. |
bare-css/v1 |
Gebruikt geen vlag-qubits en slaat de berekening van de afstand over die een vlagaantal selecteert. Gebruik het voor inspectie en vroege ontwikkeling. |
Beide strategieën proberen deze logische instructies te maken:
prepare_z_allprepare_x_allsyndromemeasure_z_allmeasure_x_allh_allcx_all
Niet elke code ondersteunt elke optie. Met de standaardinstelling strict=True geeft build_qodec een fout wanneer het geen instructie kan bouwen en verifiëren. Met strict=False behoudt build_qodec de ondersteunde instructies en registreert elke overgeslagen instructie in de qodec metagegevens.
Uw volgende taak kiezen
- Zie Python om een QDK-omgeving voor te bereiden.
- Om een code te definiëren en een protocol op te stellen, zie Een QEC-protocol ontwikkelen en valideren.
- Als u logische programma's wilt compileren, simuleren en decoderen, raadpleegt u Logische programma's uitvoeren en decoderen.
Zie Een QEC-protocol ontwikkelen en testen in de QDK opslagplaats voor een volledig notebook dat de volledige werkstroom volgt.