-
Notifications
You must be signed in to change notification settings - Fork 304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[REVIEW] Improve memory scaling for low average vertex degree graphs & many GPUs #1823
Conversation
…ate thrust::tuple_cat
rerun tests |
Codecov Report
@@ Coverage Diff @@
## branch-21.10 #1823 +/- ##
================================================
+ Coverage 59.85% 69.57% +9.72%
================================================
Files 77 139 +62
Lines 3547 8645 +5098
================================================
+ Hits 2123 6015 +3892
- Misses 1424 2630 +1206 Continue to review full report at Codecov.
|
rerun tests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The description field for this PR should be updated with an actual description of the work.
@gpucibot merge |
Assuming sqrt(P) is an integer, matrix row/column property array sizes in each GPU scale as V/sqrt(P) while the storage requirement for graph edges scale as E/P. If E/V is small and P is large, the O(V/sqrt(P)) part will dominate the memory requirement and analyzing N times larger graphs will require N^2 times more GPUs; this is unacceptable. However, in this case, at most E/P elements of the V/sqrt(P) sized array will be accessed, so no need to store the whole V/sqrt(P) values. Instead, we can store row/column properties in (key, value) pairs limiting the memory requirement to be the minimum of V/sqrt(P) and E/P.
This PR supports storing matrix row/column properties in (key, value) pairs if the percentage of actually accessed elements is lower than the threshold value (the code has been tested only up to 8 GPUs, and there was no clear benefit at this scale; currently the threshold value is set to 0 and (key, value) pair support is never enabled, but the threshold value will be adjusted later after large scale testing).