0

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?

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 Answers1

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