Sdílet prostřednictvím


Kvantová zprostředkující reprezentace

Quantum Intermediate Representation (QIR) je průběžná reprezentace, která slouží jako společné rozhraní mezi kvantovými programovacími jazyky/architekturami a cílovými kvantovými výpočetními platformami. QIR určuje sadu pravidel pro reprezentaci kvantových programů pomocí jazyka a hardwarového nezávislého formátu v prostředí LLVM IR. QIR je projekt vyvinutý společností QIR Alliance, jehož členem je Microsoft.

Co je zprostředkující reprezentace?

Běžným vzorem v klasických kompilátorech je začít kompilací zdrojového jazyka do zprostředkující reprezentace. Zprostředkující reprezentace je – jak název označuje – zprostředkující krok při převodu instrukcí ze zdrojového kódu do strojového jazyka.

Zprostředkující reprezentace funguje jako abstraktní reprezentace programu. Všechny programy, bez ohledu na jazyk, ve kterém jsou napsané, jsou přeloženy do této přechodné reprezentace takzvaným front-endovým kompilátorem, zatímco back-endová komponenta je zodpovědná za překlad zprostředkující reprezentace do strojové reprezentace. Zprostředkující reprezentace tak umožňuje oddělit zdrojové jazyky od hardwarových platforem a umožňuje vytvořit kompilátor modulárním způsobem, kdy každý nový jazyk vyžaduje podporu pouze nového front-endu na všech platformách, pro které je back-end dostupný.

Průběžná reprezentace je obvykle navržená tak, aby umožňovala reprezentovat mnoho různých zdrojových jazyků. Na této přechodné úrovni je také možné provést určitou optimalizaci a uspořádání okruhu, díky čemuž je konečná implementace efektivnější. Jakmile je známa konečná target spouštěcí platforma, je možné zkompilovat zprostředkující reprezentaci do skutečného spustitelného kódu.

Tento přístup umožňuje mnoha zdrojovým jazykům sdílet společnou sadu optimalizátorů a generátorů spustitelných souborů. Také usnadňuje kompilaci jednoho zdrojového jazyka pro mnoho různých targets. Zprostředkující reprezentace poskytuje společnou platformu, kterou lze sdílet v mnoha zdrojích a targets umožňuje velké množství opětovného použití v strojích kompilátoru.

Co je Quantum Intermediate Representation?

QIR je průběžná reprezentace pro kvantové programy vyvinuté společností QIR Alliance, do které Patří Microsoft. Poskytuje společné rozhraní, které podporuje mnoho jazyků a target platforem pro kvantové výpočty. QIR si můžete představit jako univerzální jazyk střední vrstvy, který umožňuje komunikaci mezi jazyky vysoké úrovně a počítači. Zatímco Q# se zkompiluje do QIR, QIR není specifický pro Q#: žádná kvantová programovací architektura může využít QIR k reprezentaci kvantového programu. Je nezávislá na hardwaru, což znamená, že nezadá kvantovou instrukci nebo bránu, takže ji ponechá ve výpočetním target prostředí.

QIR je založen na oblíbeném opensourcovém klasickém kompilátoru LLVM . LLVM je kolekce modulárních a opakovaně použitelných technologií kompilátoru a nástrojů, které byly přizpůsobeny širokou sadou jazyků. QIR určuje sadu pravidel pro reprezentaci kvantových konstruktorů v LLVM, ale nevyžaduje žádná rozšíření ani úpravy LLVM.

Skutečnost, že LLVM je základní sada nástrojů, znamená, že QIR je přirozeně schopen zpracovávat jak klasickou, tak kvantovou logiku. Tato funkce je nezbytná pro hybridní kvantové a klasické algoritmy, které jsou stále důležitější pro aplikace kvantových výpočtů. Kromě toho umožňuje využít nástroje pro kompilaci a optimalizaci z klasického výpočetního odvětví, a proto snížit náklady na psaní překladů.

Řada předních odvětví kvantových výpočtů už technologii QIR přijala. Například NVIDIA, Oak Ridge National Laboratory, Quantinuum, Quantum Circuits Inc., a Rigetti Computing vytvářejí sady nástrojů, které využívají QIR.

Další informace najdete ve specifikaci QIR. Pokud vás zajímají nástroje kompilátoru a projekty, které používají QIR, podívejte se na tato úložiště QIR.

Co je QIR Alliance?

QIR Alliance je společné úsilí o vývoj dopředu vypadající kvantové přechodné reprezentace s cílem umožnit plnou interoperabilitu v rámci kvantového ekosystému, snížit úsilí o vývoj od všech stran a poskytnout reprezentaci vhodné pro současné a budoucí heterogenní kvantové procesory.

Kvantové sady SDK a jazyky se zobrazují a vyvíjejí rychlým tempem spolu s novými kvantovými procesory s jedinečnými a odlišnými možnostmi. Aby bylo možné zajistit interoperabilitu mezi novými jazyky a novými hardwarovými možnostmi, je nezbytné, aby ekosystém vyvinul a sdílel přechodné vyjádření, které funguje s současným a budoucím kvantovým hardwarem.

S jejich kolektivní prací a partnerstvím má QIR Alliance za cíl:

  • Snižte požadované úsilí o vývoj pro všechny strany podporou interoperability mezi různými architekturami a jazyky.
  • Povolte vývoj sdílených knihoven jak pro vývoj kvantových aplikací, tak pro vývoj kvantových kompilátorů.
  • Využijte nejmodernější technologii kompilátoru a využijte stávající nástroje, knihovny a poznatky z vysokovýkonného výpočetního prostředí.
  • Umožňuje přírůstkový a progresivní vývoj způsobu interakce klasických a kvantových výpočtů na úrovni hardwaru.
  • Poskytněte flexibilitu snadnému propojení nově vznikajících technologií způsobem, který umožňuje experimentování s odlišnými a diferencovanými hardwarovými možnostmi.

QIR Alliance je součástí společného vývojového nadace Linux Foundation na otevřených standardech. Mezi členy založení patří Microsoft, stejně jako Quantinuum (dříve Honeywell), Oak Ridge National Laboratory, Quantum Circuits Inc. a Rigetti Computing.

Quantum Intermediate Representation Jak vypadá?

Vzhledem k tomu, že QIR je založená na LLVM, QIR vypadá jako LLVM.

Představte si například následující Q# kód pro vygenerování páru Zvon:

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

Při kompilaci do QIR se stane toto:

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
}

V tomto fragmentu kódu můžete vidět několik funkcí QIR:

  • Operace v Q# (nebo jiném kvantovém programovacím jazyce) jsou reprezentovány funkcemi LLVM.
  • Qubity jsou reprezentovány jako ukazatele na pojmenovaný neprůkazný typ struktury volaný %Qubit.

I když je QIR operace CreateBellPair velmi jednoduchá, QIR dědí všechny možnosti LLVM do expresních smyček, podmíněných podmínek a dalších složitých toků řízení. QIR také dědí schopnost LLVM vyjádřit libovolný klasický výpočet.

Další informace najdete v relaci microsoftu pro vývojáře z události Q2B z roku 2021.

Proč je Quantum Intermediate Representation důležité?

QIR je základní nástroj při spouštění kvantových algoritmů na skutečném hardwaru. Ale přechodné reprezentace mohou hrát důležitou roli, i když chcete jen vyvíjet algoritmy na teoretickější úrovni.

Například jedna aplikace povolená QIR je použít kompilátor Clang, front-end jazyka C pro LLVM, ke kompilaci QIR do spustitelného strojového kódu pro klasickou target. To poskytuje snadnou cestu k vytvoření simulátoru v jazyce C nebo C++ implementací kvantových instrukcí, které by mohly zjednodušit vytváření kvantových simulátorů.

Kromě toho můžete pomocí zprostředkující reprezentace vygenerovat kód, který se později poskytne jako vstup do kvantového simulátoru – místo skutečného zařízení – který by mohl potenciálně použít jiný jazyk než zdrojový kód. Tímto způsobem můžete snadno porovnávat a testovat různé jazyky nebo simulátory pomocí společné architektury.

Z hlediska optimalizace kódu existují kroky optimalizace, které je možné provést na středně pokročilé úrovni, které můžou zefektivnit celkovou implementaci algoritmu. Zkoumání této optimalizace vstupního kódu vám může pomoct lépe pochopit, kde algoritmy zefektivnit a jak zlepšit kvantové programovací jazyky.

Další aplikací je použití standardní infrastruktury LLVM "pass" k vytvoření kvantových optimalizátorů kódu, které pracují s QIR. Přístup založený na jazyce a hardwaru technologie QIR umožňuje opakovaně využívat optimalizátory pro různé výpočetní jazyky a výpočetní platformy bez téměř žádného úsilí.