CirQ
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:
[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
[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:
[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)
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.
[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())