Skip to main content

Quantum Processing Interface (QPI) Hardware Driver

Project description

 ██████╗ ██████╗ ██╗
██╔═══██╗██╔══██╗██║
██║   ██║██████╔╝██║
██║▄▄ ██║██╔═══╝ ██║
╚██████╔╝██║     ██║
 ╚══▀▀═╝ ╚═╝     ╚═╝

QPI Hardware Driver

PyPI version CI/CD Workflow GitHub Tag License

Python hardware driver for the QPI quantum computing platform. Runs on isolated hardware nodes controlling the QPU via multiple executor backends.


Install

Base package (mock executor)

pip install qpi-driver

With CLI support

pip install "qpi-driver[cli]"

With Qiskit Aer simulator

pip install "qpi-driver[aer]"

With Quantify/Qblox hardware support

pip install "qpi-driver[quantify]"

Requires Python ≥ 3.12, < 3.13.


Quick Start

CLI

# Connect a mock QPU to the orchestrator
qpi-driver start \
  --qpi-addr http://localhost:8090 \
  --token <qpu-access-token> \
  --name qpu_sim_01 \
  --executor mock \
  --data-dir ./data

Environment variables are also supported:

export QPI_ADDR=http://localhost:8090
export QPI_ACCESS_TOKEN=<token>
export QPU_NAME=qpu_sim_01
export DRIVER_BACKEND=mock
qpi-driver start

Python API

from qpi_driver import run_driver

run_driver(
    qpi_addr="http://localhost:8090",
    token="<qpu-access-token>",
    name="qpu_sim_01",
    executor="mock",
    data_dir="./data",
)

Custom executor

from qpi_driver import Executor, run_driver
from qpi_driver.executors.mock import MockExecutor

class MyCustomExecutor(Executor):
    def execute(self, payload):
        # Your QPU-specific execution logic
        ...

run_driver(
    qpi_addr="http://localhost:8090",
    token="<token>",
    name="my_qpu",
    executor="custom",
    custom_executor=MyCustomExecutor(),
)

Executor Backends

Backend Description Extra
mock Qiskit BasicSimulator (default)
qiskit_aer Qiskit Aer simulator [aer]
quantify Quantify-scheduler + Qblox instruments [quantify]
qblox Qblox scheduler (legacy) [qblox]
presto Presto RF control [quantify]

Architecture

The driver uses Python's multiprocessing library to isolate responsibilities:

  • Main Process: NNG PULL listener, receives commands from orchestrator
  • Worker Process: Executes quantum circuits via the configured executor
  • Result Sender Process: NNG PUSH, sends results back to orchestrator
┌─────────────┐     NNG PUSH      ┌─────────────────┐
│ Orchestrator│ ────────────────> │  Main Process   │
│  Dispatcher │                   │  (PULL listener)│
└─────────────┘                   └────────┬────────┘
                                           │
                              multiprocessing.Queue
                                           │
                                           ▼
                                   ┌───────────────┐
                                   │ Worker Process│
                                   │  (Executor)   │
                                   └───────┬───────┘
                                           │
                              multiprocessing.Queue
                                           │
                                           ▼
                                   ┌───────────────┐
                                   │Result Sender  │
                                   │  (PUSH)       │
                                   └───────┬───────┘
                                           │ NNG PUSH
                                           ▼
                                   ┌───────────────┐
                                   │  Orchestrator │
                                   │   Listener    │
                                   └───────────────┘

CLI Reference

qpi-driver start [OPTIONS]

Options:
  -a, --qpi-addr TEXT          QPI orchestrator URL [env: QPI_ADDR]
  -t, --token TEXT             QPU access token [env: QPI_ACCESS_TOKEN]
  -n, --name TEXT              QPU name [env: QPU_NAME]
  -e, --executor TEXT          Backend: mock, qiskit_aer, quantify, qblox, presto [env: DRIVER_BACKEND]
  -d, --data-dir PATH          Data directory [env: QPI_DATA_DIR]
  --is-dummy                   Run in dummy/simulation mode
  --quantify-hardware-config PATH  Quantify hardware config [env: QPI_QUANTIFY_HARDWARE_CONFIG]
  --help                       Show this message and exit.

Documentation


License

MIT — see the main repository for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpi_driver-0.0.8.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpi_driver-0.0.8-py3-none-any.whl (38.7 kB view details)

Uploaded Python 3

File details

Details for the file qpi_driver-0.0.8.tar.gz.

File metadata

  • Download URL: qpi_driver-0.0.8.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qpi_driver-0.0.8.tar.gz
Algorithm Hash digest
SHA256 e003fc26fbc2bf304e8c008ecd31ab065be8004bc40d93bd1609c7abb60961ec
MD5 07f244c24ac3488661bfee6b875ad774
BLAKE2b-256 ae14b9ac3a70c70a4e57d7e302c3462de9ba2f767c8def7cdc77944031d9a7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for qpi_driver-0.0.8.tar.gz:

Publisher: ci.yml on sopherapps/qpi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qpi_driver-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: qpi_driver-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 38.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for qpi_driver-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 4764bf6fb1fce503eca79aa1b9ff7da124b7ff4a2d55064a793c7fad95e28e0f
MD5 df2a3e016a7d21b88b85377275534353
BLAKE2b-256 468e2926759dd4a20c82760349830ba1a239a146ccb70b46746d6249744b882e

See more details on using hashes here.

Provenance

The following attestation bundles were made for qpi_driver-0.0.8-py3-none-any.whl:

Publisher: ci.yml on sopherapps/qpi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page