Qiskit: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
No edit summary
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages />
<languages />
<translate>
<translate>
== 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.


== Installation de Qiskit == <!--T:2-->
<!--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 [[PennyLane]] et [[Snowflurry]], elle permet de construire, simuler et exécuter des circuits quantiques.
 
== 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 scipy-stack}}
{{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|un environnement virtuel Python]].
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 18: Line 19:
|pip install --no-index --upgrade pip
|pip install --no-index --upgrade pip
|pip install --no-index qiskit{{=}}{{=}}X.Y.Z  qiskit_aer{{=}}{{=}}X.Y.Z}}
|pip install --no-index qiskit{{=}}{{=}}X.Y.Z  qiskit_aer{{=}}{{=}}X.Y.Z}}
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 sur 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 listés sur la page [[Available Python wheels/fr|Wheels Python]].  


<!--T:5-->
<!--T:5-->
Line 25: 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 32: Line 33:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-someuser #Modify with your account name
#SBATCH --account=def-someuser #indiquez le nom de votre compte
#SBATCH --time=00:15:00        #Modify as needed
#SBATCH --time=00:15:00        #modifiez s'il y a lieu
#SBATCH --cpus-per-task=1      #Modify as needed
#SBATCH --cpus-per-task=1      #modifiez s'il y a lieu
#SBATCH --mem-per-cpu=1G      #Modify as needed
#SBATCH --mem-per-cpu=1G      #modifiez s'il y a lieu


<!--T:7-->
<!--T:7-->
# Load modules dependencies.
# Chargez les dépendances des modules.
module load StdEnv/2023 gcc python/3.11 symengine scipy-stack 
module load StdEnv/2023 gcc python/3.11 symengine/0.11.2


<!--T:8-->
<!--T:8-->
# Generate your virtual environment in $SLURM_TMPDIR.                                                                                                         
# 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-->
# Install Qiskit and its dependencies.                                                                                                                                                                                                                                                                                     
# 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


#Edit with your Qiskit program                                                                                                                                                                        
#Modifiez le programme Qiskit.                                                                                                                                                                        
python qiskit_example.py
python qiskit_example.py
}}
}}
Vous pouvez ensuite soumettre votre tâche à [[Running jobs/fr|l'ordonnanceur]].  
Vous pouvez ensuite [[Running jobs/fr|soumettre votre tâche à l'ordonnanceur]].  
== Utiliser Qiskit avec MonarQ == <!--T:10-->
== 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}}
Line 70: Line 71:
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 == <!--T:13-->
== 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 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
Line 84: Line 85:


<!--T:15-->
<!--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 pris des mesures répétées.
     simulator = Aer.get_backend('qasm_simulator')
     simulator = Aer.get_backend('qasm_simulator')
     compiled_circuit = transpile(circuit, simulator)
     compiled_circuit = transpile(circuit, simulator)
Line 92: Line 93:
     print("counts: ", counts)
     print("counts: ", counts)
     {'00': 489, '11': 535}
     {'00': 489, '11': 535}
Nous affichons un histogramme des résultats.
Nous affichons un histogramme des résultats avec la commande
     plot_histogram(counts)
     plot_histogram(counts)


<!--T:16-->
<!--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>

Latest revision as of 20:17, 24 October 2024

Other languages:

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.

Question.png
[name@server ~]$ module load StdEnv/2023 gcc python/3.11 symengine/0.11.2

2. Créez et activez un environnement virtuel Python.

Question.png
[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

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.Zqiskit_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.

Question.png
(ENV)[name@server ~] python -c 'import qiskit'

5. Gelez l'environnement et les dépendances.

Question.png
(ENV)[name@server ~] pip freeze --local > ~/qiskit_requirements.txt

Exécuter Qiskit sur une grappe

File : script.sh

#!/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)
Histogramme des résultats de 1000 mesures sur le premier état de Bell