Microsoft
30.09.2020, 12:11 Uhr
Quantum Intermediate Representation (QIR)
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.
Was kann man mit QIR tun?
Eine durch QIR ermöglichte Anwendung ist die Verwendung des Clang-Compilers, um QIR in ausführbaren Maschinencode für ein klassisches Ziel zu kompilieren. Dies bietet einen einfachen Weg zum Aufbau eines Simulators in C oder C++ durch Implementierung von Quantenbefehlssatzfunktionen.
Eine weitere Anwendung ist die Verwendung der Standard-"Pass"-Infrastruktur des LVM, um Quantenoptimierer zu schreiben, die mit QIR arbeiten. Der quell- und zielunabhängige Ansatz von QIR ermöglicht die Verwendung von Optimierungen mit vielen verschiedenen Berechnungssprachen und Rechnerplattformen.
Microsoft hat QIR bereits mit einigen Partnern geteilt, um frühzeitiges Feedback zu erhalten. So sagt beispielsweise Alex McCaskey, Quanteninformatiker und XACC-Projektleiter des Oak Ridge National Laboratory, Alex McCaskey: "Das ORNL arbeitet eng mit dem Quantencompiler-Team von Microsoft zusammen, um die Kompilierung von Q#-Programmen auf hoher Ebene für die verschiedenen Quantenhardware-Plattformen von OLCF durch die Integration mit dem Quantenprogrammier-Framework XACC zu ermöglichen.
Weitere Informationen und Links finden Sie in diesem Blogbeitrag von Alan Geller.