Enable C++ PPR Sampling#556
Merged
mkolodner-sc merged 200 commits intomainfrom May 5, 2026
Merged
Conversation
4d2db2a to
cfcb8cb
Compare
7009d70 to
dd118ef
Compare
Collaborator
kmontemayor2-sc
left a comment
There was a problem hiding this comment.
Thanks Matt! just nits now the only thing that's a bit odd is why we can't do std::optional<std::vector>
kmontemayor2-sc
approved these changes
May 4, 2026
Collaborator
kmontemayor2-sc
left a comment
There was a problem hiding this comment.
Thanks Matt! just nits now the only thing that's a bit odd is why we can't do std::optional<std::vector>
Contributor
GiGL Automation@ 22:20:44UTC : Starting to build base images for CUDA and CPU. |
Contributor
GiGL Automation@ 22:48:36UTC : Built and pushed new images:
Updated |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope of work done
PPR-Based Neighbor Sampling for GiGL
Adds C++ based PPR (Personalized PageRank) based neighbor sampling as an alternative to k-hop sampling in GiGL's distributed training stack, switching from the previous pythonic implementation.
C++ Kernel (
gigl-core/csrc/sampling/)PPRForwardPushState— a pybind11-wrapped C++ class that owns all hot-loop state (scores, residuals, queue, neighbor cache).run_in_executor.gigl-coreis a separately installable package (uv pip install -e gigl-core/) with apy.typedmarker and.pyistub for full mypy coverage.Python Sampler (
gigl/distributed/dist_ppr_sampler.py)DistPPRNeighborSamplerextendsBaseGiGLSamplerand integrates with the existingDistNeighborLoader/ Graph Store infrastructure.(seed_type, "ppr", neighbor_type)edge types withedge_index([2, N]int64) andedge_attr([N]float PPR scores).max_fetch_iterations: Optional[int] = Nonecaps RPC calls per batch; the algorithm continues to convergence using cached neighbor lists after the budget is exhausted.num_neighbors_per_hopdefaults to1000— high-degree hub nodes receive diminishing residual per neighbor, so capping the fetch has negligible effect on PPR accuracy.Configuration
PPRSamplerOptionsadded tosampler_options.pyalongside existingKHopNeighborSamplerOptions; pass viasampler_options=onDistNeighborLoader.C++ Tests (
gigl-core/tests/ppr_forward_push_test.cpp)tests/CMakeLists.txtupdated to auto-link torch and auto-discover kernel sources undercsrc/(excludingpython_*entry points).Where is the documentation for this feature?: N/A
Did you add automated tests or write a test plan?
Updated Changelog.md? NO
Ready for code review?: NO