41 int retval, retval_cudaSetDevice;
46 dl1 = dlopen(
"libpapi.so", RTLD_NOW | RTLD_GLOBAL );
47 if (
dl1==NULL ) printf(
"Intercept cudaSetDevice: Cannot load libpapi.so\n");
54 printf(
"Intercept cudaSetDevice: Initializing PAPI on device %d\n", devnum);
59 if(
retval !=
PAPI_OK ) fprintf( stdout,
"PAPI_create_eventset failed\n" );
61 int (*original_function)(
int devnum,
int n1,
int n2,
int n3,
void *ptr1);
62 original_function = dlsym(RTLD_NEXT,
"cudaSetDevice");
63 retval_cudaSetDevice = (*original_function)( devnum, n1, n2, n3, ptr1 );
66 char tmpEventName[120];
67 printf(
"Intercept cudaSetDevice: Attaching events for device on device %d\n", devnum);
68 snprintf( tmpEventName, 110,
"cuda:::device:%d:%s", devnum,
"inst_executed" );
70 if (
retval!=
PAPI_OK) printf(
"Could not add event %s\n", tmpEventName );
72 return retval_cudaSetDevice;
83 printf(
"Intercept gettimeofday: Attaching PAPI_start to the %d th call to gettimeofday (this may need to be adjusted)\n",
onetime);
85 printf(
"Starting PAPI\n");
86 if(
retval!=
PAPI_OK ) fprintf( stdout,
"PAPI_start failed\n" );
88 int (*original_function)(
void *ptr1,
void *ptr2);
89 original_function = dlsym(RTLD_NEXT,
"gettimeofday");
90 return (*original_function)(ptr1, ptr2);
93 int cudaFreeHost(
void *ptr1,
void *ptr2,
int n1,
int n2,
void *ptr3)
100 printf(
"Intercept cudaFreeHost: Used to get PAPI results\n" );
102 if(
retval !=
PAPI_OK ) fprintf( stderr,
"PAPI_stop failed\n" );
104 printf(
"PAPI counterValue: cuda::device:%d:%s: %12lld \n", devnum,
"inst_executed",
values[devnum] );
106 int (*original_function)(
void *ptr1,
void *ptr2,
int n1,
int n2,
void *ptr3);
107 original_function = dlsym(RTLD_NEXT,
"cudaFreeHost");
108 return (*original_function)(ptr1, ptr2, n1, n2, ptr3);
int(* PAPI_add_named_event_ptr)(int EventSet, char *EventName)
int(* PAPI_stop_ptr)(int EventSet, long long *values)
int cudaSetDevice(int devnum, int n1, int n2, int n3, void *ptr1)
Return codes and api definitions.
int cudaFreeHost(void *ptr1, void *ptr2, int n1, int n2, void *ptr3)
#define PAPI_VERSION_MAJOR(x)
#define PAPI_VERSION_REVISION(x)
#define PAPI_VERSION_MINOR(x)
int(* PAPI_create_eventset_ptr)(int *EventSet)
int gettimeofday(void *ptr1, void *ptr2)
int(* PAPI_library_init_ptr)(int version)
int(* PAPI_start_ptr)(int EventSet)
static long long values[NUM_EVENTS]