Snowflurry

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.


Snowflurry

Snowflurry est une librairie d'informatique quantique open source développée en Julia par Anyon Systems, Inc qui permet de construire, de simuler et d'exécuter des circuits quantiques. Une librairie connexe nommée SnowflurryPlots permet de visualiser les résultats de la simulation dans un diagramme à bandes. Pratique pour explorer l'informatique quantique, les fonctionnalitées des librairies sont disponibles dans la documentation et le guide d'installation est disponible sur la page GitHub. Tout comme la librairie CirQ, Snowflurry peut être utilisé pour exécuter des circuits quantiques sur l'ordinateur quantique MonarQ.

Installation de Snowflurry

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

Question.png
[name@server ~]$ module load julia

Ensuite, l'interface de programmation Julia est appelée et la bibliothèque quantique de Snowflurry chargée (environ 5-10 minutes) avec les commandes

Question.png
[name@server ~]$ julia
julia> import Pkg
julia> Pkg.add(url="https://github.com/SnowflurrySDK/Snowflurry.jl", rev="main")
julia> Pkg.add(url="https://github.com/SnowflurrySDK/SnowflurryPlots.jl", rev="main")
julia> using Snowflurry

La liste des portes logiques quantiques et des commandes Snowflurry sont décrites dans la documentation de Snowflurry. Le simulateur quantique de Snowflurry est appelé avec la commande simulate.

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 Snowflurry permet de construire un état de Bell comme ceci:

Question.png
[name@server ~]$ julia
julia> using Snowflurry
julia> circuit=QuantumCircuit(qubit_count=2);
julia> push!(circuit,hadamard(1));
julia> push!(circuit,control_x(1,2));
julia> print(circuit)

Quantum Circuit Object:
   qubit_count: 2 
q[1]:──H────*──
            ¦ 
q[2]:───────X──


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 librairie SnowflurryPlots et la fonction plot_histogram peuvent être utile pour simuler l'état de Bell et visualiser les résultats.


Question.png
[name@server ~]$ julia
julia> using SnowflurryPlots
julia> plot_histogram(circuit,1000)
Résultats de 1000 simulations de l'état de Bell.