Skip to content
Quantum.world

Research

PADO-Pauli: A GPU-Accelerated Implementation of Pauli Propagation

Overview Research area: Classical simulation of quantum circuits — specifically Pauli propagation (Heisenberg-picture simulation of observables) implemented as a GPU-accelerated, differentiable engine

PADO-Pauli: A GPU-Accelerated Implementation of Pauli Propagation
arXiv
2610.17755
Published
2026-10-13
Authors
Hyunwoo Kim, Youngseok Lee

AI summary

Overview

Research area: Classical simulation of quantum circuits — specifically Pauli propagation (Heisenberg-picture simulation of observables) implemented as a GPU-accelerated, differentiable engine for training variational quantum algorithms and quantum machine learning models.

Technical level: Advanced. The paper assumes familiarity with Pauli strings, the Heisenberg picture, truncation-based approximate simulation, sparse linear algebra, and automatic differentiation in PyTorch.

Scope (one sentence): The paper presents PADO-Pauli, a GPU engine that compiles a circuit and its observables once into sparse per-gate matrices that can be re-evaluated and differentiated many times inside PyTorch, and benchmarks its speed, memory, and accuracy against exact statevector simulation and against the cuPauliProp engine.

What This Paper Is About

Variational quantum algorithms and quantum machine learning models query the same parameterized circuit hundreds of times during training — at new parameter values, over batches of data, and with gradients. PADO-Pauli makes that repeated classical approximation cheap by doing the expensive Pauli propagation once and storing the result as a reusable program.

The paper's goal is to show how that compile-once design, combined with GPU execution, exact zero-filtering, composable truncation, and a native backward pass, performs against existing Pauli propagation engines and against exact simulation.

Key Contributions

  1. Single compilation, multiple evaluations. A circuit and its observables are propagated, truncated, zero-filtered, and compiled once into a single program of per-gate sparse matrices; every later query — batched expectation values and gradients — reuses it. This targets the repeated-evaluation pattern of variational and quantum machine learning training, which the paper describes as querying the same circuit hundreds of times per run.

  2. Zero-filtering of the propagated operator. After propagation, PADO-Pauli removes every branch that cannot reach a Pauli string with nonzero expectation in the reference state |0⟩^⊗n. The pass is exact (removed terms contribute zero at every parameter value) and, on the Erdős–Rényi QAOA families measured in the paper, shrinks the evaluation working set by roughly one to three orders of magnitude. It also makes the batched forward pass about 1.5 times faster.

  3. Differentiable execution on GPU tensors. Pauli strings are stored as symplectic bitmasks (two bits per qubit) and propagation is expressed as sparse linear maps with explicit cosine/sine branches, executed as PyTorch tensor operations. The default vjp differentiation mode registers a vector-Jacobian product with PyTorch autograd, so gradients flow to the rotation angles and to any PyTorch layer that produced them, without parameter-shift re-evaluation.

  4. Composable truncation, batched embedding inputs, and reconstruction helpers. Max-weight (including a per-axis weighted variant) and coefficient truncation trade accuracy against cost through explicit thresholds; the engine also supports evaluation over the Cartesian product of data and parameter batches, reconstruction of output quasi-probabilities from Z correlators, and reference helpers that cross-check small systems against exact statevector values.

Main Findings

  • Speed against cuPauliProp: On an NVIDIA A100, PADO-Pauli evaluates up to 10 times faster than cuPauliProp on 4- to 12-qubit instances.

  • Memory against cuPauliProp: On a 16-qubit instance in the forward-plus-backward configuration it uses up to 3.1 times less GPU memory at maximum weight w_max = 6 (with cuPauliProp holding complex coefficients), and it completes w_max = 7, where cuPauliProp exhausts the 80 GB NVIDIA A100. The paper defines GB throughout as 2^30 bytes and MB as 2^20 bytes.

  • Accuracy: The compiled program is checked against exact statevector simulation up to 28 qubits; max-weight truncation is validated up to 28 qubits and coefficient truncation at 16 qubits.

  • Scale: The compiled program reaches 100 qubits at w_max = 3, using two 64-bit words per mask.

  • Zero-filtering gains: The evaluation working set (the strings remaining after the last propagation step and zero-filtering) is roughly one to three orders of magnitude smaller than the propagated basis on the measured Erdős–Rényi QAOA families, and the reduction widens with qubit count on the family whose qubit sweep appears in Sec. 4.2.

  • Truncation is a controllable approximation: Because |Tr[P_j ρ]| ≤ 1 for any Pauli string and state, dropping a set T of terms changes an expectation value by at most the discarded coefficient mass Δ = Σ_{j∈T} |c_j|, and the total error is at most the sum of the discarded masses of the individual truncations, with no assumption on the state or circuit.

  • Why low weight suffices: For ρ₀ = |0⟩⟨0|^⊗n, a weight-W string with factors drawn uniformly from {X, Y, Z} has zero expectation with probability 1 − (1/3)^W, since nonzero expectation requires all W factors to be Z.

  • Noise reinforces truncation: Pauli noise channels do not branch the Pauli set and multiply each coefficient by a factor of magnitude at most one, damping high-weight strings fastest; the paper states that at a fixed term budget noise should therefore lower truncation error and reports the numerical check in Sec. 4.3.

  • Angle/Structure separation: Each rotation step is stored as three fixed sparse components (constant, cosine, sine); the angle enters only through the two scalars cos θ_ℓ and sin θ_ℓ, so the same matrices serve every parameter vector, a batch changes only the scalars, and the derivative is the same two products with scalars exchanged and one sign flipped.

  • Memory-efficient representation: Two bits per qubit put a Pauli string at 16 bytes for n ≤ 63; masks use 63 bits of each 64-bit word and span multiple words when n > 63, so qubit count is not limited by word size.

  • Positioning relative to existing engines: Other engines exist — PauliPropagation.jl (CPU, merges duplicates and truncates after each gate), the Qiskit addon pauli-prop (CPU, coefficient cutoff plus a cap on retained terms), cuPauliProp (GPU, added in cuQuantum release 25.11), and BlueQubit's hosted GPU Pauli path simulator. The paper states that each individual design choice has a counterpart in some existing engine, but none of the engines compared in Sec. 5 has all of GPU execution, a native backward pass, and batched embedding inputs on a zero-filtered compiled program inside PyTorch.

  • Context of the method: Pauli propagation and related tensor-network methods classically reproduced the 127-qubit kicked Ising experiment that motivated recent quantum-utility claims, in some cases faster than the quantum device and to higher accuracy.

Methodology in Plain English

The engine treats the observable as a list of Pauli strings and pushes it backwards through the circuit, gate by gate. A gate that commutes with a string leaves it alone; a parameterized rotation that does not commute splits the string into a cosine branch and a sine branch, so the number of strings can grow exponentially with depth. To keep this bounded, the engine drops strings whose Pauli weight exceeds a threshold w_max and, optionally, strings whose coefficient falls below a threshold ε.

The distinctive move is to separate structure from parameters. During compilation the engine records, for each gate, a sparse matrix whose nonzero pattern is fixed by the Pauli rewrite rules; the rotation angle appears only as a cos and a sin multiplier applied afterward. Because the matrices are fixed, they are built once, pruned once, and reused for every later query.

Pruning happens in two ways. Truncation is an approximation with an explicit error bound tied to the discarded coefficient mass. Zero-filtering is exact: working backwards from the end of the propagation, the engine keeps a string only if at least one string it produces in the next step is itself kept, starting from the fact that only strings in {I, Z}^⊗n have nonzero expectation in the all-zero state. Taking entrywise absolute values and treating the constant, cosine, and sine components separately makes the survival mask independent of the angles, so no string that contributes at some parameter value is removed.

Evaluation then becomes a sequence of sparse matrix-vector products run in transposed form inside PyTorch, with batches carried along an extra dimension. Gradients are obtained by registering a custom backward pass that replays the same matrices against saved adjoint vectors and cos/sin factors, so the circuit is not propagated again for each gradient.

Why This Matters

Impact on research. Training loops for variational algorithms and quantum machine learning models spend most of their time re-evaluating the same circuit structure at new parameters, new data, and with gradients. Making that inner loop cheap on GPUs, inside the machine learning framework that already holds the classical optimizer and any classical layers, removes a practical bottleneck for classical surrogate construction, circuit pre-training, and surrogate-based initialization at system sizes beyond exact statevector simulation.

Real-world applications:

  • Training variational quantum algorithms: repeated expectation-value and gradient queries of Hamiltonian or cost operators written as sums of Pauli strings, which is the loop the engine is designed for.

  • Quantum machine learning with data embeddings: evaluation over the Cartesian product of data and parameter batches, with data inputs entering as rotation angles that are not trained.

  • Surrogate-based circuit design and pre-training: using the truncated effective observable as a differentiable classical stand-in to find parameters or initialize optimization, even where the surrogate is an unreliable simulator of the device.

  • Noise-aware benchmarking and cross-checking: Pauli and amplitude-damping channels are supported natively in the Pauli picture, and reference helpers cross-check small systems against exact statevector values.

  • Reproducing large device experiments classically: the paper situates the method in the line of work that classically reproduced the 127-qubit kicked Ising experiment.

Industry relevance. The engine is released by the Quantum AI Team at NORMA, Inc. (Seoul, Republic of Korea) and is positioned directly against vendor tooling including NVIDIA's cuPauliProp in the cuQuantum SDK, the Qiskit addon pauli-prop, PauliPropagation.jl, and BlueQubit's hosted simulator. Its PyTorch integration matters for teams whose training stacks are already PyTorch-based.

Future Directions

  • Pushing weight and qubit count further. The paper reports 100 qubits at w_max = 3 and 16-qubit forward-plus-backward runs at w_max = 7; extending the regime where higher truncation weights remain affordable at larger qubit counts is a natural continuation. The paper's Sec. 7 states limitations and extensions, whose details are not included in the excerpt analyzed here.

  • Characterizing coefficient truncation more fully. Coefficient truncation is applied at one fixed parameter vector, the build point, and validated at 16 qubits, whereas max-weight truncation is validated up to 28 qubits. How sensitive the retained term set is to the choice of build point is an open practical question.

  • Quantifying the noise-truncation interaction. The paper argues that noise should lower truncation error at a fixed term budget and points to Sec. 4.3 for the numerical check; broader characterization across noise models, including non-unital channels such as amplitude damping, would extend this.

  • Convergence with competing engines. The paper was developed independently of PauliPropagation.jl, pauli-prop, cuPauliProp, and BlueQubit's simulator, and concurrently with several of them, so re-benchmarking as those tools add GPU execution, backward passes, or batched inputs would test how durable the reported 10× speed and 3.1× memory advantages are.

  • End-to-end training demonstrations. Sec. 6 works through four applications, which are the natural place to judge whether the compile-once design pays off in full training runs rather than in isolated forward and backward passes.

Target Audience

Researchers and engineers working on classical simulation of quantum circuits, variational quantum algorithm and quantum machine learning training pipelines, and GPU-accelerated scientific computing in PyTorch. It is most useful to readers who already understand Pauli strings, the Heisenberg picture, and truncation-based approximate simulation, and who need to decide whether to adopt a compiled, differentiable Pauli propagation engine rather than a CPU library or a statevector simulator. Readers mainly interested in rigorous complexity-theoretic guarantees will find those cited from prior work (LOWESA, Clifford perturbation theory, sparse Pauli dynamics, observable backpropagation on Pauli paths) rather than derived here.

Authors’ abstract

Variational quantum algorithms utilize parameterized circuits many times during training, at new parameter values, over batches of data, and with gradients. Pauli propagation approximates the expectation values of such circuits classically by evolving the observable in the Heisenberg picture as a truncated sum of Pauli strings. We present PADO-Pauli, a GPU engine for Pauli propagation that compiles a circuit and its observables once into sparse matrices in which each rotation angle contributes only a cosine and a sine factor, so every later evaluation reuses the compiled program. It evaluates batches of parameters and data inputs embedded as rotation angles. By default its gradients come from a vector-Jacobian product registered with PyTorch's automatic differentiation, so they flow through the angles to any classical layer that produces them. PADO-Pauli also provides truncation by Pauli weight and coefficient size, and noise channels. Zero-filtering removes terms that do not contribute to an expectation value in the all-zero reference state and makes the batched forward pass about 1.5 times faster. Compared to cuPauliProp on an NVIDIA A100, PADO-Pauli evaluates up to 10 times faster on 4 to 12 qubits and uses up to 3.1 times less memory on 16 qubits. We check its accuracy against exact statevector simulation up to 28 qubits. These features make PADO-Pauli a practical toolkit for training variational quantum algorithms, including quantum machine learning models.

Read the original paper