Qiskit: Difference between revisions
No edit summary |
No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
== Installation == <!--T:2--> | == Installation == <!--T:2--> | ||
1. Chargez les dépendances de Qiskit. | 1. Chargez les dépendances de Qiskit. | ||
{{Command|module load StdEnv/2023 gcc python/3.11 symengine | {{Command|module load StdEnv/2023 gcc python/3.11 symengine/0.11.2}} | ||
<!--T:3--> | <!--T:3--> | ||
2. Créez et activez [[Python/fr#Créer_et_utiliser_un_environnement_virtuel| | 2. Créez et activez un [[Python/fr#Créer_et_utiliser_un_environnement_virtuel|environnement virtuel Python]]. | ||
{{Command|virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate}} | {{Command|virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate}} | ||
Line 26: | Line 26: | ||
5. Gelez l'environnement et les dépendances. | 5. Gelez l'environnement et les dépendances. | ||
{{Command|prompt=(ENV)[name@server ~]|pip freeze ~/qiskit_requirements.txt}} | {{Command|prompt=(ENV)[name@server ~]|pip freeze --local > ~/qiskit_requirements.txt}} | ||
==Exécuter Qiskit sur une grappe== <!--T:6--> | ==Exécuter Qiskit sur une grappe== <!--T:6--> | ||
{{File | {{File | ||
Line 33: | Line 33: | ||
|contents= | |contents= | ||
#!/bin/bash | #!/bin/bash | ||
#SBATCH --account=def-someuser # | #SBATCH --account=def-someuser #indiquez le nom de votre compte | ||
#SBATCH --time=00:15:00 # | #SBATCH --time=00:15:00 #modifiez s'il y a lieu | ||
#SBATCH --cpus-per-task=1 # | #SBATCH --cpus-per-task=1 #modifiez s'il y a lieu | ||
#SBATCH --mem-per-cpu=1G # | #SBATCH --mem-per-cpu=1G #modifiez s'il y a lieu | ||
<!--T:7--> | <!--T:7--> | ||
# | # Chargez les dépendances des modules. | ||
module load StdEnv/2023 gcc python/3.11 symengine | module load StdEnv/2023 gcc python/3.11 symengine/0.11.2 | ||
<!--T:8--> | <!--T:8--> | ||
# | # Générez l'environnement virtuel dans $SLURM_TMPDIR. | ||
virtualenv --no-download ${SLURM_TMPDIR}/env | virtualenv --no-download ${SLURM_TMPDIR}/env | ||
source ${SLURM_TMPDIR}/env/bin/activate | source ${SLURM_TMPDIR}/env/bin/activate | ||
<!--T:9--> | <!--T:9--> | ||
# | # Installez Qiskit et ses dépendances. | ||
pip install --no-index --upgrade pip | pip install --no-index --upgrade pip | ||
pip install --no-index --requirement ~/qiskit_requirements.txt | pip install --no-index --requirement ~/qiskit_requirements.txt | ||
# | #Modifiez le programme Qiskit. | ||
python qiskit_example.py | python qiskit_example.py | ||
}} | }} | ||
Line 72: | Line 72: | ||
--> | --> | ||
== Exemple d'utilisation : États de Bell == <!--T:13--> | == Exemple d'utilisation : États de Bell == <!--T:13--> | ||
Nous allons créer le premier état de Bell sur [[ | Nous allons créer le premier état de Bell sur [[MonarQ]]. Il faut d'abord importer les modules nécessaires. | ||
from qiskit_aer import Aer | from qiskit_aer import Aer | ||
from qiskit import QuantumCircuit, transpile | from qiskit import QuantumCircuit, transpile |
Latest revision as of 20:17, 24 October 2024
Qiskit est une bibliothèque de programmation quantique à code source ouvert développée en Python par IBM. Comme PennyLane et Snowflurry, elle permet de construire, simuler et exécuter des circuits quantiques.
Installation
1. Chargez les dépendances de Qiskit.
[name@server ~]$ module load StdEnv/2023 gcc python/3.11 symengine/0.11.2
2. Créez et activez un environnement virtuel Python.
[name@server ~]$ virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate
3. Installez une version spécifique de Qiskit.
(ENV) [name@server ~] pip install --no-index --upgrade pip
(ENV) [name@server ~] pip install --no-index qiskit==X.Y.Z qiskit_aer==X.Y.Z
où X.Y.Z
représente le numéro de la version, par exemple 1.1.0
. Pour installer la plus récente version disponible sur nos grappes, n'indiquez pas de version. Ici, nous n'avons importé que qiskit
et qiskit_aer
. Vous pouvez ajouter d'autres logiciels Qiskit en fonction de vos besoins en suivant la structure qiskit_package==X.Y.Z
où qiskit_package
représente le logiciel voulu, par exemple qiskit-finance
. Les wheels présentement disponibles sont listés sur la page Wheels Python.
4. Validez l’installation de Qiskit.
(ENV)[name@server ~] python -c 'import qiskit'
5. Gelez l'environnement et les dépendances.
(ENV)[name@server ~] pip freeze --local > ~/qiskit_requirements.txt
Exécuter Qiskit sur une grappe
#!/bin/bash
#SBATCH --account=def-someuser #indiquez le nom de votre compte
#SBATCH --time=00:15:00 #modifiez s'il y a lieu
#SBATCH --cpus-per-task=1 #modifiez s'il y a lieu
#SBATCH --mem-per-cpu=1G #modifiez s'il y a lieu
# Chargez les dépendances des modules.
module load StdEnv/2023 gcc python/3.11 symengine/0.11.2
# Générez l'environnement virtuel dans $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Installez Qiskit et ses dépendances.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/qiskit_requirements.txt
#Modifiez le programme Qiskit.
python qiskit_example.py
Vous pouvez ensuite soumettre votre tâche à l'ordonnanceur.
Utiliser Qiskit avec MonarQ
Exemple d'utilisation : États de Bell
Nous allons créer le premier état de Bell sur MonarQ. Il faut d'abord importer les modules nécessaires.
from qiskit_aer import Aer from qiskit import QuantumCircuit, transpile from qiskit.visualization import plot_histogram
Ensuite, nous définissons le circuit. Nous appliquons une porte Hadamard afin de créer un état de superposition sur le premier qubit et nous appliquons ensuite une porte CNOT pour intriquer le premier et le deuxième qubit.
circuit = QuantumCircuit(2,2) circuit.h(0) circuit.cx(0,1) circuit.measure([0,1],[0,1])
Nous précisons le simulateur que nous voulons utiliser puis nous transpilons le circuit. Nous obtenons le dénombrement des états finaux des qubits après avoir pris des mesures répétées.
simulator = Aer.get_backend('qasm_simulator') compiled_circuit = transpile(circuit, simulator) job = simulator.run(compiled_circuit) result = job.result() counts = result.get_counts() print("counts: ", counts) {'00': 489, '11': 535}
Nous affichons un histogramme des résultats avec la commande
plot_histogram(counts)