Skip to main content

QubeStack PennyLane plugin. Executes PennyLane circuits on IonQ, QPerfect Mimiq, IQM, and Rigetti via the QuREKA platform.

Project description

qubestack-pennylane

QuREKA backend plugin for PennyLane.

Run PennyLane circuits on IonQ hardware, the QPerfect Mimiq emulator, IQM superconducting QPUs, or Rigetti superconducting QPUs through the QuREKA platform. The plugin ships four PennyLane devices that delegate execution to the same QuREKA gateway used by qubestack-cudaq; the gateway then forwards jobs to the actual provider.

PennyLane circuit
       │
       ├──►  qureka.ionq    ──►  POST /api/quantum-jobs  ──►  IonQ Cloud v0.4
       │                                                     (qpu.forte-1, ...)
       │
       ├──►  qureka.mimiq   ──►  POST /api/quantum-jobs  ──►  QPerfect Mimiq
       │                          QuREKA gateway              (sdt.qubesim*)
       │                          (qubestack-job-engine)
       │
       ├──►  qureka.iqm     ──►  POST /api/quantum-jobs  ──►  AWS Braket
       │                                                     (IQM Garnet / Emerald)
       │
       └──►  qureka.rigetti ──►  POST /api/quantum-jobs  ──►  AWS Braket
                                                             (Rigetti Ankaa-3, ...)

Supported Backends

IonQ (qureka.ionq)

Backend ID IonQ QPU
ionq.forte-1 IonQ Forte
ionq.aria-1 IonQ Aria 1
ionq.aria-2 IonQ Aria 2
ionq.forte-enterprise-1 IonQ Forte Enterprise
ionq.simulator IonQ cloud simulator

Mimiq (qureka.mimiq)

Backend ID Provider
sdt.qubesim-mimiq QPerfect Mimiq emulator (canonical)
sdt.qubesim* Any future Mimiq profile (gateway routes by prefix)

IQM (qureka.iqm)

Backend ID IQM QPU (via AWS Braket)
iqm.garnet IQM Garnet (arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet)
iqm.emerald IQM Emerald (arn:aws:braket:eu-north-1::device/qpu/iqm/Emerald)

Rigetti (qureka.rigetti)

Backend ID Rigetti QPU (via AWS Braket)
rigetti.ankaa-3 Rigetti Ankaa-3 (arn:aws:braket:us-west-1::device/qpu/rigetti/Ankaa-3)

These match the device maps in qubestack-cudaq and the routing in qubestack-job-engine. Server-side routing happens by deviceCode prefix: ionq.* → IonQ Cloud v0.4 directly, sdt.qubesim* → Mimiq, and iqm.* / rigetti.* → AWS Braket.

Installation

pip install qubestack-pennylane

Requires Python 3.12 (matches qubestack-cudaq's runtime baseline). The plugin pins pennylane>=0.44,<0.45; tested against the current PyPI stable PennyLane 0.44.1.

Quick Start

import pennylane as qml

# IonQ hardware
dev = qml.device(
    "qureka.ionq",
    wires=2,
    backend="ionq.forte-1",     # see Supported Backends
    api_key="<QUREKA_API_KEY>",  # or set QUREKA_API_KEY env var
    shots=1000,
)

# Mimiq emulator (drop-in alternative)
dev = qml.device(
    "qureka.mimiq",
    wires=2,
    backend="sdt.qubesim-mimiq",
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

# IQM superconducting QPU (via AWS Braket)
dev = qml.device(
    "qureka.iqm",
    wires=2,
    backend="iqm.garnet",   # or "iqm.emerald"
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

# Rigetti superconducting QPU (via AWS Braket)
dev = qml.device(
    "qureka.rigetti",
    wires=2,
    backend="rigetti.ankaa-3",
    api_key="<QUREKA_API_KEY>",
    shots=1000,
)

@qml.qnode(dev)
def bell():
    qml.Hadamard(wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.counts(wires=[0, 1])

print(bell())
# {'00': ~500, '11': ~500}

Configuration

Parameter Required Description
wires Yes Number of qubits (or list of wire labels).
shots Yes Sampling shot count. All three devices are sample-based.
backend Yes Provider device code (tables above).
api_key Yes (or QUREKA_API_KEY) QuREKA API key.
url No QuREKA gateway base URL. Default: QUREKA_TARGET_URL env var, then https://openapi.qureka.io.
job_name No Optional human-readable label.
poll_interval No Seconds between status polls (default 5.0).
timeout No Total seconds to wait for completion (default 600).
endian No Bit-ordering of gateway counts. Defaults: qureka.ionq="little" (raw IonQ integer keys), qureka.mimiq/qureka.iqm/qureka.rigetti="big" (bitstrings with qubit 0 leftmost).

Supported Operations

The common qis gateset that the QuREKA gateway can forward to all four providers (IonQ / Mimiq / IQM / Rigetti):

Hadamard, PauliX/Y/Z, S, T, SX, Identity, CNOT, CZ, SWAP, RX, RY, RZ, PhaseShift, IsingXX, IsingYY, IsingZZ, plus the adjoints of S, T, SX, RX, RY, RZ, IsingXX/YY/ZZ.

Higher-level operations (e.g. QFT, Toeplitz) must be decomposed first via qml.transforms.decompose or qml.transforms.unitary_to_rot before submission.

Development

git clone <repo>
cd qubestack-pennylane

# Python 3.12 is required.
python3.12 -m venv .venv
source .venv/bin/activate

pip install --upgrade pip setuptools wheel
pip install -e . pytest responses
pytest -v

Architecture

License

Apache License 2.0

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

qubestack_pennylane-1.2.0.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

qubestack_pennylane-1.2.0-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

Details for the file qubestack_pennylane-1.2.0.tar.gz.

File metadata

  • Download URL: qubestack_pennylane-1.2.0.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for qubestack_pennylane-1.2.0.tar.gz
Algorithm Hash digest
SHA256 5a4b88e1d547f22c45e3d8c6f05d47cf33939314e51150e91c2b6601a87f6c11
MD5 775d4c65f0f8f39e6266e83b870abf07
BLAKE2b-256 f8e87b7ec170bde26f019afac572505abbc96af87f10c82ea52339fa3d38e541

See more details on using hashes here.

File details

Details for the file qubestack_pennylane-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for qubestack_pennylane-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7edc3657ad8726c97659ff42744cdfac29d7733776244e950f84a545b4e5a0ee
MD5 d2160f17d70df4c008aec51bcd649e56
BLAKE2b-256 d450bbd67250a24844986970b2f7e2aa9a9756db984667f3d28a71fe1a88ce59

See more details on using hashes here.

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