Un compilateur optimisant pour les ordinateurs...

12
Un compilateur optimisant pour les ordinateurs quantiques Victor Careil Univ Rennes, F-35000 Rennes, France 20 janvier 2019 Résumé Grâce au développement récent des ordinateurs quantiques, l’informatique quan- tique est aujourd’hui en pleine expansion. Cependant, ces ordinateurs restent très limités, à la fois par leur capacité et leur précision. Nous détaillerons dans ce rapport différentes optimisations pour des programmes quantiques, et analyserons les perfor- mances pratiques des ordinateurs quantiques actuellement disponibles. Mots-clés: compilation, calcul quantique, calcul réversible, circuits, optimisation Référence : stage effectué du 22/05/2018 au 03/07/2018 au centre de recherche Inria Rennes - Bretagne Atlantique sous la direction de Sylvain Collange, PACAP, INRIA. 1 Introduction 1.1 Présentation du domaine Le calcul quantique est un domaine établi depuis les années 2000, à la fois en infor- matique théorique et en physique appliquée. L’idée générale est d’utiliser des propriétés quantiques afin de réaliser des calculs usuellement trop complexes sur des ordinateurs clas- siques. En effet, l’ordinateur quantique introduit un nouveau domaine de complexité, BPQ, qui par exemple permet de résoudre la factorisation d’entiers en un temps polynomial, et donc de casser le cryptage RSA [8]. Ce domaine connaît actuellement un regain d’attention, et ce grâce au développement de véritable ordinateurs quantiques, par notamment Intel, Google et IBM. La plupart des recherches faites jusqu’à aujourd’hui supposent l’existence d’ordinateurs à plusieurs millions de qubits. Cependant, il apparaît que nous en sommes encore loin, le maximum actuel étant de l’ordre de 50 qubits. C’est pourquoi la recherche actuelle se concentre sur le NISQ, Noisy Intermediate Scale Quantum computing, où l’on dispose d’un nombre très limité de qubits qui présentent des erreurs de calcul dues aux imperfections du système physique et aux perturbations extérieures (bruit) [7]. 1.2 Principe général 1.2.1 Qubit Un qubit est l’équivalent quantique d’un bit en informatique classique. Contrairement à ce dernier, sa valeur n’est cependant pas binaire, mais est une superposition de deux états : α|0i + β |1i, avec α, β C et |α| 2 + |β | 2 =1. Cette superposition peut être visualisée grâce à la sphère de Bloch (figure 1). Lorsque la valeur d’un qubit est mesurée dans la base (|0i,|1i), elle est égale à 0 avec une probabilité de |α| 2 , et 1 avec une probabilité de |β | 2 . Mesurer un qubit détruit la superposition. 1

Transcript of Un compilateur optimisant pour les ordinateurs...

Page 1: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Un compilateur optimisant pour les ordinateurs quantiques

Victor Careil

Univ Rennes, F-35000 Rennes, France

20 janvier 2019

RésuméGrâce au développement récent des ordinateurs quantiques, l’informatique quan-

tique est aujourd’hui en pleine expansion. Cependant, ces ordinateurs restent trèslimités, à la fois par leur capacité et leur précision. Nous détaillerons dans ce rapportdifférentes optimisations pour des programmes quantiques, et analyserons les perfor-mances pratiques des ordinateurs quantiques actuellement disponibles.

Mots-clés: compilation, calcul quantique, calcul réversible, circuits, optimisation

Référence : stage effectué du 22/05/2018 au 03/07/2018 au centre de recherche InriaRennes - Bretagne Atlantique sous la direction de Sylvain Collange, PACAP, INRIA.

1 Introduction

1.1 Présentation du domaine

Le calcul quantique est un domaine établi depuis les années 2000, à la fois en infor-matique théorique et en physique appliquée. L’idée générale est d’utiliser des propriétésquantiques afin de réaliser des calculs usuellement trop complexes sur des ordinateurs clas-siques. En effet, l’ordinateur quantique introduit un nouveau domaine de complexité, BPQ,qui par exemple permet de résoudre la factorisation d’entiers en un temps polynomial, etdonc de casser le cryptage RSA [8].

Ce domaine connaît actuellement un regain d’attention, et ce grâce au développementde véritable ordinateurs quantiques, par notamment Intel, Google et IBM. La plupartdes recherches faites jusqu’à aujourd’hui supposent l’existence d’ordinateurs à plusieursmillions de qubits. Cependant, il apparaît que nous en sommes encore loin, le maximumactuel étant de l’ordre de 50 qubits. C’est pourquoi la recherche actuelle se concentre surle NISQ, Noisy Intermediate Scale Quantum computing, où l’on dispose d’un nombre trèslimité de qubits qui présentent des erreurs de calcul dues aux imperfections du systèmephysique et aux perturbations extérieures (bruit) [7].

1.2 Principe général

1.2.1 Qubit

Un qubit est l’équivalent quantique d’un bit en informatique classique. Contrairementà ce dernier, sa valeur n’est cependant pas binaire, mais est une superposition de deuxétats : α|0〉+β|1〉, avec α, β ∈ C et |α|2+ |β|2 = 1. Cette superposition peut être visualiséegrâce à la sphère de Bloch (figure 1).

Lorsque la valeur d’un qubit est mesurée dans la base (|0〉,|1〉), elle est égale à 0 avecune probabilité de |α|2, et 1 avec une probabilité de |β|2. Mesurer un qubit détruit lasuperposition.

1

Page 2: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Figure 1 – Sphère de Bloch

Plusieurs qubits peuvent être intriqués : lorsqu’ils sont mesurés, ils retournent tous lamême valeur.

1.2.2 Définitions & Notations

La valeur d’un qubit se note α|0〉+ β|1〉 (α, β ∈ C). Considérons n qubits. Il sont dansun sous-espace de C2n . Pour noter les vecteurs de la base de cet espace, on adopte unereprésentation binaire.

Par exemple, pour deux qubits : α|00〉 + β|01〉 + γ|10〉 + η|11〉. Cela peut se traduirede la manière suivante : la probabilité d’obtenir 0 sur les deux qubits est de |α|2, 0 sur lepremier et 1 sur le deuxième |β|2 . . .. Si ces deux qubits sont intriqués, on a par exempleβ = 0 et γ = 0. Le sous-espace est donc réduit à α|00〉 + η|11〉, rendant cette intricationimmédiatement visible.

1.2.3 Opérations

Toute opération est représentée par une matrice unitaire de taille 2n × 2n (comme lesvecteurs d’état sont de taille 2n, voir 1.2.2). Une opération sur un seul qubit consiste enune rotation sur la sphère de Bloch. Toute rotation peut être décomposée en rotationssuivant les axes X et Z.

Par exemple, les portes suivantes peuvent être appliquées à un qubit :— Porte X : consiste en une rotation autour de l’axe X, faisant correspondre |0〉 à |1〉

et |1〉 à |0〉. C’est l’équivalent de la porte NOT en informatique classique.— Porte H (Hadamard-Walsh) : associe 1√

2|0〉 + 1√

2|1〉 à |0〉, et 1√

2|0〉 − 1√

2|1〉 à |1〉.

Elle permet de mettre un qubit en état de superposition.Afin d’assurer la complétude du langage, il est aussi nécessaire d’avoir une porte multi-

qubits : la porte CNOT, ou Controlled-X. Elle correspond à la porte XOR en informatiqueclassique.

Elle associe α|00〉+ β|01〉+ γ|11〉+ η|10〉 à α|00〉+ β|01〉+ γ|10〉+ η|11〉 : "Inverse lesecond qubit quand le premier est |1〉".

Cette porte peut être utilisée pour intriquer des qubits.

2

Page 3: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Figure 2 – CNOT appliqué sur les qubits q0 et q2 : q2 est le qubit de contrôle (q0 serainversé si q2 est |1〉)

Les représentations matricielles de ces portes sont les suivantes :

— Porte X :[0 11 0

]— Porte H : 1√

2

[1 11 −1

]

— Porte CNOT :

1 0 0 00 1 0 00 0 0 10 0 1 0

Si on multiplie ces matrices par (α, β) (ou (α, β, γ, η) pour CNOT), on obtient bien

les résultats listés ci-dessus.

1.2.4 Programme quantique

Un programme quantique consiste en une suite d’opérations sur un ou plusieurs qubits,et se finit par une mesure de la valeur de ces qubits. On adopte la représentation suivante :

Figure 3 – Exemple de circuit quantique

Chaque ligne représente un qubit, et les portes représentent les opérations appliquéessur ces qubits.

Plus formellement, deux portes U et V en parallèle représentent le produit tensoriel U⊗V , deux portes en série donnent le produit de matrice U×V , et un fil est la matrice identité.Comme ce sont des matrices unitaires, les opérations sont associatives et commutatives.

Par exemple, le début du circuit ci-dessus sur les qubits q0 et q1 peut se noter de lamanière suivante :

(MH ⊗ I2)×MCNOT × (I2 ⊗MH)

1.3 Hardware

Des ordinateurs quantiques sont actuellement développés par de nombreuses entre-prises, notamment Google, Intel et IBM. Comme IBM donne un accès gratuit à ses ma-chines, c’est ces dernières qui ont été utilisées.

IBM propose 3 machines en libre accès :— ibmqx2 : 5 qubits— ibmqx4 : 5 qubits

3

Page 4: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

— ibmqx5 : 16 qubitsLes taux d’erreurs de ces machines sont importants, entre 2% et 10% d’erreur par

porte CNOT, et entre 0.1% et 1% par porte sur un seul qubit, ce qui rend les portesCNOT particulièrement coûteuses.

La programmation de ces machines s’effectue en OpenQASM (ou QASM ) [2].

Figure 4 – Portes CNOT disponible sur les machines ibmqx4 et ibmqx5

1.4 ZX Calculus

Le ZX Calculus est un langage graphique permettant de raisonner sur des circuitsquantiques de manière plus aisée. Il a été introduit par Bob Coecke et Ross Duncan [1].Comme vu en 1.2.4, un programme quantique est usuellement représenté par une suitede multiplications et de produits tensoriels de matrices. Ces matrices ont une taille de2n× 2n, avec n le nombre de qubits. Ceci rend la manipulation de programmes quantiquesparticulièrement peu intuitive.

En ZX Calculus, ces matrices sont représentées par des nœuds reliés entre eux par descâbles. Un nœud vert représente une rotation suivant l’axe Z, et un nœud rouge suivantl’axe X. Grâce à des règles simples (figure 5), le ZX Calculus permet une manipulationaisée des programmes quantiques, notamment afin de les optimiser en simplifiant certainescombinaisons de nœuds.

2 Optimisation de portes Toffoli consécutives

2.1 Présentation

Une porte Toffoli est similaire à une porte CNOT, sauf qu’au lieu d’avoir un seulqubit de contrôle, elle en possède plusieurs. Plus formellement, une porte Toffoli d’ordre Ns’applique sur N qubits : N−1 de contrôle, et un de résultat. Si les N−1 qubits de contrôlessont tous à |1〉, le dernier qubit est inversé. Les portes Toffolis sont particulièrement utilespour écrire des programmes quantiques, et sont notamment utilisées par la résolution duproblème SAT.

Cependant, ces portes sont très coûteuses à implémenter : une porte de Toffoli avec 3qubit — et donc 2 de contrôle, la plus petite possible — requiert 6 portes CNOT pourêtre implémentée. De par leur important usage et leur coût, il apparaît donc intéressantde chercher à optimiser celles-ci.

4

Page 5: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Figure 5 – Règles de base du ZX Calculus

Figure 6 – Porte Toffoli sur q0, q1 et q2 : q1 et q2 sont les qubits de contrôle

2.2 Principe

Afin d’optimiser ces portes, [5] propose d’utiliser des portes de Toffoli à phases rela-tives. Ces portes sont en effet moins coûteuses à réaliser. Cependant, elles introduisent undéphasage : pour corriger cela, la porte Toffoli suivante applique un déphasage inverse. Parexemple, si une porte de Toffoli est appliquée sur les qubits (1, 2, 3), et qu’une autre portede Toffoli est aussi appliquée sur ces même qubits, la première peut être remplacée parune porte de Toffoli avec un déphasage de φ, et la seconde par une porte de Toffoli avecun déphasage de −φ. Ainsi, l’implémentation est moins coûteuse, sans avoir d’effet sur le

5

Page 6: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

reste du circuit.Cependant, les portes pouvant être entre ces deux Toffolis sont limitées. Seuls des qubits

de contrôle sont autorisés : c’est-à-dire que les portes doivent être des portes CNOT ouToffolis, et que les qubits affectés par le déphasage doivent être des qubits de contrôle de cesportes. Malgré cela, il existe de nombreuses situations où une telle optimisation s’applique,et notamment lors d’une implémentation d’une porte Toffoli d’ordre N par une suite deToffolis d’ordre M , avec M < N .

Figure 7 – Implémentation d’une Toffoli d’ordre 6 avec des Toffolis d’ordre 3.

Figure 8 – Implémentation d’une Toffoli d’ordre 6 avec des Toffolis d’ordre 3 relatives.Ici RT4 est autorisé car RT6 et RT−6 s’annulent.

2.3 Application au ZX Calculus

Nous avons cherché à traduire une telle optimisation en transformation dans le ZXCalculus. Cela pourrait s’avérer particulièrement utile lors d’une utilisation du ZX Calculusen langage intermédiaire entre un programme quantique et de l’assembleur quantique, afind’appliquer des optimisations sur celui-ci, et non directement sur le circuit. Cependant, ilapparaît qu’une telle transformation se traduit difficilement en ZX Calculus. Il est doncplus approprié de l’appliquer au préalable sur le circuit.

6

Page 7: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

3 Compilateur quantique en C++

3.1 Description du compilateur existant

En collaboration avec l’UFMG au Brésil, l’équipe PACAP a développé une infrastruc-ture de compilation en C++ basée sur QASM ainsi qu’un allocateur de registres. Cetallocateur permet de faire correspondre à chaque qubit du programme un qubit physique.La difficulté d’une telle tâche viens de l’absence de liaisons entre certains qubits physiques,nécessitant parfois d’ajouter des swap au programme afin de pouvoir le réaliser [9].

Ce compilateur, écrit en C++ moderne, fonctionne avec des pass (ou étages de com-pilation), de manière similaire à LLVM. Nous avons donc implémenté l’optimisation desportes Toffolis décrite ci-dessus sur ce compilateur.

3.2 Réalisation

3.2.1 Output Latex

Nous avons tout d’abord ajouté une sortie graphique au compilateur. En effet, la sortieexistante — du QASM brut – était peu pratique pour vérifier des optimisations basés surdes reconnaissances de schémas. Pour faire cela, nous avons choisi d’utiliser qasm2circ [6],qui permet de réaliser aisément des circuits quantiques en Latex.

3.2.2 Optimisation des portes Toffolis

Nous avons ensuite ajouté un pass au programme, qui, si les critères nécessaires sontremplis, remplace des portes Toffolis par des portes Toffolis relatives.

3.3 Validation

Vérification que s’il y a une porte entre les deux Toffolis l’optimisation n’est pas appli-quée :

Figure 9 – La porte U est bien prise en compte

Vérification de la réduction du nombre de portes CNOT : le nombre de portes CNOTnécessaires pour réaliser le programme en figure 10 est de 25 sans optimisations, et 21 avec.

7

Page 8: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Vérification que si les qubits entre les deux Toffolis sont des qubits de résultats l’opti-misation n’est pas appliquée :

Figure 10 – RT0 est autorisée car elle s’applique sur un contrôle, mais pas la deuxièmeToffoli car elle s’applique sur un résultat

3.4 Test pratique

Nous avons ensuite cherché un cas pratique d’utilisation des Toffolis, et avons utiliséle problème SAT pour tester le gain d’une telle optimisation sur un ordinateur quantique.Les fichiers QASM pour SAT utilisés sont ceux des benchmarks IBM [4].

Cependant, il apparaît que même avec l’optimisation le résultat est trop bruité pourobserver une amélioration (voir figure 11).

4 Décomposition de matrices unitaires

4.1 Description du problème

Lors de la réalisation d’un algorithme quantique, il est nécessaire de pouvoir utiliserdes portes arbitraires représentées par des matrices unitaires, comme par exemple dansl’algorithme de Shor [8]. Cependant, de telles portes ne sont pas réalisable directement surun ordinateur quantique. C’est pourquoi de telles portes vont être approximées par unesuite de portes disponible physiquement. Pour réaliser cette décomposition de matricesunitaires, plusieurs approches sont possibles.

4.2 Approche conventionnelle : Solovay-Kitaev

Le théorème de Solovay-Kitaev (SK) prouve qu’il est possible de trouver une approxima-tion de toute matrice unitaire de manière rapide, c’est-à-dire en utilisant peu de matrices.[3] détaille l’algorithme pour réaliser une telle décomposition. Cependant, cette algorithmeest efficace pour un nombre fini de matrices autorisées pour décomposer la matrice de dé-part. Or, avec les ordinateurs d’IBM, toute rotation arbitraires suivant les axes X et Z estautorisées. De plus, le temps de calcul pour trouver cette approximation est de l’ordre de2N , avec N le nombre de matrices différentes utilisées pour décomposer la matrice initiale.

Par exemple, si on fournit à l’algorithme toute les rotations suivant X et Z moduloπ/2, cela fait 8 matrices autorisées, et donc une complexité de 28. Une telle approche estdonc valide, mais apparaît quelque peu artificielle par rapport à une méthode utilisant desrotations arbitraires directement.

4.3 Qubiter

Qubiter est un compilateur quantique écrit par Robert R. Tucci [10]. Afin de décompo-ser une matrices unitaire, il utilise la décomposition CS, ou Cosinus-Sinus. Grâce à cela, et àun certain nombre de manipulations sur les matrices, il parvient à décomposer une matrice

8

Page 9: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

Figure 11 – Dans les trois cas, le résultat apparaît bruité

unitaire en rotations suivants Y et Z (ce qui peut facilement être transformé en rotationsX/Z) et en portes CNOT. Comme contrairement à la décomposition SK les rotations sontutilisées directement, cette méthode parait plus adaptée aux ordinateurs IBM.

5 Analyse des erreurs des machines IBM

Nous avons ensuite cherché à estimer les erreurs des ordinateurs quantiques IBM. Pourcela, nous avons utilisé la machine ibmqx4, et lancé une série de tests simples : le qubit 0 estmis en état de superposition grâce à une porte de Hadamard, et deux CNOT consécutifssont appliqués N fois sur les qubits 0 et 1, 0 étant le qubit de contrôle. Ici, l’état quantiqueserait 1√

2|00〉+ 1√

2|10〉. On aurait donc p(r = 00) = 0.5 et p(r = 10) = 0.5 avec r le résultat

de la mesure.Nous avons défini l’erreur d’un résultat α|00〉+β|01〉+γ|10〉+η|11〉 comme |0.5−α2|+

|0.5− γ2|.

Figure 12 – Exemple de test avec N = 1

9

Page 10: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

5.1 Impact des calibrations

Nous avons tout d’abord cherché à estimer l’impact des calibrations. En effet, les ma-chines IBM sont calibrées quotidiennement. Nous avons donc lancé le test avec N = 10avant et après calibration :

Figure 13 – Impact de 20 CNOT avant et après calibration

Il apparaît que le calibrage de la machine dérive d’environ 10% en 24h.

5.2 Impact du nombre de portes CNOT

Nous avons ensuite cherché à estimer l’erreur en fonction du nombre de portes CNOTappliquées.

Figure 14 – Impact du nombre de CNOT

L’erreur initiale est due au taux d’erreur des mesures, de l’ordre de 10%. On voit quel’erreur croit de manière quasi-linéaire, avec une pvalue de l’ordre de 10−53. La pente de

10

Page 11: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

cette courbe est de 5.4 ∗ 10−3 : cela veut dire que chaque porte CNOT augmente l’erreurde 0.5%, ce qui est cohérent avec les chiffres annoncés par IBM.

Le problème SAT décrit ci-dessus utilise, pour N = 7, 66 portes CNOT, ce qui corres-pond à une erreur proche de 50% si appliquées sur une même paire de qubits.

Cependant, il est peut-être possible d’améliorer cette erreur en exécutant les portesCNOT en parallèle.

5.3 Exécution de portes en parallèle

Nous avons donc cherché une éventuelle corrélation entre une montée de l’erreur etl’exécution de portes en parallèle sur d’autre qubits.

Figure 15 – Influence des calculs sur d’autres qubits

Au vu de la figure 15, il paraît tentant de conclure que l’exécution de CNOT surd’autres qubits influence les qubits 0 et 1. Cependant, il faut aussi prendre en compte letemps de décohérence : en effet, plus le programme est long, plus un qubit est susceptiblede s’inverser. En ajoutant des CNOT sur les qubits 3 et 2, le temps du programme estallongé, ce qui explique cette différence d’erreur entre ces deux courbes.

Le parallélisme n’est en effet pas totalement exploité par l’implémentation actuelled’IBM. De futures architectures pourraient optimiser cela, réduisant l’erreur.

6 Conclusion

La puissance d’un ordinateur quantique ne se réduit donc pas à son nombre de qubitsmais dépend surtout de ses taux d’erreurs. Il faudra réduire drastiquement ces sourcesd’erreur, en matériel ou en logiciel, sous peine de se retrouver avec plus de qubits qu’on nepeut utiliser.

L’exécution de plusieurs portes quantiques en parallèle est une direction pour réduirel’impact du temps de décohérence qui ne semble pas exploitée actuellement. Elle demandedu travail à la fois au niveau architecture (pilotage simultané de plusieurs qubits, expressiondu parallélisme dans le langage machine) et au niveau compilation (comment maximiserle parallélisme dans un programme quantique).

11

Page 12: Un compilateur optimisant pour les ordinateurs quantiquesperso.eleves.ens-rennes.fr/people/victor.careil/... · Un compilateur optimisant pour les ordinateurs quantiques Victor Careil

7 Remerciements

Je tiens à remercier Sylvain Collange pour son soutien tout au long de ce stage, ainsique l’équipe PACAP pour son acceuil.

Références

[1] Bob Coecke and Ross Duncan. Interacting quantum observables : categorical algebraand diagrammatics. New Journal of Physics, 13(4) :043016, 2011.

[2] A. W. Cross, L. S. Bishop, J. A. Smolin, and J. M. Gambetta. Open QuantumAssembly Language. ArXiv e-prints, July 2017.

[3] C. M. Dawson and M. A. Nielsen. The Solovay-Kitaev algorithm. eprint arXiv :quant-ph/0505030, May 2005.

[4] IBM. Benchmarks sat. https://github.com/Qiskit/openqasm/tree/master/benchmarks/sat.

[5] D. Maslov. Advantages of using relative-phase Toffoli gates with an application tomultiple control Toffoli optimization. February 2016.

[6] MIT. qasm2circ. https://www.media.mit.edu/quanta/qasm2circ/.

[7] J. Preskill. Quantum Computing in the NISQ era and beyond. ArXiv e-prints, January2018.

[8] P. W. Shor. Polynomial-Time Algorithms for Prime Factorization and Discrete Loga-rithms on a Quantum Computer. eprint arXiv :quant-ph/9508027, August 1995.

[9] Marcos Yukio Siraichi, Vinícius Fernandes Dos Santos, Sylvain Collange, and FernandoMagno Quintao Pereira. Qubit allocation. Proceedings of the 2018 InternationalSymposium on Code Generation and Optimization - CGO 2018, 2018.

[10] R. R. Tucci. A Rudimentary Quantum Compiler. eprint arXiv :quant-ph/9805015,May 1998.

12