Kwantum tussenliggende weergave

Quantum Intermediate Representation (QIR) is een tussenliggende weergave die fungeert als een gemeenschappelijke interface tussen kwantumprogrammeertalen/-frameworks en targetplatformen voor kwantumberekeningen. QIR geeft een set regels op voor het vertegenwoordigen van kwantumprogramma's met behulp van een taal- en hardwareagnostische indeling binnen de LLVM IR. De QIR is een project dat is ontwikkeld door de QIR Alliance waarvan Microsoft lid is.

Wat is een tussenliggende weergave?

Een veelvoorkomend patroon in klassieke compilers is om te beginnen met het compileren van de brontaal in een tussenliggende weergave. Een tussenliggende weergave is - zoals de naam al aangeeft - een tussenstap in de conversie van instructies van broncode naar computertaal.

Een tussenliggende weergave fungeert als een abstracte weergave van een programma. Alle programma's, ongeacht de taal waarin ze zijn geschreven, worden in deze tussenliggende weergave vertaald door een zogenaamde front-endcomppilatie, terwijl een back-endonderdeel verantwoordelijk is voor het vertalen van die tussenliggende weergave naar een computerweergave. De tussenliggende weergave maakt het mogelijk om brontalen los te koppelen van hardwareplatforms en maakt het mogelijk om een compiler op een modulaire manier te bouwen, waarbij voor elke nieuwe taal alleen een nieuwe front-end vereist is die wordt ondersteund op alle platforms waarvoor een back-end beschikbaar is.

De tussenliggende weergave is doorgaans zo ontworpen dat veel verschillende brontalen kunnen worden weergegeven. Bovendien is het op dit tussenliggende niveau ook mogelijk om enkele optimalisaties en circuitherschikkingen uit te voeren die de uiteindelijke implementatie efficiënter maken. Zodra het uiteindelijke target uitvoeringsplatform bekend is, kan de tussenliggende weergave worden gecompileerd naar de werkelijke uitvoerbare code.

Met deze benadering kunnen veel brontalen een gemeenschappelijke set optimalisatieprogramma's en uitvoerbare generatoren delen. Het maakt het ook eenvoudig om één brontaal te compileren voor veel verschillende targets. De tussenliggende weergave biedt een gemeenschappelijk platform dat kan worden gedeeld met veel bronnen en targets dat veel hergebruik in compilermachines mogelijk maakt.

Wat is Quantum Intermediate Representationdat?

QIR is een tussenliggende representatie voor kwantumprogramma's die zijn ontwikkeld door de QIR Alliance, waartoe Microsoft behoort. Het biedt een algemene interface die ondersteuning biedt voor veel talen en target platforms voor kwantumberekeningen. U kunt QIR zien als een universele middelmatige taal waarmee communicatie tussen talen en machines op hoog niveau mogelijk is. Tijdens Q# het compileren naar QIR is QIR niet specifiek Q#voor : elk kwantumprogrammeerframework kan gebruikmaken van QIR om een kwantumprogramma te vertegenwoordigen. Het is hardware-agnostisch, wat betekent dat er geen kwantuminstructie of poortset wordt opgegeven, waardoor dit wordt overgelaten aan de target computeromgeving.

QIR is gebaseerd op de populaire klassieke open source LLVM-compiler . LLVM is een verzameling modulaire en herbruikbare compiler- en toolchaintechnologieën die zijn aangepast door een breed scala aan talen. QIR geeft een set regels op voor het vertegenwoordigen van kwantumconstructies in LLVM, maar er zijn geen extensies of wijzigingen in LLVM vereist.

Het feit dat LLVM de onderliggende toolchain is, betekent dat QIR op natuurlijke wijze zowel klassieke als kwantumlogica kan verwerken. Deze functie is essentieel voor hybride kwantum-klassieke algoritmen, die steeds belangrijker zijn geworden voor toepassingen van kwantumcomputing. Bovendien kunt u hiermee compilatie- en optimalisatiehulpprogramma's uit de klassieke computerindustrie gebruiken en zo de kosten voor het schrijven van vertalingen verlagen.

Veel toonaangevende kwantumcomputingindustrieën hebben QIR al overgenomen. NVIDIA, Oak Ridge National Laboratory, Quantinuum, Quantum Circuits Inc. en Rigetti Computing bouwen bijvoorbeeld hulpprogrammaketens die gebruikmaken van QIR.

Zie de QIR-specificatie voor meer informatie. Als u geïnteresseerd bent in compilerhulpprogramma's en projecten die gebruikmaken van QIR, bekijkt u deze QIR-opslagplaatsen.

Wat is de QIR Alliance?

De QIR Alliance is een gezamenlijke inspanning om een vooruitziende kwantuminterne vertegenwoordiging te ontwikkelen met als doel volledige interoperabiliteit binnen het kwantumecosysteem mogelijk te maken, de ontwikkelingsinspanning van alle partijen te verminderen en een vertegenwoordiging te bieden die geschikt is voor huidige en toekomstige, heterogene kwantumprocessors.

Kwantum-SDK's en -talen worden in een snel tempo weergegeven en ontwikkeld, samen met nieuwe kwantumprocessors met unieke en unieke mogelijkheden van elkaar. Om interoperabiliteit tussen nieuwe talen en nieuwe hardwaremogelijkheden te bieden, is het noodzakelijk dat het ecosysteem een tussenliggende representatie ontwikkelt en deelt die werkt met de huidige en toekomstige kwantumhardware.

Met hun gezamenlijke werk en partnerschap wil de QIR Alliance:

  • Verminder de vereiste ontwikkelingsinspanning voor alle partijen door de interoperabiliteit tussen verschillende frameworks en talen te bevorderen.
  • De ontwikkeling van gedeelde bibliotheken inschakelen voor zowel de ontwikkeling van kwantumtoepassingen als voor de ontwikkeling van kwantumcomp compilers.
  • Bouw voort op state-of-the-art compilertechnologie en maak gebruik van bestaande hulpprogramma's, bibliotheken en kennis van high-performance computing.
  • Sta incrementele en progressieve evolutie toe in de manier waarop klassieke en kwantumberekeningen op hardwareniveau kunnen samenwerken.
  • Biedt de flexibiliteit om eenvoudig opkomende technologieën te verbinden op een manier die experimenten met afzonderlijke en gedifferentieerde hardwaremogelijkheden mogelijk maakt.

De QIR Alliance maakt deel uit van het werk van de Linux Foundation Joint Development Foundation op het gebied van open standaarden. De oprichters zijn Onder andere Microsoft, Quantinuum (voorheen Honeywell), Oak Ridge National Laboratory, Quantum Circuits Inc. en Rigetti Computing.

Hoe ziet Quantum Intermediate Representation het eruit?

Omdat QIR is gebaseerd op LLVM, ziet QIR eruit als LLVM.

Overweeg bijvoorbeeld de volgende Q# code om een Bell-paar te genereren:

operation CreateBellPair(q1 : Qubit, q2 : Qubit) : Unit {
    H(q1);
    CNOT(q1, q2);
}

Wanneer gecompileerd naar QIR, wordt dit:

define void @CreateBellPair__body(%Qubit* %q1, %Qubit* %q2) {
entry:
  call void @__quantum__qis__h(%Qubit* %q1)
  call void @__quantum__qis__cnot(%Qubit* %q1, %Qubit* %q2)
  ret void
}

In dit fragment ziet u een aantal QIR-functies:

  • Bewerkingen in Q# (of een andere kwantumprogrammeertaal) worden vertegenwoordigd door LLVM-functies.
  • Qubits worden weergegeven als aanwijzers naar een benoemd ondoorzichtig structuurtype met de naam %Qubit.

Hoewel de QIR voor de CreateBellPair bewerking zeer eenvoudig is, neemt QIR alle mogelijkheden van LLVM over om lussen, voorwaardelijkheden en andere complexe controlestromen uit te drukken. QIR neemt ook het vermogen van LLVM over om willekeurige klassieke berekeningen uit te drukken.

Voor meer informatie watch Microsoft-ontwikkelaarssessie van de Q2B-gebeurtenis van 2021.

Waarom is Quantum Intermediate Representation belangrijk?

QIR is een essentieel hulpprogramma bij het uitvoeren van kwantumalgoritmen op echte hardware. Maar tussenliggende weergaven kunnen een belangrijke rol spelen, zelfs als u alleen algoritmen op een meer theoretisch niveau wilt ontwikkelen.

Een toepassing die door QIR wordt ingeschakeld, is bijvoorbeeld het gebruik van de Clang-compiler, een C-taalfront-end voor LLVM, om QIR te compileren in uitvoerbare computercode voor een klassieke target. Dit biedt een eenvoudig pad voor het bouwen van een simulator in C of C++ door de kwantuminstructies te implementeren, waardoor het maken van kwantumsimulators kan worden vereenvoudigd.

Bovendien kunt u de tussenliggende weergave gebruiken om code te genereren die later wordt geleverd als invoer in een kwantumsimulator - in plaats van een echt apparaat - dat mogelijk een andere taal dan de broncode gebruikt. Op deze manier kunt u eenvoudig verschillende talen of simulators vergelijken en benchmarken met behulp van een gemeenschappelijk framework.

Wat betreft codeoptimalisatie zijn er optimalisatiestappen die kunnen worden uitgevoerd op het tussenliggende niveau die de implementatie van het algoritme efficiënter kunnen maken. Door deze optimalisatie van uw invoercode te onderzoeken, krijgt u meer inzicht in waar u algoritmen efficiënter kunt maken en hoe u de kwantumprogrammeertalen kunt verbeteren.

Een andere toepassing is het gebruik van de standaard LLVM -pass-infrastructuur om kwantumcodeoptimalisaties te maken die op QIR worden uitgevoerd. De taal- en hardware-onafhankelijke benadering van QIR maakt het mogelijk om deze optimalisatiefuncties vrijwel zonder moeite opnieuw te gebruiken voor verschillende rekentalen en rekenplatforms.

Volgende stappen