-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkronecker.c
More file actions
51 lines (42 loc) · 1.29 KB
/
kronecker.c
File metadata and controls
51 lines (42 loc) · 1.29 KB
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
/* -*- mode: C; mode: folding; fill-column: 70; -*- */
/* Copyright 2010-2011, Georgia Institute of Technology, USA. */
/* See COPYING for license. */
#include "compat.h"
#include <stdlib.h>
#include "xalloc.h"
#include "prng.h"
#include "rmat.h"
#include "generator/splittable_mrg.h"
#include "generator/graph_generator.h"
#if 0
void
kronecker_edgelist (struct packed_edge *IJ_in, int64_t nedge, int64_t SCALE,
double A, double B, double C)
{
const int64_t nvtx = 1L<<SCALE;
struct packed_edge * restrict IJ = IJ_in;
int64_t * restrict vperm = NULL;
double D;
D = 1.0 - (A+B+C);
vperm = xmalloc_large_ext (nvtx * sizeof (*vperm));
#if !defined(__MTA__)
double initiator[] = {A, B, C, D};
OMP("omp parallel") {
generate_kronecker (omp_get_thread_num (), omp_get_num_threads (),
prng_seed, SCALE, nedge, initiator, IJ);
}
#else /* __MTA__ */
int64_t rank, size;
MTA("mta use 100 streams") MTA("mta for all streams rank of size") {
double tinitiator[] = {A, B, C, D};
generate_kronecker (rank, size, prng_seed, SCALE, nedge, tinitiator, IJ);
}
#endif
OMP("omp parallel") {
permute_vertex_labels (IJ, nedge, nvtx, prng_state, vperm);
OMP("omp barrier");
OMP("omp master") xfree_large (vperm);
permute_edgelist (IJ, nedge, prng_state);
}
}
#endif