Blame src/examples/PAPI_get_virt_cyc.c

Packit Service a1973e
/******************************************************************************
Packit Service a1973e
 * This is an example to show how to use low level function PAPI_get_virt_cyc *
Packit Service a1973e
 * and PAPI_get_virt_usec.                                                    *
Packit Service a1973e
 ******************************************************************************/
Packit Service a1973e
Packit Service a1973e
#include <stdio.h>
Packit Service a1973e
#include <stdlib.h>
Packit Service a1973e
#include "papi.h" /* This needs to be included every time you use PAPI */
Packit Service a1973e
Packit Service a1973e
int i;
Packit Service a1973e
double tmp;
Packit Service a1973e
Packit Service a1973e
int your_slow_code()
Packit Service a1973e
{
Packit Service a1973e
Packit Service a1973e
   for(i=1; i<200000; i++)
Packit Service a1973e
   {
Packit Service a1973e
      tmp= (tmp+i)/2;
Packit Service a1973e
   }
Packit Service a1973e
   return 0;
Packit Service a1973e
}
Packit Service a1973e
Packit Service a1973e
int main()
Packit Service a1973e
{
Packit Service a1973e
   long long s,s1, e, e1;
Packit Service a1973e
   int retval;
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /****************************************************************************
Packit Service a1973e
   *  This part initializes the library and compares the version number of the *
Packit Service a1973e
   * header file, to the version of the library, if these don't match then it  *
Packit Service a1973e
   * is likely that PAPI won't work correctly.If there is an error, retval     *
Packit Service a1973e
   * keeps track of the version number.                                        *
Packit Service a1973e
   ****************************************************************************/
Packit Service a1973e
Packit Service a1973e
   if((retval = PAPI_library_init(PAPI_VER_CURRENT)) != PAPI_VER_CURRENT )
Packit Service a1973e
   {
Packit Service a1973e
      printf("Library initialization error! \n");
Packit Service a1973e
      exit(1);
Packit Service a1973e
   }
Packit Service a1973e
        
Packit Service a1973e
   /* Here you get initial cycles and time */
Packit Service a1973e
   /* No error checking is done here because this function call is always 
Packit Service a1973e
      successful */
Packit Service a1973e
Packit Service a1973e
   s = PAPI_get_virt_cyc();
Packit Service a1973e
Packit Service a1973e
   your_slow_code();
Packit Service a1973e
  
Packit Service a1973e
   /*Here you get final cycles and time    */
Packit Service a1973e
   e = PAPI_get_virt_cyc();
Packit Service a1973e
Packit Service a1973e
   s1= PAPI_get_virt_usec();
Packit Service a1973e
Packit Service a1973e
   your_slow_code();
Packit Service a1973e
Packit Service a1973e
   e1= PAPI_get_virt_usec();
Packit Service a1973e
Packit Service a1973e
   printf("Virtual cycles  : %lld\nVirtual time(ms): %lld\n",e-s,e1-s1);
Packit Service a1973e
Packit Service a1973e
   /* clean up */
Packit Service a1973e
   PAPI_shutdown();
Packit Service a1973e
Packit Service a1973e
   exit(0);
Packit Service a1973e
}
Packit Service a1973e