Simulation Guidance¶
Overview¶
The table below specifies details corresponding to each simulation modality.
Simulator |
Usage Guidance |
Limitations |
Scaling Behaviour |
|---|---|---|---|
Statevector |
A general-purpose and brute-force method to simulate user programs. |
Qubit Constraint: \( \leq 32\) |
Memory: \(2^{n+3}\) bytes. Runtime: \(O(n)\) in program length and \(O(2^n)\) in number of qubits. |
Stabilizer |
Use for Clifford-only programs, like QEC. |
Qubit Constraint: Very low (supports 1000s of qubits) |
Memory: \(O(n^2)\). Runtime: \(O(d n^3)\). |
MPS (CPU) |
Bond-dimension truncation (\(\chi\)). Used when statevector is unfeasible. |
Qubit Constraint scales with \(\chi\). |
Memory: \(n 2^{4} {\chi}^{2}\) bytes. Runtime: \(O(n \chi^3)\) |
MPS (GPU) |
Used when \(\chi\) > 256 and CPU simulation is slow. |
Qubit Constraint scales with \(\chi\) |
Same as CPU scaling |
Coinflip |
Used for syntax checking and cost estimation only. |
— |
— |
Additional Considerations¶
Statevector (Stabilizer) simulation uses the opensource Quest (Stim) package, integrated with Selene as a plugin, via the extensibility API.
Nexus provides the following compute for simulators:
1 vCPU and 4 GB Memory for statevector and MPS simulators.
1 vCPU and 2 GB Memory for stabilizer and Coinflip simulators.
MPS (GPU) is only available with hardware-tier emulators.
Memory scaling is specified for complex numbers defined by 2 32-bit floating-point numbers.