Local Simulation
Local Simulation
Local Simulation with ParallelSimulator
ParallelSimulator is Divi’s built-in local simulation backend. It executes quantum circuits using Qiskit Aer, distributing work across multiple threads for fast prototyping and testing.
Basic Usage
from divi import ParallelSimulator
backend = ParallelSimulator()Configuration Options
backend = ParallelSimulator(
simulation_seed=42, # Deterministic results for reproducibility
qiskit_backend="auto", # Or specify: "aer_simulator", "aer_simulator_statevector"
)Example: Local VQE
from divi import ParallelSimulator
from divi.qprog import VQE, HartreeFockAnsatz
from divi.qprog.optimizers import ScipyOptimizer, ScipyMethod
from pennylane import qchem
molecule = qchem.Molecule(
symbols=["H", "H"],
coordinates=[(0.0, 0.0, 0.0), (0.0, 0.0, 0.5)],
)
vqe = VQE(
molecule=molecule,
ansatz=HartreeFockAnsatz(),
optimizer=ScipyOptimizer(ScipyMethod.L_BFGS_B),
max_iterations=10,
backend=ParallelSimulator(),
)
vqe.run()
print(f"Energy: {min(vqe.losses[-1].values()):.4f}")Features
Noisy Simulation
Enable noise models for realistic simulation:
from qiskit_aer.noise import NoiseModel, depolarizing_error
noise_model = NoiseModel()
noise_model.add_all_qubit_quantum_error(depolarizing_error(0.01, 1), ['rx', 'ry', 'rz'])
noise_model.add_all_qubit_quantum_error(depolarizing_error(0.02, 2), ['cx'])
backend = ParallelSimulator(noise_model=noise_model)Alternatively, use a Qiskit fake backend to inherit a realistic noise profile:
from qiskit_ibm_runtime.fake_provider import FakeAuckland
backend = ParallelSimulator(qiskit_backend=FakeAuckland())This is useful for testing error mitigation techniques like ZNE.
Deterministic Mode
Set a simulation seed for reproducible results:
backend = ParallelSimulator(simulation_seed=1997)Circuit Depth Tracking
Track circuit depths during execution:
backend = ParallelSimulator()
# ... run algorithms ...
print(f"Circuit depths: {backend.circuit_depths}")When to Use ParallelSimulator
- Development and testing: Fast iteration without cloud latency
- Small to medium circuits: Up to ~25 qubits with state vector, more with specialized backends
- Reproducibility: Deterministic seeds for debugging
- Error mitigation testing: Noisy simulation for ZNE development