17{
18 int cmbtotal = 0, ct = 0, track = 0, ret = 0;
19 int i, nevts = 0, status;
20 int *cards = NULL, *indexmemo = NULL;
21 char **allevts = NULL, **basenames = NULL;
24 int nprocs = 1,
myid = 0;
25
26#if defined(USE_MPI)
27 MPI_Init(&argc, &argv);
28 MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
29 MPI_Comm_rank(MPI_COMM_WORLD, &
myid);
30#endif
31
32
35
37 return 0;
38 }
39
40
43
45 return 0;
46 }
47
48
50 if(0 != status)
51 {
54 return 0;
55 }
56
57
59 if(NULL == data)
60 {
62 fprintf(
stderr,
"Could not initialize event stock. Exiting...\n");
64 return 0;
65 }
66
67
69 {
71 if(ct == -1)
72 {
76 return 0;
77 }
78 }
79
80
82 if(status)
83 {
87 {
88 for(
i = 0;
i < ct; ++
i)
89 {
91 }
92 free(basenames);
93 free(cards);
94 }
95 fprintf(
stderr,
"Could not populate event stock. Exiting...\n");
97 return 0;
98 }
99
100
102
103
104 cmbtotal =
check_cards(params, &indexmemo, basenames, cards, ct, nevts, data);
105 if(-1 == cmbtotal)
106 {
110 {
111 for(
i = 0;
i < ct; ++
i)
112 {
114 }
115 free(basenames);
116 free(cards);
117 }
119 return 0;
120 }
121
122
123 if (NULL == (allevts = (char**)malloc(cmbtotal*sizeof(char*)))) {
124 fprintf(
stderr,
"Failed to allocate memory.\n");
126 return 0;
127 }
128
129
131
132 char *conf_file_name = ".cat_cfg";
135 }
137
138
139
140
141 int numSetThreads = 1;
142 char* envVarDefined = getenv("OMP_NUM_THREADS");
143 if (NULL == envVarDefined) {
144 omp_set_num_threads(hw_desc->
numcpus);
145
146 #pragma omp parallel default(shared)
147 {
148 if(!omp_get_thread_num()) {
149 numSetThreads = omp_get_num_threads();
150 }
151 }
152
153 if (numSetThreads != hw_desc->
numcpus) {
154 fprintf(
stderr,
"Warning! Failed to set default number of threads to number of CPUs in a single socket.\n");
155 }
156 }
157
158
160
161
165 {
166 for(
i = 0;
i < ct; ++
i)
167 {
169 }
170 free(basenames);
171 free(cards);
172 free(indexmemo);
173 }
174 for(
i = 0;
i < cmbtotal; ++
i)
175 {
177 }
178 free(allevts);
179 free(hw_desc);
180
182
183#if defined(USE_MPI)
184 MPI_Barrier(MPI_COMM_WORLD);
185 MPI_Finalize();
186#endif
187
188 return 0;
189}
initialize the PAPI library.
Finish using PAPI and free all related resources.
Returns a string describing the PAPI error code.
Initialize thread support in the PAPI library.
static pthread_t myid[NUM_THREADS]
int num_evts(evstock *stock)
void remove_stock(evstock *stock)
int build_stock(evstock *stock)
void testbench(char **allevts, int cmbtotal, hw_desc_t *hw_desc, cat_params_t params, int myid, int nprocs)
int setup_evts(char *inputfile, char ***basenames, int **evnt_cards)
void trav_evts(evstock *stock, int pk, int *cards, int nevts, int selexnsize, int mode, char **allevts, int *track, int *indexmemo, char **basenames)
static hw_desc_t * obtain_hardware_description(char *conf_file_name)
int check_cards(cat_params_t params, int **indexmemo, char **basenames, int *cards, int ct, int nevts, evstock *data)
unsigned long int omp_get_thread_num_wrapper()
int parseArgs(int argc, char **argv, cat_params_t *params)