Hi Alisha,

Thanks for the detailed write-up — this is a well-scoped proposal and
ZZFeatureMap is a natural addition to the encoding suite.

We'd love for you to go ahead and put together a POC. A few thoughts to
guide you:

API design: keeps it consistent with the rest of the codebase and plays
better with the Rust type system.

Qiskit parity: Numerical parity with Qiskit's reference implementation is
the right goal for validation, but we don't need to mirror their API
surface. Matching the gate-level math is what matters.

Architectural note: Take a look at how the IQP encoding handles its CUDA
kernel dispatch — the ZZ interaction pattern will have similar two-qubit
parallelism constraints and it's worth reusing those patterns where you can.

For the POC, I'd prioritize:
1. The Rust encoder + CUDA kernel with at least linear entanglement working
end-to-end
2. A basic numerical comparison against Qiskit on a small circuit (2–4
qubits)
3. Python bindings can be minimal for now — just enough to run the
validation

Once the POC is up, open a draft PR against the relevant issue and we can
give more detailed feedback from there.

To engage with the community, you can join our slack channel (you can give
me your preferred email) and join our bi-weekly community meeting at google
meet.

Looking forward to seeing you in the community meeting!

Best,
Ryan Huang

On Mon, Feb 23, 2026 at 3:49 AM Alisha <[email protected]> wrote:

> Hi all,
>
> I would like to propose implementing the ZZFeatureMap encoding for QDP
> (GitHub issue #1008, JIRA GSOC-312).
>
> Background
> ----------
> ZZFeatureMap is widely used in quantum machine learning frameworks such as
> Qiskit for quantum kernels and variational classifiers. Adding it to QDP
> would complete the encoding suite alongside amplitude, angle, basis, and
> IQP
> encodings.
>
> Understanding
> -------------
> Each repetition layer consists of:
>
> 1. Applying Hadamard gates to all qubits
> 2. Applying RZ(x_i) rotations per feature
> 3. Applying exp(i x_i x_j Z_i Z_j) ZZ entangling interactions
> 4. Supporting configurable entanglement patterns (full, linear, circular)
>
> Implementation Plan
> -------------------
>
> 1. Rust Encoder
>    - Implement QuantumEncoder trait
>    - File: qdp-core/src/gpu/encodings/zzfeaturemap.rs
>    - Parameters: num_qubits, reps, entanglement enum
>
> 2. CUDA Kernel
>    - File: qdp-kernels/src/zzfeaturemap.cu
>    - Parallel RZ application
>    - Efficient ZZ interaction implementation
>    - Optimized memory access for NVIDIA 30-series GPU
>    (I have access to a compatible GPU.)
>
> 3. Python Bindings
>    - Integrate via existing QDP API
>    - Expose reps and entanglement configuration
>
> 4. Testing
>    - Validate against Qiskit reference implementation
>    - Numerical tolerance comparison
>    - Unit tests for multiple entanglement modes
>
> I would appreciate feedback on:
> - Preferred API design for entanglement configuration
> - Any architectural constraints to consider before implementation
> - Whether exact Qiskit parity is desired or QDP-style adaptation
>
> Looking forward to your feedback.
>
> Best regards,
> Alisha Gupta
>

Reply via email to