COMBINATORIAL_BLAS 1.6
 
Loading...
Searching...
No Matches
graph.h
Go to the documentation of this file.
1#ifndef _GRAPH_H_
2#define _GRAPH_H_
3
4#include <stdint.h>
5#include <limits.h>
6
7#if defined(__x86_64__)
8#include <mm_malloc.h>
9#else
10#define _mm_malloc(a,b) malloc((a))
11#define _mm_free(a) free((a))
12#endif
13
14extern int rank;
15extern int nprocs;
16
19
20#define MAX_NUMPROCS 1024
21
22#define ROOT_VERT_RNG_SEED 2323232
23
24#define IDEAL_ALIGNMENT 16
25
26#define TIME_BFS_SUBROUTINES 1
27
28#define LOCAL_QUEUE_SIZE 512
29#define LOCAL_SENDBUF_SIZE 64
30
31#define PROC_ASSERT_CHECK 1
32
33#define PRED_CACHE_BYPASS 1
34#define STORE_PRED 0
35
36#define SAMEPROC_NOREAD 1
37
38#define REPLICATE_D 1
39
40typedef struct {
41
42 /* for all-to-all communication */
45
46 /* displs precomputed when graph is created */
49
56
57#if USE_MPI
58 MPI_Comm row_comm;
59 MPI_Comm col_comm;
60 MPI_Comm replicas_comm;
61 MPI_Comm replicas_comm2;
62#endif
63 int irow;
64 int jcol;
65 int krep;
66
68
69
70typedef struct {
71
72 uint64_t n;
73 uint64_t m;
74
75 uint64_t n_local;
77
80
82
84
86
88
95
100
101
102
104
105
106typedef struct {
107
108 uint64_t n;
109 uint64_t n_local;
111 uint64_t m;
114 int SCALE;
116
118
119typedef struct {
120
121 /* used for local binning */
122 /* Each array is of size nthreads*nprocs */
125
129
130 /* for all-to-all communication */
131 /* arrays of size nprocs */
134
137
140
142
147
149
150
152
154 uint64_t *pred_array_size_ptr, uint64_t* nvisited);
156 uint64_t *pred_array_size_ptr, uint64_t* nvisited);
158 uint64_t *pred_array_size_ptr, uint64_t* nvisited);
160 uint64_t *pred_array_size_ptr, uint64_t* nvisited);
161
162
163int create_dist_graph(const uint64_t num_edges, uint32_t *edges, dist_graph_t *g);
164int create_2Ddist_graph(const uint64_t num_edges, uint32_t *edges, dist_graph_t *g);
165
168 uint64_t* pred, uint64_t pred_array_size);
170 uint64_t* pred, uint64_t pred_array_size);
171
172
173int find_bfs_start_vertices(int num_bfs_roots, dist_graph_t* g, uint64_t* bfs_roots);
174
175double get_seconds();
176
177int local_parallel_quicksort (void *data, int64_t n, size_t elem_size,
178 int (*cmpfn)(const void *x, const void *y));
179
180void get_statistics(const double *x, int n, double *r);
181
182
183#endif
long int64_t
Definition compat.h:21
int create_2Ddist_graph(const uint64_t num_edges, uint32_t *edges, dist_graph_t *g)
uint32_t eid_t
Definition graph.h:18
int validate_bfs_result_threaded(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t pred_array_size)
void get_statistics(const double *x, int n, double *r)
int run_bfs_threaded(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t *pred_array_size_ptr, uint64_t *nvisited)
int local_parallel_quicksort(void *data, int64_t n, size_t elem_size, int(*cmpfn)(const void *x, const void *y))
int rank
int free_graph(dist_graph_t *g)
int gen_graph_edges(graph_gen_data_t *ggi, graph_gen_aux_data_t *ggaux)
int run_bfs(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t *pred_array_size_ptr, uint64_t *nvisited)
int run_bfs_2Dgraph(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t *pred_array_size_ptr, uint64_t *nvisited)
int run_bfs_2Dgraph_threaded(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t *pred_array_size_ptr, uint64_t *nvisited)
int find_bfs_start_vertices(int num_bfs_roots, dist_graph_t *g, uint64_t *bfs_roots)
int nprocs
Definition comms.cpp:55
uint32_t vid_t
Definition graph.h:17
int validate_bfs_result(dist_graph_t *g, uint64_t root, uint64_t *pred, uint64_t pred_array_size)
int create_dist_graph(const uint64_t num_edges, uint32_t *edges, dist_graph_t *g)
double get_seconds()
unsigned int uint32_t
Definition stdint.h:80
signed int int32_t
Definition stdint.h:77
unsigned char uint8_t
Definition stdint.h:78
unsigned __int64 uint64_t
Definition stdint.h:90
int32_t * recvbuf_displs
Definition graph.h:48
int32_t * adj_recvbuf_displs
Definition graph.h:55
int32_t * adj_recvbuf_counts
Definition graph.h:53
int32_t * recvbuf_counts
Definition graph.h:44
int32_t * sendbuf_displs
Definition graph.h:47
uint32_t * adj_sendbuf
Definition graph.h:50
int32_t * sendbuf_counts
Definition graph.h:43
int32_t * adj_sendbuf_displs
Definition graph.h:54
uint32_t * adj_recvbuf
Definition graph.h:51
int32_t * adj_sendbuf_counts
Definition graph.h:52
uint64_t n_local_row
Definition graph.h:78
uint64_t n_local_col
Definition graph.h:79
int nproc_cols
Definition graph.h:97
int nreplicas
Definition graph.h:98
uint64_t m_inter_part_edges
Definition graph.h:81
eid_t * num_edges
Definition graph.h:85
dist_graph_comm_data_t comm_data
Definition graph.h:94
uint32_t * queue_current
Definition graph.h:92
uint8_t * d_trans
Definition graph.h:90
int nproc_rows
Definition graph.h:96
uint8_t * d_trans_full
Definition graph.h:91
int nprocs_per_replica
Definition graph.h:99
uint64_t m_local
Definition graph.h:76
uint8_t * d
Definition graph.h:89
vid_t * original_vertex_ids
Definition graph.h:87
uint32_t * queue_next
Definition graph.h:93
vid_t * adj
Definition graph.h:83
uint64_t * phisto_displs
Definition graph.h:127
uint32_t * sendbuf_edges
Definition graph.h:138
uint64_t * perm_sendbuf
Definition graph.h:143
int * pedge_bin_displs
Definition graph.h:124
uint32_t * recvbuf_edges
Definition graph.h:139
uint64_t perm_recvbuf_size
Definition graph.h:145
uint64_t * perm_recvbuf
Definition graph.h:144
int * pedge_bin_counts
Definition graph.h:123
uint64_t * phisto_counts_global
Definition graph.h:128
uint64_t * nrange
Definition graph.h:141
uint64_t * phisto_counts
Definition graph.h:126
uint64_t perm_n_offset
Definition graph.h:146
uint64_t m_local_allocsize
Definition graph.h:113
uint32_t * gen_edges
Definition graph.h:115
uint64_t n_start
Definition graph.h:110
uint64_t m_local
Definition graph.h:112