30. Sep 2020
Lesedauer 3 Min.
Quantum Intermediate Representation (QIR)
Microsoft
QIR ist eine von Microsoft entwickelte Zwischendarstellung für Quantenprogramme, die auf der Open-Source-Zwischensprache LLVM basiert. QIR spezifiziert eine Reihe von Regeln für die Darstellung von Quantenkonstrukten im LLVM.

QIR soll als gemeinsame Schnittstelle zwischen vielen Sprachen und Quantencomputer-Plattformen dienen. Obwohl Q# unterstützt wird, ist QIR nicht spezifisch für Q#: jede Programmiersprache für Gate-basierte Quantenberechnungen kann in QIR dargestellt werden. In ähnlicher Weise ist QIR hardware-agnostisch: es spezifiziert keinen Quantenbefehl oder Gate-Satz und überlässt dies der Zielumgebung.Mit zunehmender Reife der Quanten-Computing-Fähigkeiten erwartet Microsoft – so schreibt Microsoft-Mitarbeiter Alan Geller in diesem Blogbeitrag –, dass die meisten groß angelegten Quantenanwendungen die Vorteile der Zusammenarbeit von klassischen und Quanten-Computing-Ressourcen voll ausschöpfen werden. LLVM bietet der QIR volle Fähigkeiten zur Beschreibung reichhaltiger klassischer Berechnungen, die vollständig in die Quantenberechnung integriert sind. Die Verwendung von LLVM erleichtert auch die Integration mit den vielen klassischen Sprachen und Werkzeugen, die bereits von der LLVM-Werkzeugkette unterstützt werden. Es fördert auch die Entwicklung gemeinsamer sprach- und backend-unabhängiger Optimierungen und Code-Transformationen, die auf einem bekannten und robusten Open-Source-Framework basieren.Ein übliches Muster bei Compilern besteht darin, zunächst die Quellsprache in eine Zwischendarstellung zu kompilieren. Diese Zwischenform ist typischerweise so ausgelegt, dass viele verschiedene Quellsprachen dargestellt werden können. Während sich der Code noch in der Zwischendarstellung befindet, kann er optimiert und transformiert werden. Sobald die tatsächliche Ausführungsplattform bekannt ist, wird die Zwischendarstellung schließlich zu tatsächlich ausführbarem Code kompiliert.Dieser Ansatz ermöglicht es vielen Quellsprachen, einen gemeinsamen Satz von Optimierern und ausführbaren Generatoren zu verwenden. Er macht es auch einfach, eine einzige Quellsprache für viele verschiedene Ziele zu kompilieren. Die Zwischendarstellung stellt eine gemeinsame Plattform zur Verfügung, die von vielen Quellen und Zielen gemeinsam genutzt werden kann und eine weitgehende Wiederverwendung in Compiler-Maschinen ermöglicht.