Hi,

Sure, I have done prototype on my repo yet not submitted a draft PR.

Regards,
Eddie

Jie-Kai Chang <[email protected]>於 2026年3月25日 週三,20:08寫道:

> Hi Eddie,
>
> Thanks for your brief introduction for the proposal, do you have an
> draft PR in your repo that you can show us. It will better helps us
> understand exactly how it will look like.
>
> Best regards.
> Jie-Kai
>
> On Wed, Mar 25, 2026 at 5:13 PM Eddie Tsai <[email protected]> wrote:
> >
> > Hi Ryan,
> >
> > Here’s my handle: https://github.com/vvvdwbvvv
> >
> > And here is brief introduction about my proposal:
> >
> > Following issue #1008 ([QDP] Add ZZFeatureMap Encoding) and GSOC-312
> discussion, I would like to contribute a GPU-accelerated ZZFeatureMap
> encoder to qdp-core / qdp-kernels.
> >
> > This implementation aims to:
> > - Complete the QML encoding suite in QDP (amplitude, angle, basis, IQP →
> + ZZFeatureMap)
> > - Provide high-performance batch encoding via CUDA kernels (direct
> amplitude-phase manipulation for RZZ, avoiding CNOT decomposition)
> > - Align with Qiskit ZZFeatureMap defaults for easy migration (alpha=2.0,
> data_map=(π-x)(π-x), entanglement options: linear/circular/full)
> > - Remain flexible for research: pluggable data_map_func, configurable
> alpha, and safe defaults to avoid performance cliffs on larger n
> >
> > Key Features in the Patch:
> > - Rust struct: `ZZEncoder` (or `PauliZZEncoder`) implementing
> `QuantumEncoder` trait
> >   - Params: n_qubits, reps (default 2), entanglement
> (Linear/Circular/Full), alpha (default 2.0)
> >   - Optional: data_map (QiskitDefault | Product | Custom fn)
> > - CUDA kernels:
> >   - Reuse existing `apply_hadamard_batch` & `apply_rz_batch` from IQP
> >   - New `apply_rzz_batch`: bit-pattern based phase (bi ^ bj ? +theta/2 :
> -theta/2), per-amplitude thread
> > - Python binding via PyO3: `qdp.encoders.ZZEncoder` with
> `.encode(features: np.ndarray) → np.ndarray[complex]`
> > - Validation: statevector L2 norm ≈1.0, dimension checks, zero-input
> handling
> > - Tests:
> >   - Unit: pair generation for each entanglement topology
> >   - Integration: vs Qiskit `ZZFeatureMap` (compare |amplitudes|,
> atol=1e-5, allow global phase diff)
> >   - Edge: reps=0 (pure Hadamard), n=1 full (empty pairs), dimension
> mismatch error
> >
> > Performance Considerations:
> > - Full entanglement auto-warn / opt-in for n>12 to prevent kernel
> explosion
> > - Batch mode for multiple samples → ideal for kernel matrix computation
> > - Little-endian basis consistent with Qiskit/Aer
> >
> > Patch Structure (proposed):
> > - `qdp-core/src/gpu/encodings/zz_encoder.rs`
> > - `qdp-kernels/src/zzfeaturemap.cu` (new kernels)
> > - `testing/qdp/test_zzencoder.py` (Qiskit comparison + smoke tests)
> >
> > This builds directly on the existing IQPEncoder pattern, minimizing code
> duplication while adding the missing second-order Pauli-Z interaction.
> >
> > I'd like to open a Draft PR soon for early feedback. Happy to adjust
> naming (e.g. ZZEncoder vs QuadraticZEncoder), default entanglement (suggest
> Linear for safety).
> >
> > Looking forward to your thoughts / review!
> >
> > Thanks,
> >
> > Eddie Tsai
>

Reply via email to