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.2.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.2-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qubestack_pennylane-1.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 9ea82cb6f482ac97524ea968d5b2a2569ac454c017caf57784205016a6e1fae9
MD5 fd3f893bddf8dc9f4a594ef5a2c163c0
BLAKE2b-256 8571544e85d664fd90789212f89e93174ae2b63a13fe0161ee92f018d8bfd017

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qubestack_pennylane-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 824f80362497bf590f0c815b60a3253cf2e5faa4e57408581da5b95e6d2a98a7
MD5 c8529a2426dcfa0c6fd814bd2cf70d5f
BLAKE2b-256 c2cbe0b1bbdb7b893e66da7c50cc0efa8bc6b9723c6ff978d657c51f44bc4a70

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