Skip to main content

PennyLane plugin for the Maestro quantum simulator by Qoro Quantum

Project description

pennylane-maestro

PyPI version Tests License: GPL v3

A PennyLane plugin for the Maestro quantum simulator by Qoro Quantum.

Drop-in replacement for default.qubit — one line change, same code, faster results.

# Before
dev = qp.device("default.qubit", wires=20)

# After 
dev = qp.device("maestro.qubit", wires=20)

Why Maestro?

  • Iterate Faster — Up to 20× faster statevector simulations for VQE/QAOA loops.
  • Scale Up — Simulate 1000+ qubits using Maestro's optimized MPS backend.
  • Sample from MPS — The only PennyLane MPS backend that supports shot-based sampling.
  • GPU ReadyFast GPU simulation on MPS workloads via cuQuantum.

Installation

pip install pennylane-maestro

That's it. This installs pennylane (≥0.38) and qoro-maestro (≥0.2.11) automatically.

Quick Start

import pennylane as qp
import numpy as np

dev = qp.device("maestro.qubit", wires=2)

@qp.qnode(dev)
def circuit(theta):
    qp.RX(theta, wires=0)
    qp.CNOT(wires=[0, 1])
    return qp.expval(qp.PauliZ(1))

print(circuit(np.pi / 4))

Performance

Benchmarked on PennyLane 0.44.1. Run examples/benchmark_lightning_vs_maestro.py to reproduce.

Statevector

Qubits default.qubit lightning.qubit maestro.qubit vs dq vs lq
20 977 ms 115 ms 45 ms 22× 2.6×
22 4.31 s 543 ms 184 ms 23× 3.0×
24 10.5 s 2.36 s 820 ms 13× 2.9×
26 DNF 10.1 s 3.56 s 2.8×

MPS — Scaling to 1000+ Qubits

Qubits default.qubit default.tensor (quimb) maestro.qubit (MPS) vs quimb
100 OOM 90 ms 11 ms
500 OOM 689 ms 90 ms 7.7×
1000 OOM 1.96 s 207 ms 9.5×

MPS Shot Sampling

🔥 Only Maestro supports this. Neither default.tensor nor Qiskit Aer MPS offer shot-based sampling through PennyLane.

Qubits maestro.qubit (MPS) Unique Samples
100 259 ms 10,000
500 1.22 s 10,000
1000 2.43 s 10,000

Backends

All backends are selected via keyword arguments — no code changes needed:

# CPU Statevector (default)
dev = qp.device("maestro.qubit", wires=20)

# MPS for 100+ qubits
dev = qp.device("maestro.qubit", wires=100,
                simulation_type="MatrixProductState",
                max_bond_dimension=256)

# Stabilizer for Clifford circuits
dev = qp.device("maestro.qubit", wires=1000,
                simulation_type="Stabilizer")

# Finite shots
dev = qp.device("maestro.qubit", wires=10, shots=10_000)

# GPU (requires separate license — see below)
dev = qp.device("maestro.qubit", wires=28, simulator_type="Gpu")
All available options
simulator_type Description
"QCSim" Qoro's optimized CPU simulator (default)
"Gpu" CUDA-accelerated GPU simulator
"CompositeQCSim" p-block simulation
simulation_type Description
"Statevector" Full statevector (default)
"MatrixProductState" MPS / tensor-train for large qubit counts
"Stabilizer" Clifford-only stabilizer
"TensorNetwork" General tensor network
"PauliPropagator" Pauli propagation
"ExtendedStabilizer" Extended stabilizer

Examples

Hamiltonian VQE

Hamiltonians are evaluated natively via Maestro's batched estimate() — all Pauli terms in a single C++ call:

import pennylane as qp
import numpy as np

n_qubits = 20
H = qp.Hamiltonian(
    [0.5] * (n_qubits - 1) + [0.3] * n_qubits,
    [qp.PauliZ(i) @ qp.PauliZ(i+1) for i in range(n_qubits - 1)] +
    [qp.PauliX(i) for i in range(n_qubits)]
)

dev = qp.device("maestro.qubit", wires=n_qubits)

@qp.qnode(dev, diff_method="parameter-shift")
def vqe_circuit(params):
    for i in range(n_qubits):
        qp.RY(params[i], wires=i)
    for i in range(n_qubits - 1):
        qp.CNOT(wires=[i, i + 1])
    return qp.expval(H)

params = np.random.random(n_qubits)
energy = vqe_circuit(params)
gradient = qp.grad(vqe_circuit)(params)

100-Qubit Ising Quench with MPS Shot Sampling

See examples/ising_phase_transition.py for a full demo that simulates a 100-qubit transverse-field Ising model and uses Maestro's exclusive MPS shot sampling to extract magnetization distributions and spatial correlations. Runs in ~30 seconds.

Supported Operations

PennyLane automatically decomposes any unsupported gate (e.g. Rot) into Maestro's native gate set. No manual intervention needed.


🚀 GPU Acceleration

For large-scale workloads, Maestro supports CUDA-accelerated simulation (statevector, MPS, tensor network) via NVIDIA cuQuantum.

dev = qp.device("maestro.qubit", wires=28, simulator_type="Gpu")

GPU Benchmark — Fermi-Hubbard MPS (48 qubits, χ=256)

Simulator Relative Runtime
Maestro GPU
Maestro CPU
Qibo GPU 7.5×
Qiskit CPU 14×
PennyLane GPU 64×

Larger instances failed to run on some platforms, limiting comparison.

Request GPU access & free trial at maestro.qoroquantum.net


Citation

If you use pennylane-maestro in your research, please cite:

@misc{pennylane_maestro,
  author       = {{Qoro Quantum}},
  title        = {PennyLane-Maestro: High-Performance C++ Backend for PennyLane},
  year         = {2026},
  publisher    = {GitHub},
  howpublished = {\url{https://github.com/QoroQuantum/pennylane-maestro}}
}

Authors & License

Maintained by Qoro Quantum (team@qoroquantum.de).

Licensed under GPL-3.0. See the LICENSE file 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

pennylane_maestro-0.3.2.tar.gz (38.7 kB view details)

Uploaded Source

Built Distribution

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

pennylane_maestro-0.3.2-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file pennylane_maestro-0.3.2.tar.gz.

File metadata

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

File hashes

Hashes for pennylane_maestro-0.3.2.tar.gz
Algorithm Hash digest
SHA256 1d864f08773ffde0377b0217c23ea3c5bb6dbc5dd4d4e0acaf63ebf008e2e216
MD5 ec10f90c0f33c0a397f7d4c6c787a019
BLAKE2b-256 295ba34a6a824941cc040f0a22c22f65a4204452b8f80e1a60d2bfd229344819

See more details on using hashes here.

Provenance

The following attestation bundles were made for pennylane_maestro-0.3.2.tar.gz:

Publisher: publish.yml on QoroQuantum/pennylane-maestro

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

File details

Details for the file pennylane_maestro-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pennylane_maestro-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3a226af8fe8c03a5489ce2db6f81707c3912064770778cbfc18e2911ac0e2ef4
MD5 b6a1c6932d3d9139727a9f7f7033ff77
BLAKE2b-256 916ed8bcf01ebf48abf9b1756ebc4bf148bd86f7608ef469c79fdc703b04762d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pennylane_maestro-0.3.2-py3-none-any.whl:

Publisher: publish.yml on QoroQuantum/pennylane-maestro

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