/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_CYCLE_COUNTER # ifdef _CRAYC return (uint64_t)_rtc(); # else uint64_t clock_value; uint32_t low = 0; uint32_t high = 0; asm volatile ("rdtsc" : "=a" (low), "=d" (high)); clock_value = ((uint64_t)high << 32) | (uint64_t)low; return clock_value; # endif #elif TIMER == TIMER_CLOCK_GETTIME struct timespec tp; clock_gettime(CLOCK_REALTIME, &tp); return ((tp.tv_sec - vt_time_base) * 1000000000LL) + tp.tv_nsec; #elif TIMER == TIMER_GETTIMEOFDAY struct timeval tp; gettimeofday(&tp, 0); return ((tp.tv_sec - vt_time_base) * 1000000LL) + tp.tv_usec; #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_RTS_GET_TIMEBASE return (uint64_t)rts_get_timebase(); #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_GETHRTIME return (uint64_t)gethrtime(); #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time in seconds */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_BGP_GET_TIMEBASE return (uint64_t)_bgp_GetTimeBase(); #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_GETTIMEOFDAY struct timeval tp; gettimeofday(&tp, 0); return ((tp.tv_sec - vt_time_base) * 1000000LL) + tp.tv_usec; #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_MMTIMER return *mmdev_timer_addr; #elif TIMER == TIMER_CLOCK_GETTIME struct timespec tp; clock_gettime(CLOCK_REALTIME, &tp); return ((tp.tv_sec - vt_time_base) * 1000000000LL) + tp.tv_nsec; #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }
/* local or global wall-clock time */ uint64_t vt_pform_wtime() { #if TIMER == TIMER_SWITCH_CLOCK int i; int64_t t; for (i=0; i<NUMRETRY; i++) { if ( (t = swclockRead(vt_swclk)) != -1 ) return t; } return 0; #elif TIMER == TIMER_POWER_REALTIME timebasestruct_t t; read_real_time(&t, TIMEBASE_SZ); time_base_to_time(&t, TIMEBASE_SZ); return ((t.tb_high - vt_time_base) * 1e9) + t.tb_low; #elif TIMER == TIMER_PAPI_REAL_CYC return vt_metric_real_cyc(); #elif TIMER == TIMER_PAPI_REAL_USEC return vt_metric_real_usec() - vt_time_base; #endif }