Parallel Tip and Wing Decomposition to mine hierarchical dense structures in bipartite graphs
PBNG implements a two-phased peeling for scalable parallel tip and wing decomposition on shared-memory multi core servers. It partitions the vertices/edges into smaller subsets and creates independent tasks to process the partitions concurrently. It can decompose the largest open bipartite datasets in few minutes, orders of magnitude faster than the baselines.
![]() |
---|
Graphical Illustration of two-phased peeling in PBNG |
make
It generates the following executables:
- decomposeParWing - parallel edge peeling (for wing decomposition)
- decomposeParTip - parallel vertex peeling (for tip decomposition)
Baselines:
- decomposeSeqWing - sequential edge peeling (for wing decomposition)
- decomposeSeqTip - sequential vertex peeling (for tip decomposition)
- decomposePCWing - progressive compression approach for wing decomposition
Baseline References:
numactl -l ./decomposeParWing -i <inputFile> -o <outputFile> -t <# threads> -p <# partitions to create>
numactl -l ./decomposeParTip -i <inputFile> -o <outputFile> -t <# threads> -p <# partitions to create> -s <peelSide>
- -i : text file containing input graph in COO format (edge list)
- -o : output file where tip/wing numbers will be written (optional)
- -t : numeric value specifying number of threads to use for decomposition (optional, default = 1)
- -p : numeric value specifying number of partitions to create (optional, recommended for tip decomposition = 150, for wing decomposition = 400)
- -s : enum. Use "-s 0" to peel vertex set U (LHS in input file) and "-s 1" to peel set "V" (RHS in input file) (optional, default = 0)
Options -t and -p are not required for sequential decomposition baselines.
The input file should represent graph in an edge list format where each line is a tuple of two integers as shown below:
u v
This indicates that there is an edge between vertices u
and v
.
The vertices in left column constitute the U set and those in right column constitute set V.
An example input file is given in the datasets directory.
PBNG has been tested extensively on large bipartite graphs from KOBLENZ collection
and Network Data Repository.
The output is written in the specified file in a text format.
Every line in the output file is a tuple of three integers as shown below:
u v t
where u
and v
are the vertices of an edge and t
is it's wing number
The output is written in the specified file in a text format.
Every line in the output file is a tuple of two integers as shown below:
u t
where u
is the vertex id and t
is it's tip number
Please refer to the paper RECEIPT: REfine CoarsE-grained IndePendent Tasks for Parallel Tip decomposition of Bipartite Graphs for details, and cite if you use the code.