# Distributed Quantum Simulation **Distributed simulation** spreads quantum state vectors across multiple GPUs or nodes, enabling simulation of even larger systems (30+ qubits). ```cpp #include "cudaq.h" #include // Message Passing Interface struct LargeScaleCircuit { void operator()() __qpu__ { int n = 30; cudaq::qvector q(n); // Quantum operations for (int i = 0; i < n; i++) { h(q[i]); } for (int i = 0; i < n - 1; i += 2) { cx(q[i], q[i+1]); } mz(q); } }; int main(int argc, char** argv) { // Initialize MPI for distributed execution MPI_Init(&argc, &argv); // Set backend to use multiple GPUs cudaq::set_target("nvidia"); // Automatically distributes if MPI is initialized printf("Running distributed simulation on multiple GPUs...\n"); auto result = cudaq::sample(10000); printf("Distributed samples collected: %lu\n", result.size()); MPI_Finalize(); return 0; } ``` ## Scaling **Single GPU**: ~25–27 qubits **Multi-GPU (distributed)**: 30+ qubits (limited by interconnect and memory) Distributed simulation trades communication overhead for larger system size. Effective when circuit is deep (many gate operations amortize communication cost).