Hybrid quantum-classical computing interleaves quantum operations with classical computation. Classical code drives quantum kernels, processes results, and makes decisions—all in the same program. This is essential for variational algorithms, error mitigation, and real-time feedback.
CUDA-Q's native C++ support makes hybrid programming natural: quantum kernels are C++ functions, results flow back to classical code seamlessly.
#include "cudaq.h" #include <vector> #include <cmath> // Quantum kernel: measure qubit state struct MeasureState { void operator()(double angle) __qpu__ { cudaq::qvector q(1); ry(angle, q[0]); mz(q[0]); } }; // Classical optimization loop int main() { std::vector<double> angles; double best_cost = 1e9; // Classical loop driving quantum kernel for (double angle = 0.0; angle < M_PI; angle += 0.1) { // Execute quantum kernel with parameter auto result = cudaq::sample<MeasureState>(1000, angle); // Process classical result double cost = result.probability("1"); // P(|1⟩) if (cost < best_cost) { best_cost = cost; angles.push_back(angle); } } printf("Best angle: %.3f, Best cost: %.6f\n", angles.back(), best_cost); return 0; }
Hybrid computing enables VQE, QAOA, and quantum machine learning. The classical-quantum split is where quantum advantage emerges: quantum for superposition/entanglement, classical for control and optimization.