Article de reference

Programmation quantique

La programmation quantique désigne le processus de conception et d'implémentation d'algorithmes fonctionnant sur des systèmes quantiques , généralement à l'aide de circuits quan...

La programmation quantique désigne le processus de conception et d'implémentation d'algorithmes fonctionnant sur des systèmes quantiques , généralement à l'aide de circuits quantiques composés de portes quantiques, de mesures et d'une logique de contrôle classique. Ces circuits sont conçus pour manipuler les états quantiques en vue de tâches de calcul spécifiques ou d'obtenir des résultats expérimentaux. Les programmes quantiques peuvent être exécutés sur des processeurs quantiques, simulés sur du matériel classique ou implémentés via des instruments de laboratoire à des fins de recherche.

Lorsqu'on travaille avec des systèmes à base de processeurs quantiques, les langages de programmation quantique offrent des abstractions de haut niveau permettant d'exprimer efficacement les algorithmes quantiques. Ces langages s'intègrent souvent aux environnements de programmation classiques et prennent en charge les flux de travail hybrides quantiques-classiques. Le développement de logiciels quantiques a été fortement influencé par la communauté open source , avec de nombreux outils et frameworks — tels que Qrisp , Qiskit , Cirq , PennyLane et qBraid SDK — disponibles sous licences libres.

La programmation quantique peut également servir à modéliser ou à contrôler des systèmes expérimentaux grâce à l'instrumentation quantique et aux plateformes à base de capteurs. Si certaines architectures de calcul quantique, comme le calcul quantique optique linéaire utilisant le protocole KLM , requièrent du matériel spécialisé, d'autres utilisent des processeurs quantiques à portes logiques accessibles par des interfaces logicielles. Dans les deux cas, la programmation quantique fait le lien entre les algorithmes théoriques et leur implémentation physique.

ensembles d'instructions quantiques

Les jeux d'instructions quantiques servent à convertir des algorithmes de haut niveau en instructions physiques exécutables sur des processeurs quantiques. Ces instructions sont parfois spécifiques à une plateforme matérielle donnée, comme les pièges à ions ou les qubits supraconducteurs .

Merle

Blackbird est un jeu d'instructions quantiques et une représentation intermédiaire utilisée par Xanadu Quantum Technologies et Strawberry Fields. Il est conçu pour représenter des programmes quantiques à variables continues pouvant s'exécuter sur du matériel quantique photonique.

cQASM

cQASM, également connu sous le nom de QASM commun, est un langage d'assemblage quantique indépendant du matériel qui garantit l'interopérabilité entre tous les outils de compilation et de simulation quantiques. Il a été introduit par le laboratoire QCA de l'université de technologie de Delft (TUDelft) .

OpenQASM

Quil est une architecture de jeu d'instructions pour l'informatique quantique qui a introduit pour la première fois un modèle de mémoire quantique/classique partagée. Elle a été présentée par Robert Smith, Michael Curtis et William Zeng dans l'article « A Practical Quantum Instruction Set Architecture » . De nombreux algorithmes quantiques (dont la téléportation quantique , la correction d'erreurs quantiques , la simulation et les algorithmes d'optimisation ) nécessitent une architecture de mémoire partagée.

Kits de développement logiciel Quantum

Les kits de développement de logiciels quantiques fournissent des ensembles d'outils pour créer et manipuler des programmes quantiques. Ils fournissent également les moyens de simuler les programmes quantiques ou de les préparer pour être exécutés à l'aide de dispositifs quantiques basés sur le cloud et de dispositifs quantiques auto-hébergés.

Kits de développement logiciel (SDK) donnant accès aux processeurs quantiques

Les kits de développement logiciel suivants peuvent être utilisés pour exécuter des circuits quantiques sur des prototypes de dispositifs quantiques, ainsi que sur des simulateurs.

Cirq

Un projet open source développé par IBM . Les circuits quantiques sont créés et manipulés à l'aide de Python. Les résultats sont obtenus soit à l'aide de simulateurs fonctionnant sur l'appareil de l'utilisateur, soit à l'aide de simulateurs fournis par IBM, soit à l'aide de prototypes de dispositifs quantiques fournis par IBM. Outre la possibilité de créer des programmes utilisant des opérations quantiques de base, des outils de plus haut niveau pour les algorithmes et l'évaluation des performances sont disponibles dans des packages spécialisés. Qiskit est basé sur la norme OpenQASM pour la représentation des circuits quantiques. Il prend également en charge le contrôle au niveau des impulsions des systèmes quantiques via la norme QiskitPulse.

Qrisp

t|ket>

Un environnement de programmation quantique et un compilateur d'optimisation développés par Quantinuum qui ciblent les simulateurs et plusieurs backends matériels quantiques à ions piégés, publiés en décembre 2018.

Cadre quantique de Wolfram

Un module complémentaire pour le langage Wolfram, intégré à Mathematica , offre une représentation symbolique de haut niveau des objets quantiques tels que les bases, les états, les opérateurs, les canaux, les mesures et les circuits. [ framework inclut des outils de simulation et d'analyse – évolution temporelle, simulation de mesures, monotones d'intrication, trace/transposition partielle, transformées de Wigner discrètes, méthodes de stabilisation et utilitaires de réseaux de tenseurs – ainsi qu'une bibliothèque de constructions nommées (états de Bell/GHZ, opérateurs de Pauli , transformées de Fourier et de Grover, etc.). Il propose une visualisation intégrée (diagrammes de circuits et diagrammes de Bloch) et une interopérabilité avec des plateformes externes, notamment la conversion aux formats Qiskit et Amazon Braket et la possibilité d'envoyer des requêtes aux unités de traitement quantique (QPU) via des connexions de service.

Langages de programmation quantique

Il existe deux grands groupes de langages de programmation quantique : les langages de programmation quantique impératifs et les langages de programmation quantique fonctionnels .

Langues impératives

Les représentants les plus importants des langages impératifs sont QCL, LanQ et Q|SI>.

Ket

Ket est un langage embarqué open source conçu pour faciliter la programmation quantique, en tirant parti de la syntaxe familière et de la simplicité de Python. Il constitue un composant essentiel de la plateforme de programmation quantique Ket , s'intégrant parfaitement à une bibliothèque d'exécution Rust et à un simulateur quantique. Maintenu par Quantuloop, ce projet met l'accent sur l'accessibilité et la polyvalence pour les chercheurs et les développeurs. L'exemple suivant illustre l'implémentation d'un état de Bell à l'aide de Ket :

from ket import *a , b = quant ( 2 ) # Allouer deux bits quantiquesH ( a ) # Placer le qubit `a` en superpositioncnot ( a , b ) # Intriquer les deux qubits dans l'état de Bellm_a = measure ( a ) # Mesurer le qubit `a`, en réduisant également le qubit `b`m_b = mesure ( b ) # Mesurer le qubit `b`# Affirmer que la mesure des deux qubits sera toujours égaleassert m_a . value == m_b . value

LQP

La logique des programmes quantiques (LQP) est une logique quantique dynamique, capable d'exprimer des caractéristiques importantes des mesures quantiques et des évolutions unitaires d'états multipartites, et fournit des caractérisations logiques de diverses formes d'intrication. Cette logique a été utilisée pour spécifier et vérifier la correction de divers protocoles en calcul quantique.

Langue Q

Le langage Q est le deuxième langage de programmation quantique impératif implémenté. Il a été implémenté comme une extension du langage C++ . Il fournit des classes pour les opérations quantiques de base telles que QHadamard, QFourier, QNot et QSwap, dérivées de la classe de base Qop. De nouveaux opérateurs peuvent être définis à l'aide du mécanisme de classes C++.

La mémoire quantique est représentée par la classe Qreg.

Qreg x1 ; // Registre quantique à 1 qubit avec valeur initiale 0 Qreg x2 ( 2 , 0 ); // Registre quantique à 2 qubits avec valeur initiale 0

Le processus de calcul est exécuté à l'aide d'un simulateur fourni. Les environnements bruyants peuvent être simulés grâce aux paramètres du simulateur.

Q#

Le langage de calcul quantique (QCL) est l'un des premiers langages de programmation quantique implémentés . Sa principale caractéristique est la prise en charge des opérateurs et fonctions définis par l'utilisateur. Sa syntaxe est proche de celle du langage C et ses types de données classiques sont similaires aux types primitifs de C. Il est possible de combiner code classique et code quantique au sein d'un même programme.

qGCL

Le langage de commandes gardées quantiques (qGCL) a été défini par P. Zuliani dans sa thèse de doctorat. Il est basé sur le langage de commandes gardées créé par Edsger Dijkstra .

On peut le décrire comme un langage de spécification des programmes quantiques.

QMASM

Quantum Macro Assembler (QMASM) est un langage de bas niveau spécifique aux recuits quantiques tels que le D-Wave.

Qmod

Le langage de modélisation quantique (Qmod) est un langage de haut niveau qui abstrait le fonctionnement des qubits au niveau des portes logiques, offrant une approche fonctionnelle pour l'implémentation d'algorithmes quantiques sur des registres quantiques. Ce langage fait partie de la plateforme Classiq et peut être utilisé directement avec sa syntaxe native, via un kit de développement logiciel (SDK) Python ou avec un éditeur visuel. Toutes ces méthodes permettent de tirer parti de la vaste bibliothèque d'algorithmes et de l'optimisation efficace des circuits.

Q|SI>

Q|SI> est une plateforme intégrée au langage .NET qui prend en charge la programmation quantique grâce à une extension quantique du langage while. Cette plateforme comprend un compilateur du langage while quantique et une suite d'outils pour la simulation de calculs quantiques, l'optimisation de circuits quantiques, l'analyse de terminaison des programmes quantiques et la vérification des programmes quantiques.

Pseudocode quantique

Le pseudocode quantique proposé par E. Knill est le premier langage formalisé pour la description des algorithmes quantiques . Il a été introduit et, de plus, étroitement lié à un modèle de machine quantique appelé machine à accès aléatoire quantique (QRAM).

Échafaud

Scaffold est un langage de type C, compilé en QASM et OpenQASM. Il s'appuie sur l' infrastructure du compilateur LLVM pour optimiser le code Scaffold avant de générer un jeu d'instructions spécifié.

Silq

Silq est un langage de programmation de haut niveau pour l'informatique quantique doté d'un système de types statiques fort, développé à l'ETH Zurich .

Langages fonctionnels

Des efforts sont en cours pour développer des langages de programmation fonctionnelle pour l'informatique quantique . Ces langages sont particulièrement adaptés au raisonnement sur les programmes. On peut citer comme exemples QPL de Selinger et QML, un langage de type Haskell développé par Altenkirch et Grattage . Des langages de programmation quantique d'ordre supérieur, basés sur le lambda-calcul , ont été proposés par van Tonder , Selinger et Valiron , ainsi que par Arrighi et Dowek

LIQUi|>

LIQUi|> (prononcé « liquid » ) est une extension de simulation quantique pour le langage de programmation F# . Elle est actuellement développée par le groupe Architectures et calcul quantiques (QuArC) , qui fait partie du projet StationQ de Microsoft Research. LIQUi|> vise à permettre aux théoriciens d'expérimenter la conception d'algorithmes quantiques avant que des ordinateurs quantiques physiques ne soient disponibles.

Il comprend un langage de programmation, des algorithmes d'optimisation et d'ordonnancement, ainsi que des simulateurs quantiques. LIQUi|> peut être utilisé pour traduire un algorithme quantique écrit sous la forme d'un programme de haut niveau en instructions machine de bas niveau pour un dispositif quantique.

QFC et QPL

QFC et QPL sont deux langages de programmation quantique étroitement liés, définis par Peter Selinger. Ils ne diffèrent que par leur syntaxe : QFC utilise une syntaxe de type organigramme, tandis que QPL utilise une syntaxe textuelle. Ces langages possèdent un flux de contrôle classique, mais peuvent manipuler des données quantiques ou classiques. Selinger propose une sémantique dénotationnelle pour ces langages dans une catégorie de superopérateurs .

QML

QML est un langage de programmation quantique de type Haskell , développé par Altenkirch et Grattage. Contrairement à QPL de Selinger, ce langage considère la duplication, et non la suppression, de l'information quantique comme une opération primitive. La duplication, dans ce contexte, est comprise comme l'opération qui transforme…

Une sémantique opérationnelle pour QML est définie en termes de circuits quantiques , tandis qu'une sémantique dénotationnelle est présentée en termes de superopérateurs ; il est démontré que ces deux sémantiques concordent. Les sémantiques opérationnelle et dénotationnelle ont toutes deux été implémentées (classiquement) en Haskell.

Calculs quantiques lambda

Les lambda-calculs quantiques sont des extensions du lambda-calcul classique introduit par Alonzo Church et Stephen Cole Kleene dans les années 1930. Leur but est d'étendre les langages de programmation quantique avec une théorie des fonctions d'ordre supérieur .

La première tentative de définition d'un lambda-calcul quantique a été réalisée par Philip Maymin en 1996 Son lambda-q-calcul est suffisamment puissant pour exprimer tout calcul quantique. Cependant, ce langage permet de résoudre efficacement des problèmes NP-complets et apparaît donc strictement plus puissant que les modèles de calcul quantique standard (tels que la machine de Turing quantique ou le modèle de circuit quantique ). Par conséquent, le lambda-q-calcul de Maymin n'est probablement pas implémentable sur un dispositif physique.

En 2003, André van Tonder a défini une extension du lambda-calcul adaptée à la démonstration de la correction des programmes quantiques. Il en a également fourni une implémentation dans le langage de programmation Scheme .

En 2004, Selinger et Valiron ont défini un lambda-calcul fortement typé pour le calcul quantique avec un système de types basé sur la logique linéaire .

Quipper

Importer Quipperspos :: Bool -> Circ Qubit spos b = do q <- qinit b r <- hadamard q return r

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index