Descripción general
El módulo backends proporciona motores de ejecución concretos para ejecutar functionals (procesos cuánticos). Actualmente se admiten tres backends:
QiliSim: Un simulador de CPU de alto rendimiento desarrollado por Qilimanjaro, ideal para el desarrollo y las pruebas locales.
CUDA: Un backend con aceleración GPU que aprovecha el hardware de NVIDIA para simulaciones a gran escala.
Qutip: Un backend basado en CPU que utiliza la biblioteca QuTiP, adecuado para simulaciones ligeras y entornos sin acceso a GPU.
Nota
Los backends distintos de QiliSim son opcionales; para instalar uno, incluya su extra al instalar QILISDK:
pip install qilisdk[<backend_name>]
Para más información, consulte la página Instalación.
Una vez instalado, cualquier funcional primitivo puede ejecutarse pasándolo al método execute() del backend junto con las especificaciones de lectura:
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)
Descripción general de la arquitectura
Todos los backends concretos son subclases de Backend, que centraliza el flujo de trabajo de ejecución utilizado en todo el SDK. El método execute() despacha un funcional primitivo (p. ej., DigitalPropagation o AnalogEvolution) a la rutina de simulación apropiada y devuelve un FunctionalResult (véase el capítulo Functionals). El método execute también acepta especificaciones de lectura que definen cómo se mide el estado cuántico. Asimismo, se utiliza para optimizar programas variacionales mediante llamadas repetidas al funcional primitivo parametrizado subyacente.
Los backends registran manejadores para los funcionales que soportan. Si un funcional no está implementado, execute() lanza NotImplementedError para detectar la incompatibilidad de forma temprana.
Hardware y dependencias
Instalar un extra de backend incorpora la pila de bibliotecas necesaria para ese simulador. Los backends de GPU también requieren que haya controladores compatibles presentes en el sistema.
Backend |
Extra |
Dependencia principal |
Notas |
|---|---|---|---|
– |
Ninguna |
Basado en CPU; no requiere hardware especial. |
|
|
Requiere hardware NVIDIA con controladores recientes. |
||
|
Basado en CPU; no requiere hardware especial. |
Soporte de funcionales
La tabla siguiente resume qué functionals primitivos puede ejecutar cada backend.
Leyenda:
✅ Totalmente soportado por el simulador nativo del backend.
🟡 Parcialmente soportado — consulta la página de cada backend para ver la limitación exacta.
❌ No soportado.
Backend |
DigitalPropagation |
AnalogEvolution |
QuantumReservoir |
VariationalProgram |
|---|---|---|---|---|
✅ |
✅ |
✅ |
✅ |
|
✅ |
✅ |
🟡 |
✅ |
|
✅ |
✅ |
🟡 |
✅ |
Nota
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).