xref: /phasta/M2NFixBnd/src/tmrc.c (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen #include <FCMangle.h>
2*59599516SKenneth E. Jansen #define TMRC FortranCInterface_GLOBAL_(tmrc, TMRC)
3*59599516SKenneth E. Jansen 
4*59599516SKenneth E. Jansen #include <stdio.h>
5*59599516SKenneth E. Jansen #include <sys/types.h>
6*59599516SKenneth E. Jansen #include <time.h>
7*59599516SKenneth E. Jansen 
8*59599516SKenneth E. Jansen #include <sys/time.h>
9*59599516SKenneth E. Jansen #include <sys/resource.h>
10*59599516SKenneth E. Jansen #include <unistd.h>
11*59599516SKenneth E. Jansen 
12*59599516SKenneth E. Jansen #ifdef __bgq__
13*59599516SKenneth E. Jansen #include "hwi/include/bqc/A2_inlines.h"
14*59599516SKenneth E. Jansen #endif
15*59599516SKenneth E. Jansen 
TMRC(void)16*59599516SKenneth E. Jansen double TMRC (void)
17*59599516SKenneth E. Jansen {
18*59599516SKenneth E. Jansen 
19*59599516SKenneth E. Jansen #ifdef __bgq__
20*59599516SKenneth E. Jansen 
21*59599516SKenneth E. Jansen    // use the GetTimeBase function available on BGQ
22*59599516SKenneth E. Jansen    uint64_t TB  = GetTimeBase();
23*59599516SKenneth E. Jansen    double t1 = 6.25e-10*TB; // = 1/1.6e9
24*59599516SKenneth E. Jansen 
25*59599516SKenneth E. Jansen #else
26*59599516SKenneth E. Jansen 
27*59599516SKenneth E. Jansen   // use the gettimeofday function available on any Linux plateform
28*59599516SKenneth E. Jansen 
29*59599516SKenneth E. Jansen   int rc;
30*59599516SKenneth E. Jansen   struct timeval tv;
31*59599516SKenneth E. Jansen 
32*59599516SKenneth E. Jansen   rc = gettimeofday (&tv, NULL);
33*59599516SKenneth E. Jansen   if (rc == -1) {
34*59599516SKenneth E. Jansen     fprintf(stderr,"tmrc: gettimeofday\n");
35*59599516SKenneth E. Jansen     return 0.;
36*59599516SKenneth E. Jansen   }
37*59599516SKenneth E. Jansen   double t1 =  ((double) tv.tv_sec) + 1.e-6 * ((double) tv.tv_usec);
38*59599516SKenneth E. Jansen 
39*59599516SKenneth E. Jansen #endif
40*59599516SKenneth E. Jansen 
41*59599516SKenneth E. Jansen   return t1;
42*59599516SKenneth E. Jansen 
43*59599516SKenneth E. Jansen 
44*59599516SKenneth E. Jansen   // Old stuff
45*59599516SKenneth E. Jansen   /*
46*59599516SKenneth E. Jansen   struct rusage cputimePoints;
47*59599516SKenneth E. Jansen   getrusage(RUSAGE_SELF,&cputimePoints);
48*59599516SKenneth E. Jansen   double t1=((cputimePoints.ru_utime).tv_sec+(cputimePoints.ru_stime).tv_sec);
49*59599516SKenneth E. Jansen   t1+=((cputimePoints.ru_utime).tv_usec+(cputimePoints.ru_stime).tv_usec)/1000000.0;
50*59599516SKenneth E. Jansen   */
51*59599516SKenneth E. Jansen 
52*59599516SKenneth E. Jansen    /* double t1=rts_get_timebase()/( 2500000000.0); */
53*59599516SKenneth E. Jansen 
54*59599516SKenneth E. Jansen    /* return time(NULL); */
55*59599516SKenneth E. Jansen    /* return clock()/CLOCKS_PER_SEC; */
56*59599516SKenneth E. Jansen }
57*59599516SKenneth E. Jansen 
58*59599516SKenneth E. Jansen 
59*59599516SKenneth E. Jansen 
60*59599516SKenneth E. Jansen 
61