Snowflurry
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 PennyLane, 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:
[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
[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.
Exemple d'utilisation: états de Bell
Les états de Bell sont des états à deux qubits maximalement intriqués. Ce sont des exemples simples de deux phénomènes quantiques: la superposition et l'intrication. La librairie Snowflurry permet de construire le premier état de Bell comme suit.
[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)
</div>
<div lang="fr" dir="ltr" class="mw-content-ltr">
Quantum Circuit Object:
qubit_count: 2
q[1]:──H────*──
¦
q[2]:───────X──
Dans la section de code ci-haut, la porte de Hadamard crée une superposition égale de |0⟩ et |1⟩ sur le premier qubit tandis que la porte CNOT (porte X controllée) crée une intrication entre les deux qubits. On retrouve une superposition égale des états |00⟩ et |11⟩, soit le premier état de Bell. La fonction simulate
permet de simuler l'état exact du système.
julia> state = simulate(circuit) julia> print(state) 4-element Ket{ComplexF64}: 0.7071067811865475 + 0.0im 0.0 + 0.0im 0.0 + 0.0im 0.7071067811865475 + 0.0im
Pour effectuer une mesure, l'opération readout
permet de spécifier quels qubits seront mesurés. La bibliothèque SnowflurryPlots et la fonction plot_histogram
permettent de visualiser les résultats.
[name@server ~]$ julia
julia> using SnowflurryPlots
julia> push!(circuit, readout(1,1), readout(2,2))
julia> plot_histogram(circuit,1000)