Overview

The backends module provides concrete execution engines for running functionals (quantum processes). Currently, three backends are supported:

  • QiliSim: A high-performance CPU simulator developed by Qilimanjaro, ideal for local development and testing.

  • CUDA: A GPU-accelerated backend leveraging NVIDIA hardware for large-scale simulations.

  • Qutip: A CPU-based backend using the QuTiP library, suitable for lightweight simulations and environments without GPU access.

Note

Backends other than QiliSim are optional; to install one, include its extra when installing QILISDK:

pip install qilisdk[<backend_name>]

For more information check the Installation page.

Once installed, any primitive functional can be executed by passing it to the backend’s execute() method along with readout specifications:

from qilisdk.backends import QiliSim
from qilisdk.functionals import DigitalPropagation
from qilisdk.readout import Readout
from qilisdk.digital import Circuit

circuit = Circuit(2)
results = QiliSim().execute(DigitalPropagation(circuit), Readout().with_sampling(nshots=1000))
print(results)

Architecture Overview

All concrete backends subclass Backend, which centralizes the execution workflow used across the SDK. The execute() method dispatches a primitive functional (e.g. DigitalPropagation or AnalogEvolution) to the appropriate simulation routine and returns a FunctionalResult (see the Functionals chapter). The execute method also accepts readout specifications that define how the quantum state is measured. The execute method is also used to optimize variational programs via repeated calls to the underlying parameterized primitive functional.

Backends register handlers for the functionals they support. If a functional is not implemented, execute() raises NotImplementedError to surface the mismatch early.

Hardware & Dependencies

Installing a backend extra pulls in the library stack required for that simulator. GPU backends also expect compatible drivers to be present on the system.

Backend

Extra

Key dependency

Notes

QiliSim

None

CPU based; no special hardware needs.

CudaBackend

cuda

cuda-quantum

Requires NVIDIA hardware with recent drivers.

QutipBackend

qutip

QuTiP

CPU based; no special hardware needs.

Functional Support

The table below summarizes which primitive functionals each backend can execute.

Legend:

  • ✅ Fully supported by the backend’s native simulator.

  • 🟡 Partially supported — see the per-backend page for the exact limitation.

  • ❌ Not supported.

Backend

DigitalPropagation

AnalogEvolution

QuantumReservoir

VariationalProgram

QiliSim

CudaBackend

🟡

QutipBackend

🟡

Note

QuantumReservoir is fully native only on QiliSim. On the CudaBackend and QutipBackend the Circuit reservoir steps are evaluated as dense QTensor unitaries on CPU, while Schedule steps still use the backend’s native analog solver. Attaching a NoiseModel to a reservoir run is ignored on both CudaBackend and QutipBackend. (a warning is logged).