File: parallelRmatScript.m

package info (click to toggle)
combblas 2.0.0-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 190,488 kB
  • sloc: cpp: 55,918; ansic: 25,134; sh: 3,691; makefile: 548; csh: 66; python: 49; perl: 21
file content (54 lines) | stat: -rw-r--r-- 1,637 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
% PARALLELRMATSCRIPT : Script to simulate parallel RMAT
%
% This compares two ways of building an RMAT graph:
%      First, build it all at once (as if on one processor)
%      Second, build np graphs of 1/np the edge density
%          and put their triples together (as if on np processors)
%
% This test assumes np divdes edgefactor*2^scale; 
% for the real code, generate ceil(edgefactor*2^scale/np) triples 
% on each processor but only use edgefactor*2^scale of them in all.
%
% John Gilbert, 20 Oct 2010

edgefactor = 16;
scale = 15;
np = 128;

nv = 2^scale;
ne = edgefactor * nv;

% The official way
IJ1 = kronecker_generator(scale,edgefactor);
A1 = sparse(IJ1(1,:)+1,IJ1(2,:)+1,ones(1,ne),nv,nv);

% The multinode way
IJ2 = zeros(2,ne);
for p = 1:np
    myrange = ((p-1)*ne/np) + (1:ne/np);
    IJ2(:,myrange) = kronecker_generator(scale,edgefactor/np);
end;
A2 = sparse(IJ2(1,:)+1,IJ2(2,:)+1,ones(1,ne),nv,nv);

% Qualitative comparison of matrices
figure; spy(A1); title('Single-node matrix');
figure; spy(A2); title(sprintf('%d-node matrix',np));
figure;
plot(sum(A1),sum(A2),'b.',sum(A1,2),sum(A2,2),'r.');
legend('column counts','row counts','Location','northwest'); 
title('Correlation between matrices');
xlabel('Single-node matrix'); ylabel('Multi-node matrix');
figure; 
subplot(2,1,1); 
s = full(sum(A1));
top = ceil(log10(nv));
es = 0:top/20:top;
N = histc(log10(s),es);
plot(es,log10(N),'.');
title('Single-node matrix column counts');
subplot(2,1,2); 
s = full(sum(A2));
N = histc(log10(s),es);
plot(es,log10(N),'.');
title('Multi-node matrix column counts');