PAPI_set_domain.c File Reference

Include dependency graph for PAPI_set_domain.c:

Go to the source code of this file.

Defines

#define ERROR_RETURN(retval)   { fprintf(stderr, "Error %d %s:line %d: \n", retval,__FILE__,__LINE__); exit(retval); }

Functions

int poorly_tuned_function ()
int main ()

Define Documentation

#define ERROR_RETURN ( retval   )     { fprintf(stderr, "Error %d %s:line %d: \n", retval,__FILE__,__LINE__); exit(retval); }

Definition at line 13 of file PAPI_set_domain.c.


Function Documentation

int main (  ) 

Definition at line 27 of file PAPI_set_domain.c.

00028 {
00029 
00030    int num, retval, EventSet = PAPI_NULL;
00031    long long values[2];
00032    PAPI_option_t options;    
00033    int fd;
00034    
00035 
00036    /****************************************************************************
00037    *  This part initializes the library and compares the version number of the *
00038    * header file, to the version of the library, if these don't match then it  *
00039    * is likely that PAPI won't work correctly.If there is an error, retval     *
00040    * keeps track of the version number.                                        *
00041    ****************************************************************************/
00042 
00043    if((retval = PAPI_library_init(PAPI_VER_CURRENT)) != PAPI_VER_CURRENT )
00044    {
00045       printf("Library initialization error! \n");
00046       exit(1);
00047    }
00048 
00049    /* Set the domain of this EventSet to counter user mode. The domain
00050       will be valid for all the eventset created after this function call 
00051       unless you call PAPI_set_domain again */ 
00052    if ((retval=PAPI_set_domain(PAPI_DOM_USER)) != PAPI_OK)
00053       ERROR_RETURN(retval);
00054 
00055    if ((retval=PAPI_create_eventset(&EventSet)) != PAPI_OK)
00056       ERROR_RETURN(retval);
00057 
00058    /* Add Total Instructions Executed event to the EventSet */
00059    if ( (retval = PAPI_add_event(EventSet, PAPI_TOT_INS)) != PAPI_OK)
00060       ERROR_RETURN(retval);
00061 
00062    /* Add Total Cycles Executed event to the EventSet */
00063    if ( (retval = PAPI_add_event(EventSet, PAPI_TOT_CYC)) != PAPI_OK)
00064       ERROR_RETURN(retval);
00065 
00066    /* Start counting */
00067    if((retval=PAPI_start(EventSet)) != PAPI_OK)
00068       ERROR_RETURN(retval);
00069 
00070    poorly_tuned_function();
00071    /* add some system calls */
00072    fd = open("/dev/zero", O_RDONLY);
00073    if (fd == -1)
00074    {
00075          perror("open(/dev/zero)");
00076          exit(1);
00077    }
00078    close(fd);
00079 
00080 
00081    /* Stop counting */
00082    if((retval=PAPI_stop(EventSet, values)) != PAPI_OK)
00083       ERROR_RETURN(retval);
00084         
00085    printf(" Total instructions: %lld   Total Cycles: %lld \n", values[0],
00086             values[1]);
00087 
00088    /* Set the domain of this EventSet to counter user and kernel modes */ 
00089    if ((retval=PAPI_set_domain(PAPI_DOM_ALL)) != PAPI_OK)
00090       ERROR_RETURN(retval);
00091 
00092    EventSet = PAPI_NULL;
00093    if ((retval=PAPI_create_eventset(&EventSet)) != PAPI_OK)
00094       ERROR_RETURN(retval);
00095 
00096    /* Add Total Instructions Executed to our EventSet */
00097    if ( (retval = PAPI_add_event(EventSet, PAPI_TOT_INS)) != PAPI_OK)
00098       ERROR_RETURN(retval);
00099 
00100    /* Add Total Instructions Executed to our EventSet */
00101    if ( (retval = PAPI_add_event(EventSet, PAPI_TOT_CYC)) != PAPI_OK)
00102       ERROR_RETURN(retval);
00103    /* Start counting */
00104    if((retval=PAPI_start(EventSet)) != PAPI_OK)
00105       ERROR_RETURN(retval);
00106 
00107    poorly_tuned_function();
00108    /* add some system calls */
00109    fd = open("/dev/zero", O_RDONLY);
00110    if (fd == -1)
00111    {
00112          perror("open(/dev/zero)");
00113          exit(1);
00114    }
00115    close(fd);
00116 
00117    /* Stop counting */
00118    if((retval=PAPI_stop(EventSet, values)) != PAPI_OK)
00119       ERROR_RETURN(retval);
00120         
00121    printf(" Total instructions: %lld   Total Cycles: %lld \n", values[0],
00122             values[1]);
00123 
00124    /* clean up */
00125    PAPI_shutdown();
00126 
00127    exit(0);
00128 }

Here is the call graph for this function:

int poorly_tuned_function (  ) 

Definition at line 15 of file PAPI_set_domain.c.

00016 {
00017    float tmp;
00018    int i;
00019 
00020    for(i=1; i<2000; i++)
00021    {
00022       tmp=(tmp+100)/i;
00023    }
00024    return 0;
00025 }


Generated on 26 Jan 2016 for PAPI by  doxygen 1.6.1