To get scalability for graph size and high-level concurrency for multi-compute units on multi boards, louvainPartition API with two partition methods is provided with no communication between subgraphs processing.
- Linear louvain partition method, simply dived vertexes linearly, and saves the connection edges between subgraphs to ghost edges. So it is faster in low bandwidth graph but results more ghost edges.
- BFS louvain partition method, dived vertexes by BFS method, and saves the connection edges between subgraphs to ghost edges. Its performance of modularity result keeps the same level between high and low bandwidth input graph.
Linear partition achieve on the high bandwidth and low bandwidth graph is shown in the following figure. Linear partition is not suitable for High bandwidth graph.
In this demo, two methods can be switched by corresponding commands. The comparison of input and output is shown in the following table.
Linear paritition | BFS partition | |
input graph | *.mtx, *.txt … | *.mtx, *.txt … |
input commend | -create_alveo_partitions | -create_alveo_BFS_partitions |
output project | name.par.proj | name.par.proj |
output header file | *.par.src, *.par.parlv | *.par.src, *.par.parlv *.bfs.adj |
output subgraph | name_000.par … | name_000.par … |