CirQ

From Alliance Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.


Cirq

Cirq est une librairie d'informatique quantique open source développée en python par Google qui permet de construire, d'optimiser, de simuler et d'exécuter des circuits quantiques. Plus particulièrement, Cirq permet de simuler des circuits sur des configurations spécifiques de qubits ce qui permet d'optimiser un circuit pour une certaine architecture de qubits. Plus d'information sur les fonctionnalitées de la librairie sont disponibles sur la documentation et sur le GitHub de la librairie. Tout comme la librairie Snowflurry, Cirq peut être utilisé pour exécuter des circuits quantiques sur l'ordinateur quantique MonarQ.

Installation de Cirq

Le simulateur d'ordinateur quantique Cirq est accessible sur tous les grappes de l'Alliance. Le langage de programmation Python doit être chargé avant d'avoir accès à Cirq avec la commande:

Question.png
[name@server ~]$ module load python/3.10.2

Il est préférable de créer un environnement virtuel, tel que décrit ici, afin de conserver la même version de Cirq et accèlerer l'installation. La bibliothèque quantique Cirq est chargée (environ 5-10 minutes, la première fois que l'environnement virtuel est employé) avec les commandes

Question.png
[name@server ~]$ python -m pip install cirq cirq-core[contrib]

Exemple d'utilisation: États de Bell

Les états de Bell sont les états les plus simples qui permettent d'expliquer à la fois la superposition et l'intrication sur des qubits. La librairie Cirq permet de construire un état de Bell comme ceci:

Question.png
[name@server ~]$ python
python> import cirq
python> from cirq.contrib.svg import SVGCircuit
python> from cirq import H, CNOT

python> qubits = cirq.LineQubit.range(2)
python> circuit = cirq.Circuit(H.on(qubits[0]),CNOT.on(qubits[0],qubits[1]))
python> circuit.append(cirq.measure(qubits, key='m'))
python> SVGCircuit(circuit)
Représentation du circuit créant un état de Bell

La section de code ci-haut construit et affiche un circuit qui prépare un état de Bell. La porte H (porte de Hadamard) crée une superposition égale de |0⟩ et |1⟩ sur le premier qubit tantis que la porte CNOT (porte X controllée) crée une intrication entre les deux qubits. Cet état de Bell est donc une superposition égale des états |00⟩ et |11⟩. La simulation de ce circuit à l'aide de CirQ permet de visualiser ces résultats. Dans le diagramme à bandes ci-dessous, le nombre entier 3 représente l'état |11⟩ puisque 3 s'écrit 11 en binaire.

Question.png
[name@server ~]$ python
python> s = cirq.Simulator().run(circuit, repetitions=1000)
python> counts = s.histogram(key='m')
python> cirq.plot_state_histogram(counts, plt.subplot())
Diagramme du résultat de 1000 simulations de l'état de Bell