Kvantum köztes reprezentáció

Quantum Intermediate Representation A (QIR) egy köztes reprezentáció, amely a kvantumprogramozási nyelvek/keretrendszerek és targetaz ed kvantumszámítási platformok közös felületeként szolgál. A QIR olyan szabályok készletét határozza meg, amelyek a kvantumprogramokat nyelvi és hardveres agnosztikus formátumban képviselik az LLVM integrációs modulon belül. A QIR egy olyan projekt, amelyet a QIR Alliance fejlesztett ki, amelynek a Microsoft az egyik tagja.

Mi az a köztes reprezentáció?

A klasszikus fordítókban gyakran előfordul, hogy a forrásnyelvet egy köztes reprezentációba kell összeállítani. A köztes reprezentáció – ahogy a neve is jelzi – a forráskódból a gép nyelvére történő átalakítás köztes lépése.

A köztes reprezentáció egy program absztrakt reprezentációjaként működik. Az összes programot, függetlenül attól, hogy az adott nyelven vannak-e megírva, egy úgynevezett előtér-fordító fordítja le erre a köztes reprezentációra, míg a háttérösszetevő feladata, hogy ezt a köztes reprezentációt gépi reprezentációvá fordítsa. A köztes reprezentáció lehetővé teszi a forrásnyelvek hardverplatformoktól való elkülönítését, és lehetővé teszi egy fordító moduláris módon történő összeállítását, ahol minden új nyelvhez csak egy új előtér szükséges, amelyet minden olyan platformon támogatni kell, amelyhez háttérrendszer érhető el.

A köztes reprezentáció általában úgy van kialakítva, hogy számos különböző forrásnyelv jelenjen meg. Ezen a köztes szinten bizonyos optimalizálási és áramkör-átrendezési műveletek is elvégezhetők, amelyek hatékonyabbá teszik a végső megvalósítást. A végső target végrehajtási platform ismerete után a köztes reprezentáció lefordítható a tényleges végrehajtható kódra.

Ez a megközelítés számos forrásnyelv számára lehetővé teszi az optimalizálók és végrehajtható generátorok közös készletének megosztását. Emellett egyszerűvé teszi egyetlen forrásnyelv fordítását is számos különböző targetsnyelvhez. A köztes reprezentáció egy közös platformot biztosít, amely számos forrás között megosztható, és targets nagy mennyiségű újrafelhasználást tesz lehetővé a fordítógépekben.

Mi az?Quantum Intermediate Representation

A QIR a QIR Alliance által fejlesztett kvantumprogramok köztes reprezentációja, amelyhez a Microsoft is tartozik. Ez egy közös felületet biztosít, amely számos nyelvet és target platformot támogat a kvantumszámításhoz. A QIR-t univerzális, középrétegű nyelvnek tekintheti, amely lehetővé teszi a magas szintű nyelvek és gépek közötti kommunikációt. Míg Q# a QIR-hez fordít, a QIR nem a következőre Q#vonatkozik: bármely kvantumprogramozási keretrendszer használhatja a QIR-t egy kvantumprogram ábrázolására. Ez hardver-agnosztikus, ami azt jelenti, hogy nem határoz meg kvantumutasítást vagy kapukészletet, és ezt a target számítási környezetre hagyja.

A QIR a népszerű nyílt forráskódú LLVM klasszikus fordítón alapul. Az LLVM moduláris és újrafelhasználható fordító- és eszközlánctechnológiák gyűjteménye, amelyeket a nyelvek széles halmaza adaptált. A QIR a kvantumszerkezetek LLVM-ben való ábrázolására vonatkozó szabályokat határoz meg, azonban nem igényel bővítményeket vagy módosításokat az LLVM-ben.

Az a tény, hogy az LLVM az alapul szolgáló eszközlánc, azt jelenti, hogy a QIR természetesen képes feldolgozni a klasszikus és a kvantumlogikát is. Ez a funkció elengedhetetlen a hibrid kvantum-klasszikus algoritmusokhoz, amelyek egyre fontosabbak lettek a kvantum-számítástechnika alkalmazásai számára. Emellett lehetővé teszi a klasszikus számítástechnikai iparág fordítási és optimalizálási eszközeinek használatát, és ezáltal a fordítások írásának költségeit.

Számos vezető kvantum-számítástechnikai iparág már elfogadta a QIR-t. Például az NVIDIA, az Oak Ridge National Laboratory, a Quantinuum, a Quantum Circuits Inc. és a Rigetti Computing olyan eszközláncokat építenek, amelyek a QIR-t használják.

További információ: QIR-specifikáció. Ha érdeklik a QIR-t használó fordítóeszközök és projektek, tekintse meg ezeket a QIR-adattárakat.

Mi a QIR Szövetség?

A QIR Alliance közös törekvés egy előremutató kvantum-köztes reprezentáció kialakítására, amelynek célja a kvantum-ökoszisztémán belüli teljes együttműködés biztosítása, az összes fél fejlesztési erőfeszítéseinek csökkentése, valamint a jelenlegi és jövőbeli heterogén kvantumprocesszorok számára megfelelő reprezentáció biztosítása.

A kvantum SDK-k és -nyelvek gyors ütemben jelennek meg és fejlődnek, valamint új kvantumprocesszorok, amelyek egyedi és különálló képességeket biztosítanak egymástól. Az új nyelvek és az új hardverképességek közötti együttműködés biztosítása érdekében elengedhetetlen, hogy az ökoszisztéma olyan köztes reprezentációt alakítson ki és osztson meg, amely együttműködik a jelenlegi és jövőbeli kvantumhardverekkel.

A QIR Szövetség közös munkájával és partnerségével a következő célokra törekszik:

  • A különböző keretrendszerek és nyelvek közötti interoperabilitás előmozdításával csökkentse az összes fél számára szükséges fejlesztési erőfeszítéseket.
  • A megosztott kódtárak fejlesztésének engedélyezése a kvantumalkalmazások fejlesztéséhez és a kvantumfordítók fejlesztéséhez.
  • Építsen a legkorszerűbb fordítótechnológiára, és használja ki a nagy teljesítményű számítástechnikából származó meglévő eszközöket, kódtárakat és tanulásokat.
  • Lehetővé teszi a növekményes és progresszív fejlődést abban, hogy a klasszikus és kvantumszámítások hogyan kommunikálhatnak hardverszinten.
  • Rugalmasságot biztosít a feltörekvő technológiák egyszerű összekapcsolásához oly módon, hogy lehetővé teszi a különböző és megkülönböztetett hardverképességekkel való kísérletezést.

A QIR Alliance a Linux Foundation Közös Fejlesztési Alapítványának része, amely nyílt szabványokon dolgozik. Az alapító tagok közé tartozik a Microsoft, valamint a Quantinuum (korábbi nevén Honeywell), az Oak Ridge National Laboratory, a Quantum Circuits Inc. és a Rigetti Computing.

Quantum Intermediate Representation Hogyan néz ki?

Mivel a QIR az LLVM-en alapul, a QIR az LLVM-hez hasonlít.

Vegyük például a következő Q# kódot egy Bell-pár létrehozásához:

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

A QIR-be fordításkor a következő lesz:

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
}

Ebben a kódrészletben láthat néhány QIR-funkciót:

  • A (vagy bármely más kvantumprogramozási nyelven) végrehajtott Q# műveleteket LLVM-függvények képviselik.
  • A qubitek egy nevű, átlátszatlan struktúratípusra mutató mutatóként jelennek meg %Qubit.

Bár a művelet QIR-ja nagyon egyszerű, a CreateBellPair QIR örökli az LLVM összes képességét a hurkok, a feltételes feltételek és az egyéb összetett vezérlési folyamatok kifejezésére. A QIR emellett örökli az LLVM azon képességét, hogy tetszőleges klasszikus számításokat fejezzen ki.

További információért watch Microsoft fejlesztői munkamenetét a 2021. negyedévi eseményről.

Miért fontos Quantum Intermediate Representation ?

A QIR elengedhetetlen eszköz a kvantum-algoritmusok valós hardveren való futtatásához. A köztes reprezentációk azonban akkor is fontos szerepet játszhatnak, ha csak elméletibb szinten szeretne algoritmusokat fejleszteni.

A QIR által engedélyezett egyik alkalmazás például a Clang fordító, az LLVM C nyelvi előtérrendszere, a QIR lefordítása végrehajtható gépi kódra egy klasszikushoz target. Ez a kvantumutasítások implementálásával egyszerű utat biztosít egy szimulátor C vagy C++ nyelven történő létrehozásához, ami leegyszerűsítheti a kvantumszimulátorok létrehozását.

Emellett a köztes reprezentációval olyan kódot is létrehozhat, amelyet később egy kvantumszimulátor bemeneteként ad meg – valódi eszköz helyett –, amely a forráskódtól eltérő nyelvet használhat. Így egyszerűen összehasonlíthatja és összehasonlíthatja a különböző nyelveket vagy szimulátorokat egy közös keretrendszer használatával.

A kódoptimalizálás szempontjából vannak olyan optimalizálási lépések, amelyek középhaladó szinten végrehajthatók, amelyek hatékonyabbá tehetik az általános algoritmus-implementációt. A bemeneti kód optimalizálásának vizsgálatával jobban megértheti, hogy hol teheti hatékonyabbá az algoritmusokat, és hogyan javíthatja a kvantumprogramozási nyelveket.

Egy másik alkalmazás a standard LLVM "pass" infrastruktúra használata a QIR-en működő kvantumkód-optimalizálók létrehozásához. A QIR nyelv- és hardverfüggetlen megközelítése lehetővé teszi az optimalizálók újrafelhasználását a különböző számítási nyelvekhez és számítási platformokhoz, szinte erőfeszítés nélkül.

Következő lépések