Backend QuTiP

El backend Qutip utilitza la biblioteca QuTiP per a simulació només a CPU. És el backend opcional més lleuger — sense GPU ni extensió compilada — i és adequat per al desenvolupament local, pipelines de CI i notebooks educatius.

Instal·lació

pip install qilisdk[qutip]

Inici ràpid

import numpy as np
from qilisdk.analog import Schedule, X, Z, Y
from qilisdk.core import ket, tensor_prod
from qilisdk.backends import QutipBackend
from qilisdk.core.interpolator import Interpolation
from qilisdk.functionals import AnalogEvolution
from qilisdk.readout import Readout

T = 10.0
dt = 0.5
nqubits = 1

Hx = sum(X(i) for i in range(nqubits))
Hz = sum(Z(i) for i in range(nqubits))

schedule = Schedule(
    hamiltonians={"driver": Hx, "problem": Hz},
    coefficients={
        "driver": {(0.0, T): lambda t: 1 - t / T},
        "problem": {(0.0, T): lambda t: t / T},
    },
    dt=dt,
    interpolation=Interpolation.LINEAR,
)

initial_state = tensor_prod([(ket(0) - ket(1)).unit() for _ in range(nqubits)]).unit()

backend = QutipBackend()
results = backend.execute(
    AnalogEvolution(schedule=schedule, initial_state=initial_state),
    Readout().with_expectation(observables=[Z(0), X(0), Y(0)]).with_state_tomography(),
)
print(results)

Suport de funcionals

Funcional

Suport

Notes

DigitalPropagation

Simulació basada en vector d’estat mitjançant CircuitSimulator de qutip_qip. Les mesures a mig circuit llancen ValueError; totes les mesures han d’estar al final del circuit.

AnalogEvolution

Integració de l’equació mestra mitjançant qutip.mesolve() de QuTiP. nsteps (per defecte 10_000) limita els subpassos interns de l’integrador ODE.

QuantumReservoir

🟡

The QutipBackend does not natively implement Backend._execute_quantum_reservoir. Circuit steps in the reservoir layer fall back to dense QTensor unitary multiplication on CPU; Schedule steps still use QuTiP’s mesolve().

VariationalProgram

Reutilitza els manejadors digital/analògic anteriors a cada pas d’optimització.

Configuració

QutipBackend té una única opció de constructor:

Opció

Significat

nsteps

Límit superior del nombre de subpassos interns de l’integrador ODE utilitzats per qutip.mesolve() per interval del schedule. Augmenteu-lo si un schedule llarg o rígid fa que el solver de QuTiP falli amb un avís «max steps exceeded». Per defecte 10_000.

from qilisdk.backends import QutipBackend

backend = QutipBackend(nsteps=50_000)

Nota

QutipBackend no accepta cap NoiseModel. Per a simulacions digitals o analògiques amb soroll utilitzeu en el seu lloc QiliSim o CudaBackend.