Community Detection (Louvain)#

The Phase 1 writeup contains a detailed description of the application.

From the Phase 1 writeup:

Community detection in graphs means grouping vertices together, so that those vertices that are closer (have more connections) to each other are placed in the same cluster. A commonly used algorithm for community detection is Louvain (https://arxiv.org/pdf/0803.0476.pdf).

Scalability Summary#

Application is nonfunctional

Summary of Results#

The application has a segmentation fault and is currently nonfunctional.

Summary of Gunrock Implementation#

The Phase 1 single-GPU implementation is here.

We parallelize across GPUs by utilizing Gunrock’s multi-GPU ForAll operator described here.

Differences in implementation from Phase 1#

No change from Phase 1.

How To Run This Application on NVIDIA’s DGX-2#

Prerequisites#

git clone  https://github.com/gunrock/gunrock -b multigpu
mkdir build
cd build/
cmake ..
make -j16 louvain

Verify git SHA: commit d70a73c5167c5b59481d8ab07c98b376e77466cc

Partitioning the input dataset#

Partitioning is handled automatically as Community Detection relies on Gunrock’s multi-GPU ForALL operator and its data is split evenly across all available GPUs

Running the application#

Once functional, the application will follow the two script approach described in Running the Applications (i.e., using hive-mgpu-run.sh and hive-louvain-test.sh scripts).

Datasets#

Final datasets will be listed when the application is functional.

Output#

No change from Phase 1.

Performance and Analysis#

No change from Phase 1.

Implementation limitations#

Currently nonfunctional.

Performance limitations#

Currently nonfunctional.

Scalability behavior#

Currently unavailable, but unlikely to scale given its ForAll based implementation. See Gunrock’s ForAll Operator for additional information.