Blog

Développement de logiciels quantiques : Un paradigme similaire mais nouveau

5
Mai
,
2022
Ofek Kirzner, vice-président de la R&D, Classiq

Comment créer un nouveau langage de programmation, un compilateur ou une chaîne d'outils ? Lorsque nous concevons des plateformes logicielles pour un nouveau domaine, nous pouvons nous appuyer sur notre vaste expérience passée tout en la combinant avec la créativité, la recherche de pointe et l'ingénierie.

Classiq développe un ensemble d'outils pour créer des logiciels pour les ordinateurs quantiques. Dans cet article, nous utiliserons l'analogie de la programmation classique en C pour expliquer comment nous construisons un nouveau langage et une nouvelle plateforme pour ce nouveau paradigme informatique.

Comme de nombreux lecteurs le savent, les ordinateurs quantiques sont basés sur un modèle mathématique dérivé de la physique quantique. Sans entrer dans les détails, imaginons un ensemble de portes logiques dont la sémantique diffère de celle de la programmation classique. Au lieu d'opérer sur une chaîne de 0 et de 1, les portes quantiques fonctionnent sur des combinaisons linéaires de ces chaînes. La programmation quantique interconnecte les portes quantiques et peut également être combinée avec des portes logiques classiques.

La construction d'un ordinateur quantique est un formidable défi d'ingénierie, considéré comme un fantasme il n'y a pas si longtemps encore. Mais ces dernières années, grâce aux percées de géants de l'informatique comme IBM avec son processeur de 127 qubits et l'expérience de suprématie quantique de Google, les utilisations industrielles des ordinateurs quantiques sont devenues une question de "quand" plutôt que de "cela arrivera-t-il un jour".

La motivation pour construire des ordinateurs quantiques est très claire : si un ordinateur peut être construit et qu'un logiciel approprié peut être écrit pour lui, nous pourrions résoudre des problèmes critiques que les ordinateurs classiques ne peuvent pas et ne pourront jamais résoudre. Par exemple, nous pourrions développer de nouveaux vaccins, optimiser notre chaîne d'approvisionnement, simuler des molécules à grande échelle, découvrir de nouveaux algorithmes d'apprentissage automatique, mieux protéger les informations, etc.

Si l'on remonte aux années 1950, on constate un long processus de recherche et d'ingénierie qui nous a conduits des premiers prototypes informatiques aux processeurs avancés que nous connaissons aujourd'hui. Les processeurs modernes sont caractérisés par une architecture de jeu d'instructions (ISA) qui spécifie les instructions, les types de données et les registres qu'ils utilisent. Certaines instructions ont une représentation binaire ainsi que des instructions en langage d'assemblage lisibles par l'homme. Mais aujourd'hui, personne ne développe de grands projets logiciels en langage assembleur, pas même Linus. À partir des années 60 et 70, des langages de programmation comme le Fortran, puis le C, ont été développés pour fournir une couche d'abstraction au-dessus du langage d'assemblage. Ces langages ont révolutionné le développement de logiciels et ont permis aux ingénieurs de logiciels d'exprimer leur créativité.

Les ordinateurs quantiques actuels ne comptent pas plus d'une centaine de qubits. Ils présentent de nombreuses limitations et les entreprises auraient du mal à les utiliser pour effectuer des calculs complexes. La programmation de ces ordinateurs quantiques se fait dans des langages tels que QASM (Quantum Assembly) ou Q#. Ces langages obligent l'ingénieur logiciel à déclarer explicitement les portes quantiques à utiliser, ce qui, pour beaucoup, est encore plus proche du matériel que le langage d'assemblage. Cependant, lorsqu'en 2023, des ordinateurs de 1000 qubits seront disponibles, offrant la possibilité de créer un code plus sophistiqué, une telle programmation de bas niveau deviendra une tâche de Sisyphe, à la limite de l'impossible.

Pour résoudre ce problème, Classiq développe les prochaines couches de la pile logicielle quantique.

À quoi ressemble la programmation d'un ordinateur classique aujourd'hui ? Prenons l'exemple du langage C et supposons que notre objectif est de fournir un fichier exécutable. En gros, l'ingénieur logiciel crée des fichiers ".c" et ".h" et les compile en fichiers ".o". Ceux-ci sont ensuite liés à des bibliothèques préexistantes (telles que libc) pour former un exécutable. L'ingénieur peut exécuter le code, mais il est probable qu'il rencontre des bogues. Pour déboguer le code, l'ingénieur peut utiliser un débogueur tel que gdb, ou des outils d'analyse statique du code tels que objdump ou IDA. Il s'agit d'un processus itératif : écrire le code, le compiler, le lier, l'exécuter et le déboguer.

En quoi cela est-il similaire à l'écriture d'un logiciel quantique ? La plateforme Classiq fournit aux ingénieurs et aux concepteurs d'algorithmes quantiques une interface fonctionnelle et déclarative. Ainsi, ils doivent "déclarer" quelle est la logique ou la fonctionnalité qu'ils souhaitent générer, puis spécifier les contraintes auxquelles le code doit répondre - comme ne pas dépasser une certaine longueur de circuit, le nombre de qubits disponibles, la précision souhaitée, et bien d'autres choses encore. Pour aider nos utilisateurs, Classiq fournit une bibliothèque de composants quantiques tels que la préparation d'états, l'arithmétique quantique et les opérations d'apprentissage automatique. Ces déclarations sont rassemblées dans un modèle (.qmod) et envoyées à nos serveurs. Avec nos blocs prédéfinis, ce modèle subit un processus de synthèse - la création d'un code quantique qui répond de manière optimale aux exigences. Les utilisateurs peuvent analyser le résultat et vérifier qu'il répond aux spécifications ou l'exécuter rapidement sur une variété d'ordinateurs quantiques ou de simulateurs. Dans le cadre de ce processus interactif et itératif, les utilisateurs peuvent modifier les contraintes ou la définition fonctionnelle jusqu'à ce qu'ils obtiennent le résultat souhaité. Enfin, comme dans la compilation classique, le code obtenu est bien meilleur que celui qui aurait pu être obtenu manuellement.

Malgré ces similitudes, il existe des différences entre la programmation classique et la programmation quantique :

  • La logique quantique est plus complexe que la logique classique, et la synthèse des circuits quantiques est donc plus sophistiquée, tant dans le processus de conception algorithmique que dans la mise en œuvre.
  • Les logiciels quantiques sont approximatifs, ce qui signifie qu'une partie des exigences est le niveau de précision du code final, ce qui lui permet de s'adapter aux limitations matérielles d'aujourd'hui et de demain.
  • Le processus de synthèse s'effectue via une API en réseau, contrairement à un compilateur classique local. Cela permet de simplifier l'interface et de tirer parti d'un modèle SaaS (mises à jour logicielles en continu, capacité extensible, etc.)
  • La capacité à déboguer un code quantique est limitée car le processus de mesure d'un qubit est irréversible. Par conséquent, le processus d'analyse et de validation du code quantique est un problème algorithmique difficile.
  • Les logiciels quantiques sont de nature graphique. Un environnement de conception approprié doit fournir des méthodes textuelles et graphiques et présenter le code synthétisé de manière textuelle et graphique.

Le monde des logiciels quantiques en est encore à ses débuts. Il existe de nombreux parallèles avec la conception de logiciels classiques, mais la route n'est pas encore tracée et nécessite des recherches approfondies, de l'innovation et de l'ingéniosité. Voici quelques-uns des défis auxquels Classiq s'attaque :

  • La recherche et la mise en œuvre d'algorithmes de synthèse permettant de réaliser des percées dans le domaine des logiciels quantiques.
  • Développer un langage déclaratif riche qui peut aider à exprimer des algorithmes purs et hybrides (classiques/quantiques) et permettre aux ingénieurs d'exprimer leur créativité. 
  • Créer des blocs de construction algorithmiques qui offrent une précision flexible et peuvent s'adapter aux ressources quantiques disponibles.
  • Outils d'analyse et de débogage du code quantique dans un délai raisonnable.
  • Une infrastructure évolutive pour accueillir les prochaines générations d'ordinateurs quantiques.

Vous souhaitez nous rejoindre ? Nous recherchons des ingénieurs logiciels de haut niveau dans toutes les disciplines : DevOps, experts algorithmiques, scientifiques de l'information quantique, concepteurs frontaux, et plus encore. Nous recherchons des pionniers qui n'ont pas peur de dépasser les limites de l'imagination et de la technologie et qui souhaitent construire l'avenir de l'informatique.

Comment créer un nouveau langage de programmation, un compilateur ou une chaîne d'outils ? Lorsque nous concevons des plateformes logicielles pour un nouveau domaine, nous pouvons nous appuyer sur notre vaste expérience passée tout en la combinant avec la créativité, la recherche de pointe et l'ingénierie.

Classiq développe un ensemble d'outils pour créer des logiciels pour les ordinateurs quantiques. Dans cet article, nous utiliserons l'analogie de la programmation classique en C pour expliquer comment nous construisons un nouveau langage et une nouvelle plateforme pour ce nouveau paradigme informatique.

Comme de nombreux lecteurs le savent, les ordinateurs quantiques sont basés sur un modèle mathématique dérivé de la physique quantique. Sans entrer dans les détails, imaginons un ensemble de portes logiques dont la sémantique diffère de celle de la programmation classique. Au lieu d'opérer sur une chaîne de 0 et de 1, les portes quantiques fonctionnent sur des combinaisons linéaires de ces chaînes. La programmation quantique interconnecte les portes quantiques et peut également être combinée avec des portes logiques classiques.

La construction d'un ordinateur quantique est un formidable défi d'ingénierie, considéré comme un fantasme il n'y a pas si longtemps encore. Mais ces dernières années, grâce aux percées de géants de l'informatique comme IBM avec son processeur de 127 qubits et l'expérience de suprématie quantique de Google, les utilisations industrielles des ordinateurs quantiques sont devenues une question de "quand" plutôt que de "cela arrivera-t-il un jour".

La motivation pour construire des ordinateurs quantiques est très claire : si un ordinateur peut être construit et qu'un logiciel approprié peut être écrit pour lui, nous pourrions résoudre des problèmes critiques que les ordinateurs classiques ne peuvent pas et ne pourront jamais résoudre. Par exemple, nous pourrions développer de nouveaux vaccins, optimiser notre chaîne d'approvisionnement, simuler des molécules à grande échelle, découvrir de nouveaux algorithmes d'apprentissage automatique, mieux protéger les informations, etc.

Si l'on remonte aux années 1950, on constate un long processus de recherche et d'ingénierie qui nous a conduits des premiers prototypes informatiques aux processeurs avancés que nous connaissons aujourd'hui. Les processeurs modernes sont caractérisés par une architecture de jeu d'instructions (ISA) qui spécifie les instructions, les types de données et les registres qu'ils utilisent. Certaines instructions ont une représentation binaire ainsi que des instructions en langage d'assemblage lisibles par l'homme. Mais aujourd'hui, personne ne développe de grands projets logiciels en langage assembleur, pas même Linus. À partir des années 60 et 70, des langages de programmation comme le Fortran, puis le C, ont été développés pour fournir une couche d'abstraction au-dessus du langage d'assemblage. Ces langages ont révolutionné le développement de logiciels et ont permis aux ingénieurs de logiciels d'exprimer leur créativité.

Les ordinateurs quantiques actuels ne comptent pas plus d'une centaine de qubits. Ils présentent de nombreuses limitations et les entreprises auraient du mal à les utiliser pour effectuer des calculs complexes. La programmation de ces ordinateurs quantiques se fait dans des langages tels que QASM (Quantum Assembly) ou Q#. Ces langages obligent l'ingénieur logiciel à déclarer explicitement les portes quantiques à utiliser, ce qui, pour beaucoup, est encore plus proche du matériel que le langage d'assemblage. Cependant, lorsqu'en 2023, des ordinateurs de 1000 qubits seront disponibles, offrant la possibilité de créer un code plus sophistiqué, une telle programmation de bas niveau deviendra une tâche de Sisyphe, à la limite de l'impossible.

Pour résoudre ce problème, Classiq développe les prochaines couches de la pile logicielle quantique.

À quoi ressemble la programmation d'un ordinateur classique aujourd'hui ? Prenons l'exemple du langage C et supposons que notre objectif est de fournir un fichier exécutable. En gros, l'ingénieur logiciel crée des fichiers ".c" et ".h" et les compile en fichiers ".o". Ceux-ci sont ensuite liés à des bibliothèques préexistantes (telles que libc) pour former un exécutable. L'ingénieur peut exécuter le code, mais il est probable qu'il rencontre des bogues. Pour déboguer le code, l'ingénieur peut utiliser un débogueur tel que gdb, ou des outils d'analyse statique du code tels que objdump ou IDA. Il s'agit d'un processus itératif : écrire le code, le compiler, le lier, l'exécuter et le déboguer.

En quoi cela est-il similaire à l'écriture d'un logiciel quantique ? La plateforme Classiq fournit aux ingénieurs et aux concepteurs d'algorithmes quantiques une interface fonctionnelle et déclarative. Ainsi, ils doivent "déclarer" quelle est la logique ou la fonctionnalité qu'ils souhaitent générer, puis spécifier les contraintes auxquelles le code doit répondre - comme ne pas dépasser une certaine longueur de circuit, le nombre de qubits disponibles, la précision souhaitée, et bien d'autres choses encore. Pour aider nos utilisateurs, Classiq fournit une bibliothèque de composants quantiques tels que la préparation d'états, l'arithmétique quantique et les opérations d'apprentissage automatique. Ces déclarations sont rassemblées dans un modèle (.qmod) et envoyées à nos serveurs. Avec nos blocs prédéfinis, ce modèle subit un processus de synthèse - la création d'un code quantique qui répond de manière optimale aux exigences. Les utilisateurs peuvent analyser le résultat et vérifier qu'il répond aux spécifications ou l'exécuter rapidement sur une variété d'ordinateurs quantiques ou de simulateurs. Dans le cadre de ce processus interactif et itératif, les utilisateurs peuvent modifier les contraintes ou la définition fonctionnelle jusqu'à ce qu'ils obtiennent le résultat souhaité. Enfin, comme dans la compilation classique, le code obtenu est bien meilleur que celui qui aurait pu être obtenu manuellement.

Malgré ces similitudes, il existe des différences entre la programmation classique et la programmation quantique :

  • La logique quantique est plus complexe que la logique classique, et la synthèse des circuits quantiques est donc plus sophistiquée, tant dans le processus de conception algorithmique que dans la mise en œuvre.
  • Les logiciels quantiques sont approximatifs, ce qui signifie qu'une partie des exigences est le niveau de précision du code final, ce qui lui permet de s'adapter aux limitations matérielles d'aujourd'hui et de demain.
  • Le processus de synthèse s'effectue via une API en réseau, contrairement à un compilateur classique local. Cela permet de simplifier l'interface et de tirer parti d'un modèle SaaS (mises à jour logicielles en continu, capacité extensible, etc.)
  • La capacité à déboguer un code quantique est limitée car le processus de mesure d'un qubit est irréversible. Par conséquent, le processus d'analyse et de validation du code quantique est un problème algorithmique difficile.
  • Les logiciels quantiques sont de nature graphique. Un environnement de conception approprié doit fournir des méthodes textuelles et graphiques et présenter le code synthétisé de manière textuelle et graphique.

Le monde des logiciels quantiques en est encore à ses débuts. Il existe de nombreux parallèles avec la conception de logiciels classiques, mais la route n'est pas encore tracée et nécessite des recherches approfondies, de l'innovation et de l'ingéniosité. Voici quelques-uns des défis auxquels Classiq s'attaque :

  • La recherche et la mise en œuvre d'algorithmes de synthèse permettant de réaliser des percées dans le domaine des logiciels quantiques.
  • Développer un langage déclaratif riche qui peut aider à exprimer des algorithmes purs et hybrides (classiques/quantiques) et permettre aux ingénieurs d'exprimer leur créativité. 
  • Créer des blocs de construction algorithmiques qui offrent une précision flexible et peuvent s'adapter aux ressources quantiques disponibles.
  • Outils d'analyse et de débogage du code quantique dans un délai raisonnable.
  • Une infrastructure évolutive pour accueillir les prochaines générations d'ordinateurs quantiques.

Vous souhaitez nous rejoindre ? Nous recherchons des ingénieurs logiciels de haut niveau dans toutes les disciplines : DevOps, experts algorithmiques, scientifiques de l'information quantique, concepteurs frontaux, et plus encore. Nous recherchons des pionniers qui n'ont pas peur de dépasser les limites de l'imagination et de la technologie et qui souhaitent construire l'avenir de l'informatique.

A propos de "The Qubit Guy's Podcast" (Le podcast du gars de Qubit)

Animé par The Qubit Guy (Yuval Boger, notre directeur marketing), le podcast accueille des leaders d'opinion de l'informatique quantique pour discuter de questions commerciales et techniques qui ont un impact sur l'écosystème de l'informatique quantique. Nos invités fournissent des informations intéressantes sur les logiciels et algorithmes d'ordinateurs quantiques, le matériel informatique quantique, les applications clés de l'informatique quantique, les études de marché de l'industrie quantique et bien plus encore.

Si vous souhaitez proposer un invité pour le podcast, veuillez nous contacter.

Créez des logiciels quantiques sans contraintes

contactez-nous