Recently, I am reading the code of cuGraph. I notice that it is mentioned that Louvain and Katz algorithms support multi-GPU. However, when I read the C++ code of Louvain, I cannot find code that is related to multi-GPU. Specifically, according to a prior post, multi-GPU can be implemented by calling cudaSetDevice
. I cannot find this function in the code of Louvain, however. Am I missing anything?
Asked
Active
Viewed 178 times
0

Sevaro
- 47
- 4
-
cuGraph is current working on a better multi-GPU C++ API. that should be out on a few months (22.02 or 22.04 release). Until then, take a look at the multi-GPU test for connected components, you can easily just change the name of the function called to be Louvain. https://github.com/rapidsai/cugraph/blob/branch-21.12/cpp/tests/components/mg_weakly_connected_components_test.cpp – Brad Rees Oct 28 '21 at 20:01
1 Answers
2
cuGraph supports multi-GPU by leveraging Dask. I encourage you to read the Dask cuGraph documentation that shows an example using PageRank.
For a Louvain example, I recommend looking at the docstring of the cugraph.dask.louvain
function.
For completeness, under the hood cuGraph is using RAFT to manage underlying NCCL and UCX communication.

Nick Becker
- 4,059
- 13
- 19
-
It seems that Dask is in Python. But the code in the link I provided is in C++. – Sevaro May 28 '21 at 06:14
-
Since you're already looking at the cuGraph codebase, I encourage you to look at the dask components in the python namespace. You will see that Dask ultimately delegates the communication to RAFT, which handles it. – Nick Becker May 28 '21 at 13:16