Delen via


Geïntegreerde hybride problemen oplossen

Notitie

Deze inhoud is alleen van toepassing op de klassieke QDK.

Het ontwikkelen en uitvoeren van geïntegreerde hybride algoritmen op de nieuwste ondersteunde hardware is een nieuw en snel ontwikkelend veld. Dit artikel bevat een overzicht van de hulpprogramma's en methoden die momenteel beschikbaar zijn, samen met bekende problemen en wordt bijgewerkt als nieuwe functies worden ondersteund.

Functiebeperkingen en -beperkingen

De volgende tabel bevat de momenteel bekende beperkingen en beperkingen van de geïntegreerde hybride functieset. Als u zich bewust bent van deze beperkingen, kunt u fouten voorkomen tijdens het verkennen van geïntegreerde hybride programma's. Deze tabel wordt bijgewerkt naarmate de functionaliteit wordt uitgebreid.

Artikel Opmerkingen
Doelspecifieke feedback De QDK geeft feedback wanneer Q# taalfuncties niet worden ondersteund voor de geselecteerde target. Als u meer informatie wilt over de target-specifieke fouten die u kunt tegenkomen, gaat u naar de wikipagina van QIR.
Beperkingen voor klassieke registratie Elk ondersteund programma target heeft hardwarespecifieke klassieke registeraantallen en uw compilatie kan mislukken als het onderliggende programma meer klassieke registers gebruikt dan beschikbaar is. Deze fouten treden meestal op bij lusstructuren.

Foutberichten en probleemoplossing

Maximaal toegestaan aantal klassieke registers overschreden

  • Foutcode: honeywell - 1000
  • Foutbericht: 1000: Compileerfout: Het maximum aantal klassieke registers is overschreden
  • Type: Taakfout
  • Bron: doelcompilator

Deze fout kan optreden wanneer een programma waarvoor een aanzienlijk aantal klassieke registers is vereist, wordt ingediend. Sommige patronen die dit probleem kunnen veroorzaken, zijn voor lussen die een groot aantal iteraties bevatten, diep genest zijn als instructies of een groot aantal qubitmetingen.

operation ClassicalRegisterUsage() : Result { 
    use q = Qubit(); 
    use t = Qubit(); 
    mutable count = 0; 
    for _ in 1 .. 100 { 
        H(q); 
        if (MResetZ(q) == One) { 
            X(t); 
        } 
        if (MResetZ(t) == One) { 
            set count += 1; 
        } 
    } 
    return MResetZ(t); 
} 

Doelspecifieke transformatie is mislukt

  • Foutcode: QATTransformationFailed
  • Foutbericht: Het bericht is specifiek voor het programma
  • Type: Taakfout
  • Bron: Azure Quantum-service

Deze fout kan optreden omdat de Azure Quantum-service de QIR (QIR) van het programma Quantum Intermediate Representation niet kan transformeren om het programma op de opgegeven targetmanier uit te voeren. Het foutbericht bevat de details over QIR die het programma vertegenwoordigen en waardoor de validatie is mislukt. Er worden echter geen details weergegeven over de relatie tussen de fout en de broncode.

Als u dit probleem ondervindt, kan dit een fout zijn. Overweeg om een GitHub-probleem in de Q# opslagplaats te maken.