puzzlef/pagerank-cuda-optimization-skip-converged: Performance benefit of skipping converged vertices for CUDA based PageRank
Authors/Creators
Description
Part of the report STIC-D based Algorithmic Optimizations for Monolithic PageRank.
--
Performance benefit of skipping converged vertices for CUDA based PageRank (pull, CSR).
This experiment was for comparing performance between:
- Find PageRank without optimization.
- Find PageRank skipping converged vertices with re-check (in
2-16turns). - Find PageRank skipping converged vertices after several turns (in
2-64turns).
Each approach was attempted on a number of graphs, running each approach 5 times to get a good time measure. Skip with re-check (skip-check) is done every 2-16 turns. Skip after turns (skip-after) is done after 2-64 turns.
Results indicate that the optimizations provide an improvement on only a few graphs (without introducing too much error):
- For
web-Stanford, askip-checkof11-14appears to work best. - For
web-BerkStan, askip-checkof8-14appears to work best. - For other graphs, there is no improvement.
On average however, neither skip-check, nor skip-after gives better speed than the default (unoptimized) approach (considering the error introduced due to skipping). This could be due to the unnecessary iterations added by skip-check (mistakenly skipped), and increased memory accesses performed by skip-after (tracking converged count).
All outputs are saved in out and a small part of the output is listed here. Some charts are to be included below, generated from sheets. The input data used for this experiment is available at "graphs" (for small ones), and the SuiteSparse Matrix Collection. This experiment was done with guidance from Prof. Dip Sankar Banerjee and Prof. Kishore Kothapalli.
<br>
$ nvcc -std=c++17 -Xcompiler -lnvgraph -O3 main.cu
$ ./a.out ~/data/min-1DeadEnd.mtx
$ ./a.out ~/data/min-2SCC.mtx
$ ...
# ...
#
# Loading graph /home/subhajit/data/soc-LiveJournal1.mtx ...
# order: 4847571 size: 68993773 {}
# order: 4847571 size: 68993773 {} (transposeWithDegree)
# [00162.126 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda
# [00169.448 ms; 051 iters.] [1.9773e-09 err.] pagerankCuda [skip-check=2]
# [00169.080 ms; 051 iters.] [4.6557e-09 err.] pagerankCuda [skip-check=3]
# [00169.111 ms; 051 iters.] [6.1110e-09 err.] pagerankCuda [skip-check=4]
# [00169.113 ms; 051 iters.] [1.1584e-08 err.] pagerankCuda [skip-check=6]
# [00169.172 ms; 051 iters.] [3.3697e-08 err.] pagerankCuda [skip-check=8]
# [00169.154 ms; 051 iters.] [6.5356e-08 err.] pagerankCuda [skip-check=11]
# [00169.901 ms; 051 iters.] [1.2554e-07 err.] pagerankCuda [skip-check=14]
# [00168.043 ms; 051 iters.] [9.5494e-09 err.] pagerankCuda [skip-after=2]
# [00168.051 ms; 051 iters.] [1.5228e-09 err.] pagerankCuda [skip-after=3]
# [00168.042 ms; 051 iters.] [6.8778e-10 err.] pagerankCuda [skip-after=4]
# [00168.046 ms; 051 iters.] [2.0807e-10 err.] pagerankCuda [skip-after=6]
# [00168.015 ms; 051 iters.] [9.7309e-11 err.] pagerankCuda [skip-after=8]
# [00167.987 ms; 051 iters.] [2.8471e-11 err.] pagerankCuda [skip-after=11]
# [00168.526 ms; 051 iters.] [5.6239e-12 err.] pagerankCuda [skip-after=14]
# [00168.021 ms; 051 iters.] [9.5213e-13 err.] pagerankCuda [skip-after=17]
# [00168.362 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=21]
# [00168.032 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=25]
# [00168.040 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=29]
# [00168.973 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=33]
# [00168.467 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=38]
# [00168.034 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=43]
# [00168.021 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=48]
# [00168.038 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=53]
# [00168.036 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=58]
# [00168.070 ms; 051 iters.] [0.0000e+00 err.] pagerankCuda [skip-after=63]
#
# ...
<br> <br>
References- STIC-D: Algorithmic Techniques For Efficient Parallel Pagerank Computation on Real-World Graphs
- Adjusting PageRank parameters and Comparing results
- PageRank Algorithm, Mining massive Datasets (CS246), Stanford University
- SuiteSparse Matrix Collection
<br> <br>
Files
puzzlef/pagerank-cuda-optimization-skip-converged-1.0.0.zip
Files
(56.6 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:8da06955835e58291970180a3e67e73b
|
56.6 kB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/puzzlef/pagerank-cuda-optimization-skip-converged/tree/1.0.0 (URL)