Skip to content
QoroQuantumPublic

Latest commit

 

History

885 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maestro

Build and test PyPI Python Docs License: GPL-3.0

One API for simulating quantum circuits with any method: statevector, MPS, stabilizer, Pauli propagation, density matrix and more. Runs on a laptop CPU, NVIDIA GPUs, or an MPI cluster.

Write a circuit once, then change one config field to switch from a 30-qubit statevector to a 100-qubit matrix product state, or from CPU to GPU. Already using Qiskit or PennyLane? Change one import and keep your code.

pip install qoro-maestro

Quick start

import maestro
from maestro.circuits import QuantumCircuit

qc = QuantumCircuit()
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

result = qc.execute(shots=1000)
print(result["counts"])  # about {"00": 500, "11": 500}

The default is a CPU statevector. To run the same circuit with another method, pass a SimulatorConfig:

config = maestro.SimulatorConfig(simulation_type=maestro.SimulationType.MatrixProductState)
result = qc.execute(shots=1000, config=config)

Requires Python 3.10+. Pre-built wheels are available for Linux, macOS and Windows.

Already using Qiskit or PennyLane?

Qiskit: qiskit-maestro provides a backend, Sampler and Estimator you can use in place of Aer:

pip install qiskit-maestro
from qiskit_maestro import MaestroBackend, MaestroSampler, MaestroEstimator

backend = MaestroBackend()      # was AerSimulator()
sampler = MaestroSampler()      # was StatevectorSampler()
estimator = MaestroEstimator()  # was StatevectorEstimator()

On 120–200 qubit MPS workloads, MaestroEstimator is up to 7× faster than Aer's EstimatorV2.

PennyLane: pennylane-maestro adds a Maestro device, including adjoint gradients for variational algorithms:

pip install pennylane-maestro
import pennylane as qml

dev = qml.device("maestro.qubit", wires=2)  # was "default.qubit"

Maestro can also load OpenQASM 2.0 programs directly.

Features

  • Many simulation methods behind one API: statevector, density matrix, matrix product state (MPS), matrix product operator (MPO), tensor network, stabilizer, extended stabilizer, Pauli propagation and path integral. See Choosing a simulation method for which method suits which circuits.
  • GPU and cluster scaling: NVIDIA GPU backends built on cuQuantum, a statevector split across the GPUs in one node, or across nodes with MPI.
  • Realistic noise: Pauli and coherent errors, T1/T2 relaxation, crosstalk, readout errors and time-correlated noise. Noise runs as Monte Carlo trajectories, or as exact channels on density-matrix and MPO backends.
  • Beyond sampling: expectation values of Pauli observables, statevectors and probabilities, mid-circuit measurement with classical control, and Stim/Sinter integration for error-correction studies.
  • C/C++ and JSON interfaces: link libmaestro directly, or send batch jobs through the native JSON request API. Neither needs Python.

Running on GPUs

The pip package runs on the CPU. GPU backends come from a separate plugin, which you can access in three ways:

  • Qoro cloud: run on our GPUs with free starter credits.
  • Free academic licence: run the plugin on your own hardware.
  • Enterprise site licence: run it on your organization's infrastructure.

See Get GPU access for details. Once the plugin is installed, select the GPU in the config:

config = maestro.SimulatorConfig(
    simulator_type=maestro.SimulatorType.Gpu,
    simulation_type=maestro.SimulationType.Statevector,
)
result = qc.execute(shots=1000, config=config)
Backend Methods
QCSim (CPU, default) All methods listed above
Gpu Statevector, density matrix, MPS, MPO, tensor network, Pauli propagation
DistributedGpu Statevector split across the GPUs in one node (Linux)
DistributedMpiGpu Statevector split across MPI ranks and nodes (Linux, CUDA-aware MPI)

Optional Qiskit Aer and QuEST backends are also available. See Scaling: multi-GPU and MPI for a complete MPI example.

Related projects

Repository What it is Install
qiskit-maestro Qiskit provider: MaestroBackend, MaestroSampler and MaestroEstimator pip install qiskit-maestro
pennylane-maestro PennyLane device maestro.qubit, with adjoint gradients pip install pennylane-maestro
maestro-demos Example simulations written with Maestro —

Documentation

Full documentation: qoroquantum.github.io/maestro

Get started First circuit · Coming from Qiskit Aer · PennyLane · GPU access
Guides Building circuits · Choosing a method · Sampling and shots · Expectation values · Noise and QEC · Scaling
Reference Python API · C++ API · Native JSON API · Benchmarks
C++ and source builds Install from source · C++ tutorial
More Examples · Changelog · Contributing

Citation

If you use Maestro in your research, please cite:

@article{bertomeu2025maestro,
  title={Maestro: Intelligent Execution for Quantum Circuit Simulation},
  author={Bertomeu, Oriol and Ghayas, Hamzah and Roman, Adrian and DiAdamo, Stephen},
  organization={Qoro Quantum},
  year={2025}
}

License

Maestro is licensed under GPL-3.0. The GPU plugin is licensed separately; see Get GPU access.

Releases

Contributors

Languages