Programmation d’ordinateurs quantiques avec Q #

Cette semaine, je suis à la Conférence des développeurs NDC à Sydney. Pendant mon séjour ici, j’ai assisté à un atelier sur la programmation d’ordinateurs quantiques à l’aide de Q #, dirigé par John Azariah, le créateur du langage de programmation Q#.

Avec John Azariah, le créateur du langage Q#, un langage de programmation informatique quantique. Si j’ai l’air fatigué, c’est parce que j’étais jusqu’à 3h du matin ce matin en train d’écrire mon premier programme quantique en Q#.

Q # est un langage Microsoft récemment publié spécialement développé pour la programmation d’opérations informatiques quantiques à partir d’un ordinateur classique. Il est pris en charge sur Mac, Windows et Linux.

Ce qui est si excitant avec Q#, c’est qu’il s’agit d’une abstraction de l’informatique quantique à un nouveau niveau sémantique. Vous pouvez exprimer des idées complexes de manière succincte (pensez au langage C par rapport au langage Assembleur). De nouveaux niveaux d’abstraction sémantique permettent l’émergence de nouveaux paradigmes.

Q # n’est pas simplement un nouveau niveau d’abstraction par rapport à un ancien, familier, cependant. Q # est une abstraction sémantique sur un matériel révolutionnaire qui est toujours en cours d’implémentation physique — un ordinateur quantique.

Vous pouvez exprimer des choses en Q # que vous ne pouvez tout simplement pas exprimer dans un langage informatique classique.

Q # est vraiment plus proche d’un langage d’assemblage pour ordinateurs quantiques, en termes de primitives qu’il encapsule. Nous sommes essentiellement avec des ordinateurs quantiques où nous étions à la fin des années 40 / début des années 50 avec des ordinateurs classiques.

Modèle de programmation Q#

Le modèle de programmation de Q# consiste à traiter l’ordinateur quantique comme un coprocesseur. Cela revient à travailler avec un GPU — l’unité de traitement graphique de la carte vidéo de votre ordinateur. Le GPU est un processeur spécialisé pour croquer les polygones et calculer l’ombrage. Il s’avère que les GPU sont également bons pour le type de calcul des nombres nécessaire à l’extraction de Bitcoins, donc les gens les utilisent pour cela. Pour programmer un GPU, vous assemblez les instructions du GPU à l’aide d’un langage spécifique au domaine, puis vous les envoyez du processeur principal de l’ordinateur au GPU pour exécution.

Avec Q #, vous écrivez les opérations quantiques dans le langage spécifique au domaine Q #, qui est un langage fonctionnel sans état, puis vous les envoyez à l’ordinateur quantique à partir d’un programme écrit en C # fonctionnant sur un processeur classique, qui est également l’endroit où vous recevez la sortie éventuelle de l’ordinateur quantique.

Exemple de code Q#

Après l’atelier, j’ai écrit un programme Q# qui démontre un comportement quantique simple et distinct du comportement d’un ordinateur classique.

Le programme HGate démontre un cas particulier de la fameuse expérience à double fente, où l’observation d’un état intermédiaire du système influence le comportement du système.

« Dieu ne joue pas aux dés… » — Albert Einstein

Pour comprendre le comportement affiché par ce programme : imaginez prendre une pièce et commencer la tête haute, puis la retourner. Il a 50% de chances de se retrouver tête ou queue. Vous vérifiez ce que c’est, puis retournez-le à nouveau. Il a 50% de chances de revenir tête ou queue.

Assez simple. Maintenant, voici l’étrangeté quantique. Dans le domaine quantique, si la pièce est une particule soumise à des effets quantiques, vous la retournez en l’envoyant via un circuit logique quantique appelé porte de Hadamard. Si vous le regardez après le premier flip, vous obtenez un 50/50 têtes / queues sur ce flip et sur le deuxième flip. Cependant, si vous ne le regardez pas après le premier flip, le deuxième flip se lève — à chaque fois.

Albert Einstein, qui a découvert la Mécanique Quantique pour la première fois, ne pouvait pas croire que l’univers pouvait fonctionner ainsi. Et pourtant, c’est le cas, car sinon nous n’aurions pas d’iPhones et d’autres appareils électroniques modernes, qui fonctionnent à des échelles extrêmement petites et exploitent un certain nombre de comportements quantiques comme celui-ci. Einstein a passé le reste de sa vie à essayer de prouver que l’étrangeté quantique qu’il a découverte n’était pas une chose, sans succès. Et c’est pourquoi il n’en a pas le mérite. Mais oui, il a publié trois articles en même temps – l’un était une preuve de l’existence des atomes, le second était la relativité et le troisième portait sur le rayonnement du corps noir, qui est un phénomène de mécanique quantique.

Pour en savoir un peu plus sur les raisons pour lesquelles ce comportement quantique spécifique se produit, consultez la section README.md fichier de l’exemple de programme.

Une opération quantique Q#

Voici un exemple d’opération quantique écrite en Q#, tiré de l’exemple de programme lié ci-dessus:

operation CoinFlip (count: Int) : (Int, Int)
{
body
{
mutable numOnes = 0;
mutable numZeros = 0; // Get a Qubit in Zero state
using (qubit = Qubit) { for (test in 1..count) {
// Set is an operation defined elsewhere
Set (Zero, qubit); // Send the qubit through a Hadamard quantum logic gate
H(qubit); // Measure the value of the q-bit
let state = M(qubit); if (state == Zero) {
set numZeros = numZeros + 1;
}
if (state == One) {
set numOnes = numOnes + 1;
}
}
ResetAll(qubit); // Reset the qubit
}
return (numZeros, numOnes);
}}

La conception du langage Q#

Q # s’inspire de F# en tant que langage fonctionnel (le compilateur/analyseur est écrit en F#), de C# pour la syntaxe, et tire quelques idées de Python (notamment for in).

C’est un langage sans état — il n’y a aucun moyen de conserver l’état entre les opérations quantiques, et la mesure de l’état pour renvoyer une valeur d’une opération réduit l’état quantique à un seul état du monde réel. Il n’a pas de variables, mais utilise la liaison d’immuables constants.Les types

sont basés sur des tuples, avec une arité arbitraire. Il a un support d’application partielle non curry, et a des génériques et des foncteurs. Les foncteurs permettent d’exprimer et de raisonner des séquences d’opérations.

Le compilateur Q # peut effectuer une analyse complète du programme et raisonner sur le code pour effectuer des optimisations avant d’envoyer les opérations à l’ordinateur quantique. Ceci est important en raison du coût des opérations, en particulier compte tenu de la petite tranche de temps pendant laquelle l’état des qubits est cohérent avec les ordinateurs quantiques actuels et probables (à court terme) futurs.

Quels Problèmes Les Ordinateurs Quantiques Peuvent-Ils Résoudre ?

Les ordinateurs classiques utilisent des bits pouvant avoir l’un des deux états – un ou zéro. Les bits d’ordinateur quantique, ou qubits, n’ont qu’un seul de ces deux états lorsque vous les regardez, mais à l’intérieur de l’ordinateur quantique, ils peuvent avoir des états probabilistes. Avec cela, ils peuvent modéliser de nombreux états — en particulier les formes d’onde d’état probabilistes des particules. Comment faites-vous des calculs utiles avec cela? Eh bien, c’est bon pour modéliser des systèmes physiques.

En 1911, nous avons compris comment fabriquer de l’ammoniac. Il faut chauffer l’azote à 5000 degrés et le comprimer à 50 atmosphères. Cet ammoniac est utilisé pour la poudre à canon et l’engrais, et cet engrais a permis la révolution verte des années 60 qui nous a permis de doubler la population humaine mondiale. 4 % du budget énergétique mondial est consacré à la production d’ammoniac.

La nitrogénase est une enzyme d’une bactérie qui vit dans des nodules parasites sur les racines des haricots. Lorsque vous cultivez des haricots dans un champ, cette enzyme fixe l’azote de l’atmosphère dans le sol, fertilisant le sol. Ainsi, les agriculteurs font tourner les cultures – en cultivant du blé, puis des haricots, puis du blé – pour garder le sol fertile.

Pour comprendre comment produire l’ammoniac comme le font les bactéries — à température ambiante en utilisant H2O + N de l’atmosphère —, il faut résoudre l’interaction de 170 électrons. La nitrogénase a deux métaux de transition qui agissent comme catalyseurs: le fer et le molybdène. Cela signifie que nous avons besoin de 21 numbers nombres complexes pour modéliser les formes d’onde des électrons. Il n’y a que 21 atoms atomes sur Terre — vous auriez donc besoin de 1 000 000 de Terres juste pour stocker la définition du problème.

Un ordinateur quantique avec 200 qubits peut modéliser autant d’états.

Avec cet ordinateur, nous pouvons exécuter les simulations pour comprendre comment le faire comme le fait la bactérie. Il y aura de l’ingénierie supplémentaire une fois que nous aurons la solution pour construire quelque chose qui peut le faire — tout comme de nouveaux composés médicamenteux doivent être produits. Et une fois cela fait, la production agricole de l’agriculture sera nettement plus élevée.

Construction d’un ordinateur quantique

Dans un ordinateur quantique, un qubit comporte deux composants : un composant physique qui détient l’état quantique et un composant qui effectue des opérations sur le composant physique.

Un qubit — du moins la façon dont nous l’abordons maintenant – fonctionne à 15 millikelvines. L’hélium liquide est de 4 Kelvins.

Le modèle de l’informatique quantique est une généralisation de l’informatique classique. C’est, mathématiquement, l’algèbre linéaire. Mathématiquement, un qubit est un vecteur dans un espace linéaire de grande dimension (un espace de Hilbert).

Vous ne pouvez pas observer le qubit dans cet espace, mais vous pouvez l’utiliser en demandant au système de lui appliquer des translations rotationnelles.

Les ordinateurs quantiques actuels sont capables de générer un qubit physique pendant 10^-6 secondes. Après cette période, il se désintègre, une correction d’erreur est donc nécessaire.

Il existe deux modèles d’informatique quantique:

  • Le modèle de porte — évolution temporelle de l’état quantique à l’aide de la multiplication matricielle. C’est le modèle que Q# utilise.
  • Recuit quantique – trouver l’état d’énergie le plus bas qui résout un problème. L’ordinateur DWave utilise cette méthode.

L’informatique classique est un cas particulier de l’informatique quantique. Ainsi, les développements et les découvertes en informatique quantique sont à l’origine de connaissances en informatique classique.

Impacts de l’informatique quantique

L’enfant de l’affiche principale de l’impact futur probable de l’informatique quantique est de pouvoir casser les schémas de chiffrement actuels. Cependant, il y aura probablement beaucoup plus de changements percutants d’ici là.

Briser la cryptographie moderne nécessitera des ordinateurs quantiques avec 5000 qubits.

Microsoft déploie déjà un cryptage résistant à l’informatique post-quantique, y compris la cryptographie basée sur un réseau. La cryptographie moderne est basée sur l’affacturage de grands nombres premiers — classiquement coûteux à résoudre, mais trivial pour les ordinateurs quantiques.

NISQC est un « Calcul quantique à échelle Intermédiaire Bruyant ». Certaines personnes développent des ordinateurs qui ont un grand nombre de qubits bruyants. La SEP ne fait pas cela. Ils travaillent à obtenir leur premier « qubit topologique » — un qubit résistant à la décohérence. Ce sera plus pertinent sur le plan informatique. Ils sont sur la bonne voie pour l’obtenir cette année. John espère que de son vivant, nous verrons 1000-1 000 000 qubits sur une plaquette à 15 Millikelvins.

Au fur et à mesure que nous mettons des ordinateurs quantiques en ligne, l’une des choses qu’ils nous aideront à faire est de modéliser des systèmes physiques que nous pouvons utiliser pour fabriquer des ordinateurs quantiques plus efficaces.

Résoudre des problèmes comme la nitrogénase, ou comment la chlorophylle capte le CO2 de l’atmosphère et le transforme en glucides — inversant l’effet de serre et nous permettant de créer de la nourriture à partir de l’air mince (et du soleil) — se rapproche de l’horizon et aura un impact énorme — tout comme l’utilisation d’ordinateurs quantiques pour développer des supraconducteurs.

Et ils débloqueront également des problèmes et des opportunités que nous n’envisageons même pas en ce moment. Einstein ne pensait pas à l’iPhone ou à Internet lorsqu’il a publié son article sur le rayonnement du corps noir.

Nous vivons dans le futur en ce moment.

Pour quelques grands livres qui introduisent la physique quantique sans beaucoup de mathématiques, je recommande:

 » À la recherche du Chat de Schrodinger: Physique quantique et réalité » – une histoire populaire du développement de la mécanique quantique, retraçant l’évolution de la pensée et de la découverte à travers le 20ème siècle.

 » Le Tissu de la Réalité – La Science des Univers Parallèles et ses Implications » – un livre de David Deutsch, un pionnier de l’informatique Quantique. Ce livre commence par la philosophie des sciences (en particulier son épistémologie), et se poursuit en examinant certaines des implications philosophiques de la mécanique quantique.

Si vous voulez vous y mettre, consultez « L’informatique quantique pour les informaticiens ». C’est le livre que John recommande.

Il y a de l’art antérieur dans cet espace — par exemple Quipper, qui est mis en œuvre dans Haskell. Cependant, Q# est livré dans un SDK d’informatique quantique qui comprend un simulateur local de 3 qubits et l’accès à un simulateur cloud de 40 qubits. IBM a OpenQASM — un langage de programmation d’assemblage quantique, qui dispose d’un éditeur visuel de type Scratch et d’une plate-forme informatique quantique (réelle) basée sur le cloud. Q # est un langage de niveau supérieur avec des types et un flux de contrôle.



+