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-Q: 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 funcionan sobre frameworks de terceros que QiliSDK no distribuye. Instale el framework usted mismo y el backend quedará disponible:
pip install cuda-quantum-cu12 # or cuda-quantum-cu13, for CudaqBackend
pip install qutip qutip-qip # for QutipBackend
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 solo es totalmente nativo en QiliSim. En CudaqBackend y QutipBackend, los pasos Circuit del reservorio se evalúan como unitarios QTensor densos en CPU, mientras que los pasos Schedule siguen utilizando el solver analógico nativo del backend. Asociar un NoiseModel a una ejecución de reservorio se ignora tanto en CudaqBackend como en QutipBackend (se emite un aviso en el log).