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.3.tar.gz (41.7 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.3-py3-none-any.whl (31.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qubestack_pennylane-1.2.3.tar.gz
  • Upload date:
  • Size: 41.7 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.3.tar.gz
Algorithm Hash digest
SHA256 815d40966540cdfd1d47b11c6b958d234608c53589e9a7aabee7db65bc56d002
MD5 3cce41791319aac2062a7cc3fd9f7b05
BLAKE2b-256 7c68a6e720f36e24074d1b108c4106d5fb10693a434666e72f19be787fd61619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qubestack_pennylane-1.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 328c923e0770c5f4aabcaa30b519611d39cc1b9793e62379e6ac9a281054a8bb
MD5 ad1664522ea82289d7bf013e176c1d99
BLAKE2b-256 c7b11c0ee8c455027067d173ecfa1dccfe337a49e83a38f867412a6a6ba9e175

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