This source file includes following definitions.
- MPI_Wtime
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 #include "ompi_config.h"
  25 
  26 #ifdef HAVE_SYS_TIME_H
  27 #include <sys/time.h>
  28 #endif
  29 #include <stdio.h>
  30 #ifdef HAVE_TIME_H
  31 #include <time.h>
  32 #endif  
  33 
  34 #include MCA_timer_IMPLEMENTATION_HEADER
  35 #include "ompi/mpi/c/bindings.h"
  36 #include "ompi/runtime/mpiruntime.h"
  37 #include "ompi/runtime/ompi_spc.h"
  38 
  39 #if OMPI_BUILD_MPI_PROFILING
  40 #if OPAL_HAVE_WEAK_SYMBOLS
  41 #pragma weak MPI_Wtime = PMPI_Wtime
  42 #endif
  43 #define MPI_Wtime PMPI_Wtime
  44 
  45 
  46 
  47 
  48 
  49 #if defined(__linux__) && OPAL_HAVE_CLOCK_GETTIME
  50 struct timespec ompi_wtime_time_origin = {.tv_sec = 0};
  51 #else
  52 struct timeval ompi_wtime_time_origin = {.tv_sec = 0};
  53 #endif
  54 #else  
  55 #if defined(__linux__) && OPAL_HAVE_CLOCK_GETTIME
  56 extern struct timespec ompi_wtime_time_origin;
  57 #else
  58 extern struct timeval ompi_wtime_time_origin;
  59 #endif
  60 #endif
  61 
  62 double MPI_Wtime(void)
  63 {
  64     double wtime;
  65 
  66     SPC_RECORD(OMPI_SPC_WTIME, 1);
  67 
  68     
  69 
  70 
  71 
  72 #if 0
  73 #if OPAL_TIMER_CYCLE_NATIVE
  74     wtime = ((double) opal_timer_base_get_cycles()) / opal_timer_base_get_freq();
  75 #elif OPAL_TIMER_USEC_NATIVE
  76     wtime = ((double) opal_timer_base_get_usec()) / 1000000.0;
  77 #endif
  78 #else
  79 #if defined(__linux__) && OPAL_HAVE_CLOCK_GETTIME
  80     struct timespec tp;
  81     (void) clock_gettime(CLOCK_MONOTONIC, &tp);
  82     if( OPAL_UNLIKELY(0 == ompi_wtime_time_origin.tv_sec) ) {
  83         ompi_wtime_time_origin = tp;
  84     }
  85     wtime  = (double)(tp.tv_nsec - ompi_wtime_time_origin.tv_nsec)/1.0e+9;
  86     wtime += (tp.tv_sec - ompi_wtime_time_origin.tv_sec);
  87 #else
  88     
  89     struct timeval tv;
  90     gettimeofday(&tv, NULL);
  91     if( OPAL_UNLIKELY(0 == ompi_wtime_time_origin.tv_sec) ) {
  92         ompi_wtime_time_origin = tv;
  93     }
  94     wtime  = (double)(tv.tv_usec - ompi_wtime_time_origin.tv_usec) / 1.0e+6;
  95     wtime += (tv.tv_sec - ompi_wtime_time_origin.tv_sec);
  96 #endif
  97 #endif
  98 
  99     OPAL_CR_NOOP_PROGRESS();
 100 
 101     return wtime;
 102 }