Skip to content

About

PoC for running quntum jobs from your laptop to Quantum Backends accessible on HPC via FirecREST

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

HPC+QC Firecrest Proof of Concept

A proof of concept for driving an HPC-hosted quantum computer from your laptop using FirecREST v2, meaning no SSH and no hand-written batch scripts.

Usually, the QPU backend sits behind a HPC Scheduler (SLURM) and the traditional workflow is ssh->module load->write sbatch->sbatch->view result->download results for analysis. This PoC hides the HPC side actions to ideally work as python->create session->create adapter->create backend->backend.run->view result. It is powered by FirecREST which is a REST API on top of the HPC system.

ffic is the shorthand name for this meaning FiQCi FirecREST IQM Client meaning that this is targeting specifically integration with IQM Client and FiQCi quantum computers available through the LUMI Supercomputer.

Quickstart

git clone https://github.com/JMuff22/firecrest-fiqci.git
cd firecrest-fiqci
uv sync --extra qiskit --extra notebook

The qiskit extra pulls in Qiskit, the circuit IR this PoC serializes on the client. The targeted QC client libraries e.g iqm-client, are not installed by this project — they come from the fiqci-vtt-qiskit module that the SLURM job loads.

Put your FirecREST personal access token in a .env next to the notebook:

FIRECREST_TOKEN=...

Then submit a Bell state to Q50:

import os
from qiskit import QuantumCircuit
from ffic import FirecrestSession, QiskitAdapter, QuantumBackend, SbatchConfig, StaticTokenAuth

session = FirecrestSession(
    url="https://api.lumi.csc.fi/v1",
    auth=StaticTokenAuth(os.environ["FIRECREST_TOKEN"]),
    system_name="lumi",
    account="project_xxx",
    working_dir="/scratch/project_xxx/<user>/firecrest",
    api_version="2.5.2",
)
adapter = QiskitAdapter(device="Q50", module="fiqci-vtt-qiskit",
                        device_url_env="Q50_CORTEX_URL", quantum_computer="q50")
backend = QuantumBackend(session, adapter, SbatchConfig(partition="q_fiqci"))

circuit = QuantumCircuit(2, 2); circuit.h(0); circuit.cx(0, 1); circuit.measure_all()
job = await backend.submit_circuits([circuit], shots=1000)
print(await job.result())

The full end-to-end demonstration lives in examples/bell_circuit.ipynb.

About

PoC for running quntum jobs from your laptop to Quantum Backends accessible on HPC via FirecREST

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages