13#define mConvertUsec(timeval_) ((double) (timeval_.tv_sec*1000000+timeval_.tv_usec))
21 unsigned long long ull;
31int main(
int argc,
char **argv) {
33 int eventSetCount, ret;
43 gettimeofday(&
t1, NULL);
45 gettimeofday(&
t2, NULL);
49 test_fail(__FILE__, __LINE__,
"PAPI_library_init failed\n", ret);
54 fprintf(
stderr,
"Testing PCP Component with PAPI %d.%d.%d\n",
70 for (
i=0;
i<k && cid<0;
i++) {
72 if (aComponent == NULL) {
73 sprintf(errMsg,
"PAPI_get_component_info(%i) failed, "
74 "returned NULL. %i components reported.\n",
i,k);
79 if (strcmp(
"pcp", aComponent->
name) == 0) cid=
i;
83 sprintf(errMsg,
"Failed to find pcp component among %i "
84 "reported components.\n", k);
89 fprintf(
stderr,
"Found PCP Component at id %d\n",cid);
94 test_skip(__FILE__,__LINE__,
"Component pcp is disabled", 0);
115 test_fail(__FILE__, __LINE__,
"PAPI_enum_cmp_event failed.\n",
123 if (!
quiet) printf(
"Component Idx, Symbol, Units, Description, HexCode (this run only), Time Scope, PAPI_TYPE, Sample Value\n");
136 sprintf(errMsg,
"PAPI_get_event_info(%i) failed.\n", k);
137 test_fail(__FILE__, __LINE__, errMsg, ret);
143 test_fail(__FILE__, __LINE__,
"PAPI_enum_create_eventset failed.\n", ret);
152 test_fail( __FILE__, __LINE__, errMsg, ret);
161 test_fail(__FILE__, __LINE__,
"PAPI_set_opt failed.\n",
171 test_fail( __FILE__, __LINE__, errMsg, ret);
180 test_fail( __FILE__, __LINE__, errMsg, ret);
185 if (code != k && code != (k+1)) {
186 retlen = snprintf(errMsg,
PAPI_MAX_STR_LEN,
"PAPI_event_name_to_code('%s') "
187 "returned code 0x%08X, expected 0x%08X. failure.\n",
191 test_fail( __FILE__, __LINE__, errMsg, 0);
198 retlen = snprintf(errMsg,
PAPI_MAX_STR_LEN,
"PAPI_event_code_to_name(('0x%08X') failed.\n", code);
201 test_fail( __FILE__, __LINE__, errMsg, ret);
204 if (strcmp(info.
symbol, testName) != 0) {
205 retlen = snprintf(errMsg,
PAPI_MAX_STR_LEN,
"PAPI_event_code_to_name(('0x%08X') "
206 "returned name=\"'%s'\", expected \"%s\". failure.\n",
207 code, testName, info.
symbol);
210 test_fail( __FILE__, __LINE__, errMsg, 0);
215 sprintf(errMsg,
"PAPI_add_event('0x%08X') failed.\n", code);
216 test_fail( __FILE__, __LINE__, errMsg, ret);
221 sprintf(errMsg,
"PAPI_start_event('0x%08X') failed.\n", code);
222 test_fail( __FILE__, __LINE__, errMsg, ret);
228 if (eventSetCount < 1) {
229 test_fail( __FILE__, __LINE__,
"PAPI_num_events(EventSet) failed.\n", ret);
232 values = calloc(eventSetCount,
sizeof(
long long));
237 test_fail( __FILE__, __LINE__,
"PAPI_read(EventSet) failed.\n", ret);
243 printf(
"%i, %s, %s, %s, 0x%08x,",
250 printf(
"SINCE START,");
257 printf(
"INT64, %lli", cvt.
ll);
261 printf(
"UINT64, %llu", cvt.
ull);
265 printf(
"FP64, %f", cvt.
d);
269 printf(
"UNKNOWN TYPE, %p", cvt.
vp);
279 test_fail( __FILE__, __LINE__,
"PAPI_reset_event() failed\n", ret);
285 test_fail( __FILE__, __LINE__,
"PAPI_stop_event(EventSet, values) failed.\n", ret);
293 test_fail( __FILE__, __LINE__,
"PAPI_cleanup_eventset(EventSet) failed.\n", ret);
298 test_fail( __FILE__, __LINE__,
"PAPI_destroy_eventset(EventSet) failed.\n", ret);
311 test_fail(__FILE__, __LINE__,
"PAPI_enum_create_eventset failed.\n", ret);
317 test_fail(__FILE__, __LINE__,
"PAPI_enum_cmp_event failed.\n",
326 retlen = snprintf(errMsg,
PAPI_MAX_STR_LEN,
"PAPI_get_event_info(%i) failed.\n", k);
329 test_fail(__FILE__, __LINE__, errMsg, ret);
338 test_fail( __FILE__, __LINE__, errMsg, ret);
346 sprintf(errMsg,
"Test should have been able to add all %i events; failed after %i.\n",
count,
i);
347 test_fail(__FILE__, __LINE__, errMsg, 0);
352 test_fail( __FILE__, __LINE__,
"PAPI_cleanup_eventset(EventSet) failed.\n", ret);
357 test_fail( __FILE__, __LINE__,
"PAPI_destroy_eventset(EventSet) failed.\n", ret);
360 if (!
quiet) fprintf(
stderr,
"PCP discovered %i events; added "
363 if (!
quiet) fprintf(
stderr,
"Shutdown completed.\n");
add PAPI preset or native hardware event to an event set
add PAPI preset or native hardware event by name to an EventSet
Empty and destroy an EventSet.
Create a new empty PAPI EventSet.
Empty and destroy an EventSet.
Enumerate PAPI preset or native events for a given component.
Convert a numeric hardware event code to a name.
Convert a name to a numeric hardware event code.
get information about a specific software component
Get the event's name and description info.
initialize the PAPI library.
Return the number of events in an event set.
Read hardware counters from an event set.
removes a named hardware event from a PAPI event set.
Reset the hardware event counts in an event set.
Set PAPI library or event set options.
Start counting hardware events in an event set.
Stop counting hardware events in an event set.
Returns a string describing the PAPI error code.
#define PAPI_DATATYPE_FP64
#define PAPI_DATATYPE_UINT64
#define PAPI_NTV_ENUM_UMASKS
#define PAPI_TIMESCOPE_SINCE_START
#define PAPI_DATATYPE_INT64
int PAPI_num_components(void)
static long long values[NUM_EVENTS]
Return codes and api definitions.
#define PAPI_VERSION_REVISION(x)
#define PAPI_VERSION_MAJOR(x)
#define PAPI_VERSION_MINOR(x)
int tests_quiet(int argc, char **argv)
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
void PAPI_NORETURN test_pass(const char *filename)
void PAPI_NORETURN test_skip(const char *file, int line, const char *call, int retval)
char name[PAPI_MAX_STR_LEN]
char units[PAPI_MIN_STR_LEN]
char symbol[PAPI_HUGE_STR_LEN]
char long_descr[PAPI_HUGE_STR_LEN]
#define mConvertUsec(timeval_)
unsigned long dummyThreadId(void)
static struct timeval t1 t2
A pointer to the following is passed to PAPI_set/get_opt()
PAPI_domain_option_t domain