GPU paillier client code added, execution context modified to include…#9
GPU paillier client code added, execution context modified to include…#9RovayL wants to merge 11 commits into
Conversation
… GPU code, additional tests for GPU clients have been added, deemed fully functional
Unify CPU/GPU Paillier clientsGoalDelete C++ changes
|
…U loader - build_gpu_binaries.sh: Docker-based build for the paillier GPU .so files - Route PaillierLookupGPU through load_gpu_extension so its missing-.so error matches the non-lookup path and points at the build script - Simplify encrypt/decode paths (drop the bytes-packing shim since the extension now returns ints directly) - Fix Repository/Issues URLs in pyproject.toml (xtrace-vec-sdk -> xtrace-sdk) - Document GPU setup and update CHANGELOG/README
…o staging-GPU-paillier-client
…_binaries.sh' built both .so files successfully. - .venv/bin/ruff check src/xtrace_sdk/ passed. - .venv/bin/mypy src/xtrace_sdk/ passed. - .venv/bin/python -m pytest tests/x_vec -q passed: 46 passed, 24 skipped.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c8fc683. Configure here.
| } | ||
| if (out_rem_nz) out_rem_nz[instance] = rem_nz; | ||
|
|
||
| } |
There was a problem hiding this comment.
Unused CUDA kernel adds dead code complexity
Low Severity
The decode_hamming_kernel GPU kernel is defined but never invoked by any method in PaillierGPUClient. The decode_hamming_client method uses decrypt_only_kernel (via decrypt_chunks) followed by CPU-side bit counting instead. This dead kernel with its complex parameter list (including debug outputs, mask inputs) adds maintenance burden and confusion about the intended decryption path.
Reviewed by Cursor Bugbot for commit c8fc683. Configure here.


… GPU code, additional tests for GPU clients have been added, deemed fully functional
Note
High Risk
High risk because it introduces new native CUDA extensions and changes cryptography client backend selection and packaging/release workflows, which can affect runtime correctness and distribution/installability across platforms.
Overview
Adds first-class GPU support for Paillier/Paillier-Lookup via in-tree CUDA extensions. Introduces
build_gpu_binaries.shplus newpaillier_gpu_ext/paillier_lookup_gpu_extpackages (Makefiles + pybind11.cu) and updates clients to load these extensions when available.Changes backend selection from env var to API-level
device=.PaillierClient,PaillierLookupClient, andExecutionContextnow takedevice: "auto"|"cpu"|"gpu"(default"auto") using a sharedresolve_devicehelper, removeDEVICEenv handling, normalize GPU cipher formats, and addencode_hamming_serverhelpers for cross-backend interop.Updates CI/release to gate and ship GPU builds. CI adds label-gated integration and GPU jobs, builds
.soartifacts on a free runner and runs GPU tests on a dedicated runner; release builds per-Python wheels, repairs tomanylinux_2_31_x86_64, publishes wheels+sdist, and uses a Hatch build hook/artifacts config to include.sofiles and tag wheels as non-pure when binaries are present.Docs/README/CHANGELOG are updated to document manual GPU builds, requirements, and the new
device=API, and repo URLs are updated inpyproject.toml.Reviewed by Cursor Bugbot for commit c8fc683. Bugbot is set up for automated code reviews on this repo. Configure here.