Developed in Python by IBM, [https://docs.quantum.ibm.com/ Qiskit] is an open-source quantum computing library. Like [[PennyLane/en|PennyLane]] and [[Snowflurry/en|Snowflurry]], it allows you to build, simulate and run quantum circuits.
== Installation ==
1. Load the Qiskit dependencies.
{{Command|module load StdEnv/2023 gcc python/3.11 symengine/0.11.2}}
2. Create and activate a [[Python#Creating_and_using_a_virtual_environment | Python virtual environment]].
{{Command|virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate}}
3. Install a version of Qiskit.
{{Commands
|prompt=(ENV) [name@server ~]
|pip install --no-index --upgrade pip
|pip install --no-index qiskit{{=}}{{=}}X.Y.Z qiskit_aer{{=}}{{=}}X.Y.Z}}
where X.Y.Z
is the version number, for example 1.4.0
. To install the most recent version available on our clusters, do not specify a number. Here, we only imported qiskit
and qiskit_aer
. You can add other Qiskit software with the syntax qiskit_package==X.Y.Z
where qiskit_package
is the softare name, for example qiskit-finance
. To see the wheels that are currently available, see [[Available Python wheels]].
4. Validate the installation.
{{Command|prompt=(ENV)[name@server ~]|python -c 'import qiskit'}}
5. Freeze the environment and its dependencies.
{{Command|prompt=(ENV)[name@server ~]|pip freeze --local > ~/qiskit_requirements.txt}}
==Running Qiskit on a cluster==
{{File
|name=script.sh
|lang="sh"
|contents=
#!/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 module dependencies.
module load StdEnv/2023 gcc python/3.11 symengine/0.11.2
# 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
# Modify your Qiskit program.
python qiskit_example.py
}}
You can then [[Running jobs |submit your job to the scheduler]].
== Using Qiskit with MonarQ (in preparation)==
== Use case: Bell states ==
Before you create a simulation of the first Bell state on [[Narval/en|Narval]], the required modules need to be loaded.
from qiskit_aer import AerSimulator
from qiskit import QuantumCircuit, transpile
from qiskit.visualization import plot_histogram
Define the circuit. Apply an Hadamard gate to create a superposition state on the first qubit and a CNOT gate to intricate the first and second qubits.
circuit = QuantumCircuit(2,2)
circuit.h(0)
circuit.cx(0,1)
circuit.measure_all()
Nous voulons utiliser le simulateur par défaut, soit AerSimulator
étant le simulateur par défaut. Nous obtenons le dénombrement des états finaux des qubits après 1000 mesures.
simulator = AerSimulator()
result = simulator.run(circuit, shots=1000).result()
counts = result.get_counts()
print(counts)
{'00': 489, '11': 535}
Nous affichons un histogramme des résultats avec la commande
plot_histogram(counts)
We will use the default simulator AerSimulator
. This provides the final number of qubits after having made 1000 measurements.
simulator = AerSimulator()
result = simulator.run(circuit, shots=1000).result()
counts = result.get_counts()
print(counts)
{'00': 489, '11': 535}
The results are displayed.
plot_histogram(counts)
[[File:Qiskit counts.png|thumb|Results of 1000 measurements on the first Bell
state]]