Kvantum köztes ábrázolása
Quantum Intermediate Representation A (QIR) egy köztes reprezentáció, amely a kvantumprogramozási nyelvek/keretrendszerek és a célzott kvantumszámítási platformok közös interfésze. A QIR olyan szabályokat határoz meg, amelyek a kvantumprogramokat nyelvi és hardveres agnosztikus formátummal jelölik az LLVM IR-en belül. A QIR egy olyan projekt, amelyet a QIR Alliance fejlesztett ki, amelynek a Microsoft az egyik tagja.
Mi az a köztes ábrázolás?
A klasszikus fordítók gyakori mintája, hogy a forrásnyelvet egy köztes reprezentációba kell összeállítani. A köztes ábrázolás – ahogy a neve is jelzi – a forráskódból a gép nyelvére való átalakítás közbenső lépése.
A köztes reprezentáció egy program absztrakt ábrázolása. Az összes programot, függetlenül attól, hogy a nyelvük be van-e írva, egy úgynevezett előtér-fordító fordítja le erre a köztes ábrázolásra, 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 ábrázolás lehetővé teszi a forrásnyelvek hardverplatformoktól való elkülönítését, és lehetővé teszi a fordító moduláris felépítését, ahol minden új nyelvhez csak egy új előtérrendszert kell támogatni minden olyan platformon, amelyhez háttérrendszer érhető el.
A köztes ábrázolás általában úgy van kialakítva, hogy számos különböző forrásnyelvet lehessen ábrázolni. 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égleges megvalósítást. A végleges 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, hogy optimalizálók és végrehajtható generátorok közös készletét ossza meg. Emellett egyszerűvé teszi egyetlen forrásnyelv fordítását 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 a(z) Quantum Intermediate Representation?
A QIR a QIR Alliance által kifejlesztett 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étegi 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 jellemző a következőre Q#: bármely kvantumprogramozási keretrendszer használhatja a QIR-t egy kvantumprogram ábrázolására. Ez hardveres 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 számos nyelv adaptált. A QIR olyan szabályokat határoz meg, amelyek a kvantumszerkezetek LLVM-ben való ábrázolására vonatkoznak, de nem igényelnek 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 a klasszikus és a kvantumlogika feldolgozására 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 csökkentheti 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. Az NVIDIA, az Oak Ridge National Laboratory, a Quantinuum, a Quantum Circuits Inc. és a Rigetti Computing például olyan eszközláncokat épít, amelyek a QIR-t használják.
További információkért lásd a QIR specifikációját. Ha érdeklik a QIR-t használó fordítóeszközök és projektek, tekintse meg ezeket a QIR-adattárakat.
Mi az 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, a fejlesztési erőfeszítések csökkentése minden fél részéről, valamint a jelenlegi és jövőbeli heterogén kvantumprocesszorok számára megfelelő képviselet biztosítása.
A kvantum SDK-k és -nyelvek gyors ütemben jelennek meg és fejlődnek, valamint új kvantumprocesszorok, amelyek egyedi és eltérő 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 fejlesszen ki és osztson meg, amely együttműködik a jelenlegi és a 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 valamennyi fél számára csökkentse a 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.
- A legmodernebb fordítótechnológiára építhet, és kihasználhatja 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.
- Biztosítson rugalmasságot a feltörekvő technológiák egyszerű összekapcsolásához oly módon, hogy lehetővé teszi a kísérletezést különböző és differenciált hardveres képességekkel.
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óan néz ki.
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 néhány QIR-funkciót láthat:
- Q# A műveleteket (vagy bármely más kvantumprogramozási nyelvet) LLVM-függvények képviselik.
- A qubitek mutatóként jelennek meg egy nevesített, átlátszatlan, úgynevezett struktúratípusra
%Qubit
.
Bár a művelet QIR-je nagyon egyszerű, a CreateBellPair
QIR örökli az LLVM összes képességét a ciklusok, 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 is, hogy tetszőleges klasszikus számításokat fejezzen ki.
További információkért tekintse meg a Microsoft fejlesztői munkamenetét a 2021. negyedévi eseményből.
Miért fontos Quantum Intermediate Representation ?
A QIR nélkülözhetetlen 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őtere, a QIR lefordítása végrehajtható targetgépi kódra klasszikus . 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 használhatja a köztes reprezentációt olyan kód létrehozására is, 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 is 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, amelyeket a köztes szinten lehet végrehajtani, ami hatékonyabbá teheti 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 fejlesztheti a kvantumprogramozási nyelveket.
Egy másik alkalmazás a szabványos 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 szinte erőfeszítés nélkül teszi lehetővé a különböző számítási nyelvek és számítási platformok optimalizálóinak újrafelhasználását.