[https://github.com/SnowflurrySDK/Snowflurry.jl/ Snowflurry] est une bibliothèque d'informatique quantique à code source ouvert développée en [[Julia/fr|Julia]] par [https://anyonsys.com/fr Anyon Systèmes] qui permet de construire, de simuler et d'exécuter des circuits quantiques.
Une bibliothèque connexe nommée [https://github.com/SnowflurrySDK/SnowflurryPlots.jl/ SnowflurryPlots] permet de visualiser les résultats de la simulation dans un diagramme à bandes. Pratique pour explorer l'informatique quantique, les fonctionnalités sont disponibles dans la [https://snowflurrysdk.github.io/Snowflurry.jl/dev/index.html documentation] et le guide d'installation est disponible sur la page [https://github.com/SnowflurrySDK/Snowflurry.jl GitHub]. Tout comme la bibliothèque [[PennyLane]], Snowflurry peut être utilisée pour exécuter des circuits quantiques sur l'ordinateur quantique [[MonarQ]].
== Installation ==
Le simulateur d'ordinateur quantique avec [https://github.com/SnowflurrySDK/Snowflurry.jl Snowflurry] est disponible sur toutes nos grappes. Le langage de programmation [https://julialang.org/ Julia] doit être chargé avant d'avoir accès à Snowflurry avec la commande
{{Command|module load julia
|result=}}
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
{{Command|julia
|result=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}}
Les portes logiques quantiques et les commandes sont décrites dans la [https://snowflurrysdk.github.io/Snowflurry.jl/dev/ documentation de Snowflurry].
== Exemple d'utilisation : États de Bell ==
Les états de Bell sont des états à deux qubits maximalement intriqués. Deux exemples simples de phénomènes quantiques sont la superposition et l'intrication. La bibliothèque [https://github.com/SnowflurrySDK/Snowflurry.jl/ Snowflurry] permet de construire le premier état de Bell comme suit.
{{Command|julia
|result=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──
}}
Dans la section de code ci-dessus, la porte de Hadamard crée une superposition égale de |0⟩ et |1⟩ sur le premier qubit tandis que la porte CNOT (porte X contrôllé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 prendre une mesure, l'opération readout permet de spécifier quels qubits seront mesurés. La fonction plot_histogram de la bibliothèque SnowflurryPlots permet de visualiser les résultats.
{{Command|julia
|result=julia> using SnowflurryPlots
julia> push!(circuit, readout(1,1), readout(2,2))
julia> plot_histogram(circuit,1000)
}}
[[File:Bell Graph.png|thumb|alt=Résultats de 1000 simulations de l'état de Bell.]]