cuda-q-measurement
Table of Contents
Measurement and Readout
Measurement collapses qubits to classical bits. In CUDA-Q, use mz(qubit) (measure in Z basis) to get bitstrings. Collect many shots to build probability distributions.
#include "cudaq.h" // Measure specific qubits struct SelectiveMeasure { void operator()() __qpu__ { cudaq::qvector q(3); h(q[0]); cx(q[0], q[1]); mz(q[0]); // Measure qubit 0 only mz(q[1], q[2]); // Measure qubits 1, 2 } }; // Measure all qubits struct MeasureAll { void operator()() __qpu__ { cudaq::qvector q(2); h(q[0]); cx(q[0], q[1]); mz(q); // Measure all qubits in vector } }; // Multiple measurements (mid-circuit) struct MidCircuitMeasure { void operator()() __qpu__ { cudaq::qvector q(2); h(q[0]); mz(q[0]); // Measure q[0] // Classical conditional: if q[0] is 1, apply X if (__qpu_measure(q[0])) { x(q[1]); } mz(q[1]); // Measure q[1] } }; int main() { // Collect samples auto result = cudaq::sample<MeasureAll>(1000); // Process results for (auto& [bitstring, count] : result) { double probability = double(count) / 1000.0; printf("Bitstring %s: %.3f probability\n", bitstring.c_str(), probability); } // Get specific probabilities printf("P(00) = %.3f\n", result.probability("00")); printf("P(11) = %.3f\n", result.probability("11")); return 0; }
Measurement is irreversible—after measuring, the quantum state collapses to the measured value. Running multiple shots approximates the quantum probability distribution.
cuda-q-measurement.md · Last modified: by 127.0.0.1
