Cloud Simulation
Cloud Simulation
Once you’re ready to scale your quantum workflow or test on more realistic infrastructure, Divi makes it easy to run large-scale simulations or target real hardware in the cloud. Cloud execution allows you to leverage distributed resources for heavier workloads, explore heterogeneous backends, and simulate larger circuits efficiently.
Divi abstracts away the backend, so switching from local to cloud is as simple as updating your configuration—no need to rewrite your logic.
When to Use Cloud Execution
- When your local machine reaches its limits with circuit size or memory
- To simulate workloads across distributed systems for better performance
- To run circuits on high-performance simulators like Maestro
Supported Backends
- Qoro’s Cloud: Using distributed systems in a high-performance cloud computing environment
- SLURM support (coming soon): Run Divi jobs within a SLURM-managed cluster
- Cloud-based quantum hardware: Coming soon — contact us for early access
Added Features
- ⚙️ Qoro’s cloud platform uses Composer to automate circuit cutting and packing for runtime efficiency
- 🧠 Divi handles job orchestration and tracking — no need to manage compute node status manually
- 🧮 Access to distributed systems running Maestro in HPC environments
Configuration
To run jobs in the cloud, Divi requires:
- A Qoro Cloud API key (contact us)
- Instantiating the
QoroService
backend - Assigning your job to the
QoroService
backend
from divi import QoroService
from divi.q_prog import QAOA
from divi.q_prog.optimizers import Optimizer
# Instantiate cloud backend
qoro_service = QoroService(QORO_API_KEY)
qubo_array = ... # See QAOA section for how to generate an example
# Submit a QAOA problem
qaoa_problem = QAOA(
problem=qubo_array,
n_layers=2,
optimizer=Optimizer.L_BFGS_B,
max_iterations=5,
backend=qoro_service
)
Submitting QASM Batches
You can also send batches of QASM-formatted circuits directly:
job = qoro_service.submit_circuits({
"circuit_1": qasm_str_1,
"circuit_2": qasm_str_2,
...
"circuit_n": qasm_str_n
})
# Poll for results
qoro_service.poll_job_status(job, loop_until_complete=True)
results = qoro_service.get_job_results(job)