Site Tools


cuda-q-distributed-simulation

Distributed Quantum Simulation

Distributed simulation spreads quantum state vectors across multiple GPUs or nodes, enabling simulation of even larger systems (30+ qubits).

#include "cudaq.h"
#include <mpi.h>  // 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<LargeScaleCircuit>(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).

cuda-q-distributed-simulation.md · Last modified: by 127.0.0.1