TODO:
- Migrate to AMD ROCm/HIP
- Cleanup codebase (remove dead code)
- Implement CSR for Graph Representation (with bitfield)
- Unit tests passing for original sequential tests
- Improve Memory usage for converting edge list to CSR
- Sequential Louvain Method
- Parallel Louvain Method (MPI) (in progress)
- Parallel Louvain Method (MPI + ROCm/HIP)
- CMake 3.18 or higher
- MPI 3.1 or higher
- (Optional) GPTL with GPTL environment variable pointing to installation directory
From the root directory of the project, use CMake to generate configuration
$ cmake .
To build the community detection binaries simply run make
The parallel binary makes several assumptions
- The file passed is a directory containing files named 0..M-1 where M is the number of parallel processes running
- There are as many data files as there will be processes running.
- The data files contain vertices labeled 0..N-1 where N is the total number of vertices in the graph
- The data files are edge lists
The program makes no assumption about whether it owns any of the vertices contained in the edge list, it will sort that out during the construction of the graph.
To run the program:
$ mpirun -n 4 ./build/community data/graph
This will start each process looking for a file in the graph/ directory.