Presentation HC-4012, Complex Network Clustering Using GPU-based Parallel Non-negative Matrix Factorization, by Huming Zhu at the AMD Developer Summit (APU13) November 11-13, 2013.
6. Complex Network Clustering
Network clustering aims to divide a network into several communities. It is required
that the number of edges linking nodes of the same communities should be higher
than the number of edges joining nodes belonging to different communities.
• Network clustering is essential for understanding how a network is organized and
functions.
12/7/13
Xidian University
6
6
7. Non-negative Matrix Factorization (NMF)
" The NMF problem is defined as a searching for an approximation of the matrix
A with respect to some metric (e.g., the norm) by factoring A into the product
W × H of two reduced matrices W and H.
" NMF was applied in many areas, image processing,
" powerful interpretability and close relationship between clustering methods.
" Need a lot of computation power.
[1] D. D. Lee, H. S. Seung: Learning the parts of objects by non-negative matrix factorization. Nature 401,pp. 788–791 (1999).
12/7/13
Xidian University
7
7
8. Bayesian NMF
Input : Nonnegative data (observation) matrix A, fixed
hyperparameters a, b.
Output : Nonnegative matrices W and H
Step1 :Initialize W and H to nonnegative values
Step5.
12/7/13
If convergence then stop, otherwise, go to step2.
Xidian University
8
8
9. Contents
Complex Network Clustering of NMF
1
2
3
4
5
12/7/13
Parallel Bayesian NMF on GPU
Sparse BNMF on GPU
Experiment
Conclusion
Xidian University
9
18. Pseudo-code for A_WH_csr kernel l
12/7/13
uint row = globalidy;
if(row < row_num)
{
uint rowStart = Ap[row];
//get the start start position in Aj of this row.
uint rowEnd = Ap[row+1]; //get the end position of this row.
int index = rowStart + groupidx * 16 + localid; //the size of group is 16*1
//get the position of this pe(processing elelmet).
int col = Aj[index];//get the position in Av of this pe.
int aStart = widthA *groupidy;
int aEnd = aStart + widthA -1;
int aStep = 16;
float Csub = 0.+0.000001;
int bStart = col;
int bStep = 16*widthB;
for(int a = aStart, b = bStart; a < aEnd; a += aStep, b += bStep)
{
if(rowStart + groupidx * 16 < rowEnd)
{//if there exist any nonzero value in this group
As[localid]=W[a + localid];
barrier(CLK_LOCAL_MEM_FENCE);
}
if(rowStart + groupidx * 16+ localid < rowEnd)
{// if this pe correspond to a nonzero value
for(int k=0; k<16; k++)
Bs[k*16+localid]= H[b + k*widthB];
for(int k=0; k<16; k++)
Csub += Bs[k*16+localid]*As[k];
}
if(rowStart + groupidx * 16+ localid < rowEnd)
Av_result[index] =1.0/Csub;
}
Xidian University
}
18
20. Contents
Complex Network Clustering of NMF
1
2
3
4
5
12/7/13
Parallel Bayesian NMF on GPU
Sparse BNMF on GPU
Experiment
Conclusion
Xidian University
20
21. Machine
Host
Product Name
Device
HP xw9400 workstation
Product Name
AMD Radeon HD 7770
OS
Windows 7 .x64 Edition
Engine Speed
1000MHz
CPU
4× Dual-Core AMD Opteron
2220 2.80GHz
Processing Elements
640
Memory
32GB
Memory
1GB GDDR5
Memory Bandwidths
72GB/s
PCI
PCI Express® 3.0 x16
" AMD Accelerated Parallel Processing (APP) SDK v2.7, OpenCL 1.2
" Microsoft Visual Studio 2010;
12/7/13
Xidian University
21
21
22. Evaluation Modularity(Q)[1]
Q=
ki k j
1
( Aij −
)δ (Ci , C j )
∑
2m ij
2m
synthetic
Q↑,Better Network structure
real-world networks
Data
Vertex
Edges
Q
Data
Vertex
Edges
Q
Benchmark
128
1024
0.450
Facebook
324
4436
0.620
500
5135
0.813
Email
1133
5451
0.531
1000
9582
0.904
Netscience
1461
2742
0.905
5000
38007
0.908
Power
4941
6594
0.599
10000
148470
0.860
Scientists
6650
59870
0.647
50000
748337
0.900
Hep
7610
15751
0.772
LFR
[1]. M. E. J. Newman, M. Girvan, Finding and evaluating community structure in networks,
Phys. Rev. E 69 (2) (2004) 026113.
12/7/13
Xidian University
22
22
23. Network demo
Netscience (part)
• The netscience network is a network of co-authorship of
scientists working on network theory and experiment.
12/7/13
Xidian University
Facebook
23
23