perf(pagerank): add fast, bounded, and memory-aware auto paths - #2007
Draft
lmeyerov wants to merge 5 commits into
Draft
perf(pagerank): add fast, bounded, and memory-aware auto paths#2007lmeyerov wants to merge 5 commits into
lmeyerov wants to merge 5 commits into
Conversation
lmeyerov
commented
Aug 21, 2026
| ``method='fast'`` bypasses the estimate and requires ``chunks=1``. Set | ||
| ``method='bounded'`` with ``chunks>1`` for the strongest explicit peak-memory | ||
| control; setting ``chunks`` above one also makes ``auto`` select ``bounded``. | ||
|
|
Contributor
Author
There was a problem hiding this comment.
Thought should be clear that the main value of this implementation is lower memory consumption for handling bigger graphs on smaller GPUs
Contributor
Author
There was a problem hiding this comment.
Likewise, typically better to use the GPU or CPU ones when fit in memory
lmeyerov
commented
Aug 21, 2026
| import cudf | ||
|
|
||
| return cudf.Series(values) | ||
| return pd.Series(values) |
Contributor
Author
There was a problem hiding this comment.
Send most of these live in our SeriesT / DataframeT cross platform files ?
lmeyerov
commented
Aug 21, 2026
| raise ConvergenceError(f"wcc did not converge in {max_iter} iterations") | ||
|
|
||
|
|
||
| def _pagerank_iterations( |
Contributor
Author
There was a problem hiding this comment.
pagerank code should be in its own pagerank.py, same for any other algorithms
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.
Stack
Draft follow-up stacked on #2006. Review only the four commits in this PR; merge #2006 first.
Summary
fast,bounded, and conservative memory-awareautoexecution modes tographistry.std.pagerankSelection policy
autois the default. Withchunks=1, it selects fast only when a conservative calibrated scratch estimate is at most half detected free host/device memory. Unknown or tighter memory falls back to bounded. Explicitfastbypasses the estimate; explicitboundedpreserves the chunkable dataframe path.Matched evidence
Directed unweighted
cit-Patents, prepared solver calls, 3 samples / 1 warmup:Final GPU samples:
[0.166276, 0.164078, 0.162755]; std-cuDF is 4.67x cuGraph and clears the <=10x target. Rank mass is1.0000000000000013, maximum retained delta is8.131516293641283e-20, and top-10 IDs match. The prior std-cuDF baseline was 1.783722s / 979.153 MiB. The bounded graph500-26 memory result was preserved and cuGraph graph500-26 was not rerun.Artifact SHA-256:
91b44ed81cb4b5b43beee6b341c2d8ce6369d4cedc0e7bde9f821adfc13ff53f.The final DGX runtime artifact was built from implementation commit
7022fe742573e4212339bb326ad887f29b03f518; current PR headec039cdea784036229d66d43d7752751a1db1671adds CPU-only coverage contracts and does not change runtime code.Validation
TEST_CUDF=1: 56 passed, no skipsAll Docker, GPU, dataset, profiling, and performance work ran only on
dgx-sparkthrough the perf lock andsafe_run.sh, with one no-network container, RMM/cgroup caps, >=80 GiB host-memory floor, watchdog, and hard timeout. Companion benchmark PR: https://github.com/graphistry/pyg-bench/pull/194