OMPI_TIMING 50 ompi/util/timings.h ompi_timing_t OMPI_TIMING; \ OMPI_TIMING 51 ompi/util/timings.h OMPI_TIMING.prefix = __func__; \ OMPI_TIMING 52 ompi/util/timings.h OMPI_TIMING.size = _size; \ OMPI_TIMING 53 ompi/util/timings.h OMPI_TIMING.get_ts = opal_timing_ts_func(OPAL_TIMING_AUTOMATIC_TIMER); \ OMPI_TIMING 54 ompi/util/timings.h OMPI_TIMING.cnt = 0; \ OMPI_TIMING 55 ompi/util/timings.h OMPI_TIMING.error = 0; \ OMPI_TIMING 56 ompi/util/timings.h OMPI_TIMING.ts = OMPI_TIMING.get_ts(); \ OMPI_TIMING 57 ompi/util/timings.h OMPI_TIMING.enabled = 0; \ OMPI_TIMING 58 ompi/util/timings.h OMPI_TIMING.import_cnt = 0; \ OMPI_TIMING 63 ompi/util/timings.h OMPI_TIMING.enabled = atoi(ptr); \ OMPI_TIMING 65 ompi/util/timings.h if (OMPI_TIMING.enabled) { \ OMPI_TIMING 67 ompi/util/timings.h OMPI_TIMING.timing = (ompi_timing_list_t*)malloc(sizeof(ompi_timing_list_t)); \ OMPI_TIMING 68 ompi/util/timings.h memset(OMPI_TIMING.timing, 0, sizeof(ompi_timing_list_t)); \ OMPI_TIMING 69 ompi/util/timings.h OMPI_TIMING.timing->val = (ompi_timing_val_t*)malloc(sizeof(ompi_timing_val_t) * _size); \ OMPI_TIMING 70 ompi/util/timings.h OMPI_TIMING.cur_timing = OMPI_TIMING.timing; \ OMPI_TIMING 76 ompi/util/timings.h if (OMPI_TIMING.enabled) { \ OMPI_TIMING 77 ompi/util/timings.h OMPI_TIMING.cur_timing->next = (struct ompi_timing_list_t*)malloc(sizeof(ompi_timing_list_t)); \ OMPI_TIMING 78 ompi/util/timings.h OMPI_TIMING.cur_timing = (ompi_timing_list_t*)OMPI_TIMING.cur_timing->next; \ OMPI_TIMING 79 ompi/util/timings.h memset(OMPI_TIMING.cur_timing, 0, sizeof(ompi_timing_list_t)); \ OMPI_TIMING 80 ompi/util/timings.h OMPI_TIMING.cur_timing->val = malloc(sizeof(ompi_timing_val_t) * OMPI_TIMING.size); \ OMPI_TIMING 86 ompi/util/timings.h if (OMPI_TIMING.enabled) { \ OMPI_TIMING 87 ompi/util/timings.h ompi_timing_list_t *t = OMPI_TIMING.timing, *tmp; \ OMPI_TIMING 94 ompi/util/timings.h OMPI_TIMING.timing = NULL; \ OMPI_TIMING 95 ompi/util/timings.h OMPI_TIMING.cur_timing = NULL; \ OMPI_TIMING 96 ompi/util/timings.h OMPI_TIMING.cnt = 0; \ OMPI_TIMING 102 ompi/util/timings.h if (!OMPI_TIMING.error && OMPI_TIMING.enabled) { \ OMPI_TIMING 106 ompi/util/timings.h if (OMPI_TIMING.cur_timing->use >= OMPI_TIMING.size){ \ OMPI_TIMING 109 ompi/util/timings.h len = snprintf(OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].desc, \ OMPI_TIMING 112 ompi/util/timings.h OMPI_TIMING.error = 1; \ OMPI_TIMING 114 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].file = strdup(f); \ OMPI_TIMING 115 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].prefix = strdup(__func__); \ OMPI_TIMING 116 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use++].ts = \ OMPI_TIMING 117 ompi/util/timings.h OMPI_TIMING.get_ts() - OMPI_TIMING.ts; \ OMPI_TIMING 118 ompi/util/timings.h OMPI_TIMING.cnt++; \ OMPI_TIMING 119 ompi/util/timings.h OMPI_TIMING.ts = OMPI_TIMING.get_ts(); \ OMPI_TIMING 125 ompi/util/timings.h if (OMPI_TIMING.cur_timing->use >= OMPI_TIMING.size){ \ OMPI_TIMING 128 ompi/util/timings.h int len = snprintf(OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].desc, \ OMPI_TIMING 131 ompi/util/timings.h OMPI_TIMING.error = 1; \ OMPI_TIMING 133 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].prefix = func; \ OMPI_TIMING 134 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].file = filename; \ OMPI_TIMING 135 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use++].ts = ts; \ OMPI_TIMING 136 ompi/util/timings.h OMPI_TIMING.cnt++; \ OMPI_TIMING 141 ompi/util/timings.h if (!OMPI_TIMING.error && OMPI_TIMING.enabled) { \ OMPI_TIMING 145 ompi/util/timings.h OMPI_TIMING.import_cnt++; \ OMPI_TIMING 147 ompi/util/timings.h OPAL_TIMING_ENV_ERROR_PREFIX(_prefix, func, OMPI_TIMING.error); \ OMPI_TIMING 150 ompi/util/timings.h OMPI_TIMING.cur_timing->val[OMPI_TIMING.cur_timing->use].imported= \ OMPI_TIMING 151 ompi/util/timings.h OMPI_TIMING.import_cnt; \ OMPI_TIMING 163 ompi/util/timings.h if (OMPI_TIMING.enabled) { \ OMPI_TIMING 170 ompi/util/timings.h MPI_Reduce(&OMPI_TIMING.error, &error, 1, \ OMPI_TIMING 179 ompi/util/timings.h double *avg = (double*)malloc(sizeof(double) * OMPI_TIMING.cnt); \ OMPI_TIMING 180 ompi/util/timings.h double *min = (double*)malloc(sizeof(double) * OMPI_TIMING.cnt); \ OMPI_TIMING 181 ompi/util/timings.h double *max = (double*)malloc(sizeof(double) * OMPI_TIMING.cnt); \ OMPI_TIMING 182 ompi/util/timings.h char **desc = (char**)malloc(sizeof(char*) * OMPI_TIMING.cnt); \ OMPI_TIMING 183 ompi/util/timings.h char **prefix = (char**)malloc(sizeof(char*) * OMPI_TIMING.cnt); \ OMPI_TIMING 184 ompi/util/timings.h char **file = (char**)malloc(sizeof(char*) * OMPI_TIMING.cnt); \ OMPI_TIMING 187 ompi/util/timings.h if( OMPI_TIMING.cnt > 0 ) { \ OMPI_TIMING 188 ompi/util/timings.h OMPI_TIMING.ts = OMPI_TIMING.get_ts(); \ OMPI_TIMING 189 ompi/util/timings.h ompi_timing_list_t *timing = OMPI_TIMING.timing; \ OMPI_TIMING 209 ompi/util/timings.h if (OMPI_TIMING.timing->next) { \ OMPI_TIMING 215 ompi/util/timings.h OMPI_TIMING.prefix); \ OMPI_TIMING 216 ompi/util/timings.h imported = OMPI_TIMING.timing->val[0].imported; \ OMPI_TIMING 217 ompi/util/timings.h for(i=0; i< OMPI_TIMING.cnt; i++){ \ OMPI_TIMING 219 ompi/util/timings.h imported = OMPI_TIMING.timing->val[i].imported; \ OMPI_TIMING 224 ompi/util/timings.h if (OMPI_TIMING.timing->val[i].imported) { \ OMPI_TIMING 229 ompi/util/timings.h if (i == (OMPI_TIMING.cnt-1)) { \ OMPI_TIMING 232 ompi/util/timings.h print_total = imported != OMPI_TIMING.timing->val[i+1].imported; \ OMPI_TIMING 234 ompi/util/timings.h if (print_total && OMPI_TIMING.timing->val[i].imported) { \ OMPI_TIMING 243 ompi/util/timings.h for(i=0; i< OMPI_TIMING.cnt; i++) { \ OMPI_TIMING 244 ompi/util/timings.h if (!OMPI_TIMING.timing->val[i].imported) { \ OMPI_TIMING 251 ompi/util/timings.h OMPI_TIMING.prefix, \ OMPI_TIMING 253 ompi/util/timings.h printf("[%s:overhead]: %lf \n", OMPI_TIMING.prefix, \ OMPI_TIMING 254 ompi/util/timings.h OMPI_TIMING.get_ts() - OMPI_TIMING.ts); \