QIR (Quantum Intermediate Representation), la représentation intermédiaire pour les programmes quantiques livrée par Microsoft, pourra servir d'interface commune entre les langages de programmation pour les plateformes de calcul à porte quantique et à cible quantique. Introduit le 23 septembre et basé sur le langage intermédiaire LLVM, QIR définit des règles pour représenter les constructions quantiques en LLVM. Aucune extension ou modification de la « machine virtuelle de bas niveau » n'est nécessaire.
QIR prend en charge le langage open source Q# de Microsoft pour le développement d'algorithmes quantiques, mais n'est pas spécifique à Q#. Tout langage de calcul basé sur des portes quantiques peut être représenté. QIR est également indépendant du hardware, il n’impose ni instruction quantique, ni set de portes. Une application mentionnée comme activée par QIR implique l’usage du compilateur Clang basé sur LLVM pour compiler QIR en code machine exécutable par une cible classique, et fournit un chemin pour construire un simulateur en C ou C++ en mettant en œuvre les fonctions d’un set d'instructions quantiques.
Une plate-forme commune partageable entre les sources
Le projet de spécification QIR est disponible dans le référentiel de langage Q# de GitHub. Microsoft a également déployé une extension de compilateur qui génère le QIR à partir de Q#. L’extension est accessible via la branche feature/QIR du référentiel du compilateur Q#. Des instructions expliquant comment utiliser l'extension ont également été publiées. « Á mesure que les capacités de l'informatique quantique gagneront en maturité, la plupart des applications quantiques à grande échelle tireront profit de la collaboration entre les ressources classiques et quantiques », a déclaré Microsoft. LLVM offre des capacités QIR pour décrire le calcul classique riche et l’intégrer au calcul quantique. LLVM permet également l'intégration avec de nombreux langages et outils classiques déjà pris en charge par la chaîne d'outils LLVM.
La plupart des compilateurs commencent d’abord par compiler le langage source dans une représentation intermédiaire, laquelle sert généralement à représenter les différents langages sources. Dans cet état intermédiaire, le code peut être optimisé et transformé. Une fois connue la plate-forme d'exécution cible réelle, la représentation intermédiaire peut être compilée en code exécutable. Grâce à cette représentation intermédiaire, de nombreux langages sources peuvent partager un ensemble commun d'optimiseurs et de générateurs d'exécutables. Cela permet aussi de compiler facilement un seul langage source pour de nombreuses cibles différentes. La représentation intermédiaire fournit une plate-forme commune partageable entre les sources et les cibles, et permet leur réutilisation dans les mécanismes de compilation.
Microsoft prévoit de faire d’autres progrès dans la manière dont les calculs classiques et quantiques interagissent au niveau du hardware. Avec QIR, l'objectif est de fournir une représentation unique utilisable à la fois pour les capacités restrictives actuelles et pour des systèmes plus puissants de demain. La communauté pourra développer des optimisations et effectuer des transformations de code.
Commentaire