Runtime Decisions


Does cuGraph make any runtime decisions based on various graph/input properties to determine the best parallelization strategy for tackling a certain task, or is it up to the user to determine this?

Yes, mainly we consider average vertex degree and the number of GPUs to decide whether to cache edge source/destination property values in a contiguous array or (key, value) pairs. More detailed answer is avaliable in Analyzing Multi-trillion Edge Graphs on Large GPU Clusters: A Case Study with PageRank | IEEE Conference Publication | IEEE Xplore If I just briefly outline the key idea, with 2D partitioning and assuming V vertices and P GPUs, the range of edge source/destination values scales V/sqrt(P). Say we have E edges, the number of edges per partition is E/P. And we access E/P or fewer source/destination property values. If E/P is smaller than V/sqrt(P), storing edge source/destination property values in (key, value) pairs saves memory. Otherwise, storing in a contiguous memory is more efficient in both space & time. We also make concurrency/memory footprint trade-offs in multiple places.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.