Quantum Processing Interface (QPI) Hardware Driver
Project description
██████╗ ██████╗ ██╗ ██╔═══██╗██╔══██╗██║ ██║ ██║██████╔╝██║ ██║▄▄ ██║██╔═══╝ ██║ ╚██████╔╝██║ ██║ ╚══▀▀═╝ ╚═╝ ╚═╝
QPI Hardware Driver
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qpi_driver-0.0.9.tar.gz.
File metadata
- Download URL: qpi_driver-0.0.9.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ee553a3bf821e673e1b0af4ce66d0e006fc12b6d0feb214047b9916421dfa2d
|
|
| MD5 |
ee99d6360223b3f4433ed85bd768b793
|
|
| BLAKE2b-256 |
de3b3fb23dabefb5332292b924813f1e5e4e68228599faf2c2f830c8441637ea
|
Provenance
The following attestation bundles were made for qpi_driver-0.0.9.tar.gz:
Publisher:
ci.yml on sopherapps/qpi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qpi_driver-0.0.9.tar.gz -
Subject digest:
5ee553a3bf821e673e1b0af4ce66d0e006fc12b6d0feb214047b9916421dfa2d - Sigstore transparency entry: 1894542015
- Sigstore integration time:
-
Permalink:
sopherapps/qpi@0bb3994dcc6e370303790aa9038c13ed54c719e9 -
Branch / Tag:
refs/tags/v0.0.9 - Owner: https://github.com/sopherapps
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@0bb3994dcc6e370303790aa9038c13ed54c719e9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file qpi_driver-0.0.9-py3-none-any.whl.
File metadata
- Download URL: qpi_driver-0.0.9-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b6b31a2d1531adce62bf9784ad64554ee59071a536afc72f257d4ac12246b4c
|
|
| MD5 |
f4e5bb428146ada9c4419566205c01d6
|
|
| BLAKE2b-256 |
d733eb7bfb280bf75b3113c146d56854ba3d002ccd65256b8d8076490eddc11b
|
Provenance
The following attestation bundles were made for qpi_driver-0.0.9-py3-none-any.whl:
Publisher:
ci.yml on sopherapps/qpi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qpi_driver-0.0.9-py3-none-any.whl -
Subject digest:
6b6b31a2d1531adce62bf9784ad64554ee59071a536afc72f257d4ac12246b4c - Sigstore transparency entry: 1894542121
- Sigstore integration time:
-
Permalink:
sopherapps/qpi@0bb3994dcc6e370303790aa9038c13ed54c719e9 -
Branch / Tag:
refs/tags/v0.0.9 - Owner: https://github.com/sopherapps
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@0bb3994dcc6e370303790aa9038c13ed54c719e9 -
Trigger Event:
push
-
Statement type: