Qiskit: Difference between revisions
No edit summary |
(Marked this version for translation) |
||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
<translate> | <translate> | ||
== Qiskit == | == Qiskit == <!--T:1--> | ||
[https://docs.quantum.ibm.com/ Qiskit] est une bibliothèque de programmation quantique à code source ouvert développée en Python par IBM. Comme les bibliothèques [[PennyLane]] ou [[Snowflurry]], elle permet de construire, simuler et exécuter des circuits quantiques. La documentation de Qiskit est disponible [https://docs.quantum.ibm.com/ en ligne]. | [https://docs.quantum.ibm.com/ Qiskit] est une bibliothèque de programmation quantique à code source ouvert développée en Python par IBM. Comme les bibliothèques [[PennyLane]] ou [[Snowflurry]], elle permet de construire, simuler et exécuter des circuits quantiques. La documentation de Qiskit est disponible [https://docs.quantum.ibm.com/ en ligne]. | ||
== Installation de Qiskit == | == Installation de Qiskit == <!--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 scipy-stack}} | {{Command|module load StdEnv/2023 gcc python/3.11 symengine scipy-stack}} | ||
<!--T:3--> | |||
2. Créez et activez un environnement virtuel Python. | 2. Créez et activez un environnement virtuel Python. | ||
{{Command|virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate}} | {{Command|virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate}} | ||
<!--T:4--> | |||
3. Installez une version spécifique de Qiskit. | 3. Installez une version spécifique de Qiskit. | ||
{{Commands | {{Commands | ||
Line 18: | Line 20: | ||
où <code>X.Y.Z</code> représente le numéro de la version, par exemple <code>1.1.0</code>. Pour installer la plus récente version disponible pour nos grappes, n'indiquez pas de version. Ici, nous n'avons importé que <code>qiskit</code> et <code>qiskit_aer</code>. Vous pouvez ajouter d'autres logiciels Qiskit en fonction de vos besoins en suivant la structure <code>qiskit_package==X.Y.Z</code> où <code>qiskit_package</code> représente le logiciel voulu, par exemple <code>qiskit-finance</code>. Les wheels présentement disponibles sont sur la page [[Available Python wheels/fr|Wheels Python]]. | où <code>X.Y.Z</code> représente le numéro de la version, par exemple <code>1.1.0</code>. Pour installer la plus récente version disponible pour nos grappes, n'indiquez pas de version. Ici, nous n'avons importé que <code>qiskit</code> et <code>qiskit_aer</code>. Vous pouvez ajouter d'autres logiciels Qiskit en fonction de vos besoins en suivant la structure <code>qiskit_package==X.Y.Z</code> où <code>qiskit_package</code> représente le logiciel voulu, par exemple <code>qiskit-finance</code>. Les wheels présentement disponibles sont sur la page [[Available Python wheels/fr|Wheels Python]]. | ||
<!--T:5--> | |||
4. Validez l’installation de Qiskit. | 4. Validez l’installation de Qiskit. | ||
{{Command|prompt=(ENV)[name@server ~]|python -c 'import qiskit'}} | {{Command|prompt=(ENV)[name@server ~]|python -c 'import qiskit'}} | ||
Line 23: | 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 ~/qiskit_requirements.txt}} | ||
==Exécuter Qiskit sur une grappe== | ==Exécuter Qiskit sur une grappe== <!--T:6--> | ||
{{File | {{File | ||
|name=script.sh | |name=script.sh | ||
Line 34: | Line 37: | ||
#SBATCH --mem-per-cpu=1G #Modify as needed | #SBATCH --mem-per-cpu=1G #Modify as needed | ||
<!--T:7--> | |||
# Load modules dependencies. | # Load modules dependencies. | ||
module load StdEnv/2023 gcc python/3.11 symengine scipy-stack | module load StdEnv/2023 gcc python/3.11 symengine scipy-stack | ||
<!--T:8--> | |||
# Generate your virtual environment in $SLURM_TMPDIR. | # Generate your virtual environment in $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--> | |||
# Install Qiskit and its dependencies. | # Install Qiskit and its dependencies. | ||
pip install --no-index --upgrade pip | pip install --no-index --upgrade pip | ||
Line 49: | Line 55: | ||
}} | }} | ||
Vous pouvez ensuite soumettre votre tâche à [[Running jobs/fr|l'ordonnanceur]]. | Vous pouvez ensuite soumettre votre tâche à [[Running jobs/fr|l'ordonnanceur]]. | ||
== Utiliser Qiskit avec MonarQ == | == Utiliser Qiskit avec MonarQ == <!--T:10--> | ||
<!-- Il est possible d'importer un projet Qiskit dans PennyLane afin de l'exécuter sur MonarQ. | <!-- Il est possible d'importer un projet Qiskit dans PennyLane afin de l'exécuter sur MonarQ. | ||
1. Installez PennyLane dans votre environnement virtuel si ce n’est pas déjà fait | 1. Installez PennyLane dans votre environnement virtuel si ce n’est pas déjà fait | ||
{{Command|pip install --no-index pennylane}} | {{Command|pip install --no-index pennylane}} | ||
<!--T:11--> | |||
2. Installez le plugiciel pennylane-qiskit | 2. Installez le plugiciel pennylane-qiskit | ||
{{Command|pip install --no-index pennylane-qiskit}} | {{Command|pip install --no-index pennylane-qiskit}} | ||
<!--T:12--> | |||
3. Installez le plugiciel pennylane-snowflurry | 3. Installez le plugiciel pennylane-snowflurry | ||
{{Command|pip install pennylane-snowflurry}} | {{Command|pip install pennylane-snowflurry}} | ||
Line 62: | Line 70: | ||
Pour utiliser un circuit Qiskit en PennyLane, suivez les instructions dans la [https://docs.pennylane.ai/en/stable/introduction/importing_workflows.html documentation]. Vous pouvez ensuite exécuter votre circuit sur MonarQ en suivant les instructions dans la documentation [https://github.com/calculquebec/pennylane-snowflurry pennylane-snowflurry]. | Pour utiliser un circuit Qiskit en PennyLane, suivez les instructions dans la [https://docs.pennylane.ai/en/stable/introduction/importing_workflows.html documentation]. Vous pouvez ensuite exécuter votre circuit sur MonarQ en suivant les instructions dans la documentation [https://github.com/calculquebec/pennylane-snowflurry pennylane-snowflurry]. | ||
--> | --> | ||
== Exemple d'utilisation: états de Bell == | == Exemple d'utilisation: états de Bell == <!--T:13--> | ||
Nous allons créer le premier état de Bell avec Qiskit. Il faut d'abord importer les modules nécessaires. | Nous allons créer le premier état de Bell avec Qiskit. Il faut d'abord importer les modules nécessaires. | ||
from qiskit_aer import Aer | from qiskit_aer import Aer | ||
Line 68: | Line 76: | ||
from qiskit.visualization import plot_histogram | from qiskit.visualization import plot_histogram | ||
<!--T:14--> | |||
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. | 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 = QuantumCircuit(2,2) | ||
Line 74: | Line 83: | ||
circuit.measure([0,1],[0,1]) | circuit.measure([0,1],[0,1]) | ||
<!--T:15--> | |||
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 faits des mesures répétées. | 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 faits des mesures répétées. | ||
simulator = Aer.get_backend('qasm_simulator') | simulator = Aer.get_backend('qasm_simulator') | ||
Line 85: | Line 95: | ||
plot_histogram(counts) | plot_histogram(counts) | ||
<!--T:16--> | |||
[[File:Qiskit counts.png|thumb|Histogramme des résultats de 1000 mesures sur le premier état de Bell.]] | [[File:Qiskit counts.png|thumb|Histogramme des résultats de 1000 mesures sur le premier état de Bell.]] | ||
</translate> | </translate> |
Revision as of 16:52, 30 August 2024
Qiskit
Qiskit est une bibliothèque de programmation quantique à code source ouvert développée en Python par IBM. Comme les bibliothèques PennyLane ou Snowflurry, elle permet de construire, simuler et exécuter des circuits quantiques. La documentation de Qiskit est disponible en ligne.
Installation de Qiskit
1. Chargez les dépendances de Qiskit.
[name@server ~]$ module load StdEnv/2023 gcc python/3.11 symengine scipy-stack
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 pour 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 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 ~/qiskit_requirements.txt
Exécuter Qiskit sur une grappe
#!/bin/bash
#SBATCH --account=def-someuser #Modify with your account name
#SBATCH --time=00:15:00 #Modify as needed
#SBATCH --cpus-per-task=1 #Modify as needed
#SBATCH --mem-per-cpu=1G #Modify as needed
# Load modules dependencies.
module load StdEnv/2023 gcc python/3.11 symengine scipy-stack
# Generate your virtual environment in $SLURM_TMPDIR.
virtualenv --no-download ${SLURM_TMPDIR}/env
source ${SLURM_TMPDIR}/env/bin/activate
# Install Qiskit and its dependencies.
pip install --no-index --upgrade pip
pip install --no-index --requirement ~/qiskit_requirements.txt
#Edit with your Qiskit program
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 avec Qiskit. 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 faits 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.
plot_histogram(counts)