Qiskit
Developed in Python by IBM, Qiskit is an open-source quantum computing library. Like PennyLane and Snowflurry, it allows you to build, simulate and run quantum circuits.
Installation
1. Load the Qiskit dependencies.
[name@server ~]$ module load StdEnv/2023 gcc python/3.11 symengine/0.11.2
2. Create and activate a Python virtual environment.
[name@server ~]$ virtualenv --no-download --clear ~/ENV && source ~/ENV/bin/activate
3. Install a version of 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
where X.Y.Z
is the version number, for example 1.1.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.
(ENV)[name@server ~] python -c 'import qiskit'
5. Freeze the environment and its dependencies.
(ENV)[name@server ~] pip freeze --local > ~/qiskit_requirements.txt
Running Qiskit on a cluster
#!/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 submit your job to the scheduler.
Using Qiskit with MonarQ
Use case: Bell states
Before you create the first state, the required modules need to be loaded.
from qiskit_aer import Aer 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([0,1],[0,1])
Specify the simulator you want to use and transpile the circuit. This provides the final number of qubits after having made all the measurements.
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}
The results are displayed.
plot_histogram(counts)