|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* File: multiplex.c
|
|
Packit |
577717 |
* Author: Philip Mucci
|
|
Packit |
577717 |
* mucci@cs.utk.edu
|
|
Packit |
577717 |
* Mods: <your name here>
|
|
Packit |
577717 |
* <your email address>
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* This file tests the multiplex functionality, originally developed by
|
|
Packit |
577717 |
John May of LLNL. */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include <stdio.h>
|
|
Packit |
577717 |
#include <stdlib.h>
|
|
Packit |
577717 |
#include <string.h>
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include "papi.h"
|
|
Packit |
577717 |
#include "papi_test.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include "do_loops.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Event to use in all cases; initialized in init_papi() */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define TOTAL_EVENTS 6
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int solaris_preset_PAPI_events[TOTAL_EVENTS] = {
|
|
Packit |
577717 |
PAPI_TOT_CYC, PAPI_BR_MSP, PAPI_L2_TCM, PAPI_L1_ICM, 0
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
int power6_preset_PAPI_events[TOTAL_EVENTS] = {
|
|
Packit |
577717 |
PAPI_TOT_CYC, PAPI_FP_INS, PAPI_L1_DCM, PAPI_L1_ICM, 0
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
int preset_PAPI_events[TOTAL_EVENTS] = {
|
|
Packit |
577717 |
PAPI_TOT_CYC, PAPI_FP_INS, PAPI_TOT_INS, PAPI_L1_DCM, PAPI_L1_ICM, 0
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static int PAPI_events[TOTAL_EVENTS] = { 0, };
|
|
Packit |
577717 |
static int PAPI_events_len = 0;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static void
|
|
Packit |
577717 |
init_papi( int *out_events, int *len )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval;
|
|
Packit |
577717 |
int i, real_len = 0;
|
|
Packit |
577717 |
int *in_events = preset_PAPI_events;
|
|
Packit |
577717 |
const PAPI_hw_info_t *hw_info;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Initialize the library */
|
|
Packit |
577717 |
retval = PAPI_library_init( PAPI_VER_CURRENT );
|
|
Packit |
577717 |
if ( retval != PAPI_VER_CURRENT ) {
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_library_init", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
hw_info = PAPI_get_hardware_info( );
|
|
Packit |
577717 |
if ( hw_info == NULL ) {
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_get_hardware_info", 2 );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( strstr( hw_info->model_string, "UltraSPARC" ) ) {
|
|
Packit |
577717 |
in_events = solaris_preset_PAPI_events;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( strcmp( hw_info->model_string, "POWER6" ) == 0 ) {
|
|
Packit |
577717 |
in_events = power6_preset_PAPI_events;
|
|
Packit |
577717 |
retval = PAPI_set_domain( PAPI_DOM_ALL );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_set_domain", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_multiplex_init( );
|
|
Packit |
577717 |
if ( retval == PAPI_ENOSUPP) {
|
|
Packit |
577717 |
test_skip(__FILE__, __LINE__, "Multiplex not supported", 1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else if ( retval != PAPI_OK ) {
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_multiplex_init", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for ( i = 0; in_events[i] != 0; i++ ) {
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
/* query and set up the right instruction to monitor */
|
|
Packit |
577717 |
retval = PAPI_query_event( in_events[i] );
|
|
Packit |
577717 |
if ( retval == PAPI_OK ) {
|
|
Packit |
577717 |
out_events[real_len++] = in_events[i];
|
|
Packit |
577717 |
PAPI_event_code_to_name( in_events[i], out );
|
|
Packit |
577717 |
if ( real_len == *len )
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
} else {
|
|
Packit |
577717 |
PAPI_event_code_to_name( in_events[i], out );
|
|
Packit |
577717 |
if ( !TESTS_QUIET )
|
|
Packit |
577717 |
printf( "%s does not exist\n", out );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( real_len < 1 ) {
|
|
Packit |
577717 |
if (!TESTS_QUIET) printf("Trouble adding events\n");
|
|
Packit |
577717 |
test_skip(__FILE__,__LINE__, "No counters available", 0 );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
*len = real_len;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_multiplex_init does not mess with normal operation. */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
case1( void )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval, i, EventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long values[2];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_events_len = 2;
|
|
Packit |
577717 |
init_papi( PAPI_events, &PAPI_events_len );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for ( i = 0; i < PAPI_events_len; i++ ) {
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if ( !TESTS_QUIET )
|
|
Packit |
577717 |
printf( "Added %s\n", out );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( PAPI_start( EventSet ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_stop( EventSet, values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !TESTS_QUIET ) {
|
|
Packit |
577717 |
test_print_event_header( "case1:", EventSet );
|
|
Packit |
577717 |
printf( TAB2, "case1:", values[0], values[1] );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
retval = PAPI_cleanup_eventset( EventSet ); /* JT */
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_shutdown( );
|
|
Packit |
577717 |
return ( SUCCESS );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_set_multiplex() works before adding events */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
case2( void )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval, i, EventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long values[2];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_events_len = 2;
|
|
Packit |
577717 |
init_papi( PAPI_events, &PAPI_events_len );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* In Component PAPI, EventSets must be assigned a component index
|
|
Packit |
577717 |
before you can fiddle with their internals.
|
|
Packit |
577717 |
0 is always the cpu component */
|
|
Packit |
577717 |
retval = PAPI_assign_eventset_component( EventSet, 0 );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_assign_eventset_component", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_set_multiplex( EventSet );
|
|
Packit |
577717 |
if ( retval == PAPI_ENOSUPP) {
|
|
Packit |
577717 |
test_skip(__FILE__, __LINE__, "Multiplex not supported", 1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_set_multiplex", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for ( i = 0; i < PAPI_events_len; i++ ) {
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if ( !TESTS_QUIET )
|
|
Packit |
577717 |
printf( "Added %s\n", out );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( PAPI_start( EventSet ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_stop( EventSet, values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !TESTS_QUIET ) {
|
|
Packit |
577717 |
test_print_event_header( "case2:", EventSet );
|
|
Packit |
577717 |
printf( TAB2, "case2:", values[0], values[1] );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_cleanup_eventset( EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_shutdown( );
|
|
Packit |
577717 |
return ( SUCCESS );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_set_multiplex() works after adding events */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
case3( void )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval, i, EventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long values[2];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_events_len = 2;
|
|
Packit |
577717 |
init_papi( PAPI_events, &PAPI_events_len );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for ( i = 0; i < PAPI_events_len; i++ ) {
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if ( !TESTS_QUIET )
|
|
Packit |
577717 |
printf( "Added %s\n", out );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_set_multiplex( EventSet );
|
|
Packit |
577717 |
if ( retval == PAPI_ENOSUPP) {
|
|
Packit |
577717 |
test_skip(__FILE__, __LINE__, "Multiplex not supported", 1);
|
|
Packit |
577717 |
} else if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_set_multiplex", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( PAPI_start( EventSet ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_stop( EventSet, values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !TESTS_QUIET ) {
|
|
Packit |
577717 |
test_print_event_header( "case3:", EventSet );
|
|
Packit |
577717 |
printf( TAB2, "case3:", values[0], values[1] );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_cleanup_eventset( EventSet ); /* JT */
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_shutdown( );
|
|
Packit |
577717 |
return ( SUCCESS );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_set_multiplex() works before adding events */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_add_event() works after
|
|
Packit |
577717 |
PAPI_add_event()/PAPI_set_multiplex() */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
case4( void )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval, i, EventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long values[4];
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_events_len = 2;
|
|
Packit |
577717 |
init_papi( PAPI_events, &PAPI_events_len );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
i = 0;
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if (!TESTS_QUIET) printf( "Added %s\n", out );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_set_multiplex( EventSet );
|
|
Packit |
577717 |
if ( retval == PAPI_ENOSUPP) {
|
|
Packit |
577717 |
test_skip(__FILE__, __LINE__, "Multiplex not supported", 1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_set_multiplex", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
i = 1;
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if (!TESTS_QUIET) printf( "Added %s\n", out );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( PAPI_start( EventSet ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_stop( EventSet, values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !TESTS_QUIET ) {
|
|
Packit |
577717 |
test_print_event_header( "case4:", EventSet );
|
|
Packit |
577717 |
printf( TAB2, "case4:", values[0], values[1] );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_cleanup_eventset( EventSet ); /* JT */
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_shutdown( );
|
|
Packit |
577717 |
return ( SUCCESS );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Tests that PAPI_read() works immediately after
|
|
Packit |
577717 |
PAPI_start() */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
case5( void )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int retval, i, j, EventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long start_values[4] = { 0,0,0,0 }, values[4] = {0,0,0,0};
|
|
Packit |
577717 |
char out[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_events_len = 2;
|
|
Packit |
577717 |
init_papi( PAPI_events, &PAPI_events_len );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* In Component PAPI, EventSets must be assigned a component index
|
|
Packit |
577717 |
before you can fiddle with their internals.
|
|
Packit |
577717 |
0 is always the cpu component */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_assign_eventset_component( EventSet, 0 );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_assign_eventset_component", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_set_multiplex( EventSet );
|
|
Packit |
577717 |
if ( retval == PAPI_ENOSUPP) {
|
|
Packit |
577717 |
test_skip(__FILE__, __LINE__, "Multiplex not supported", 1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else if ( retval != PAPI_OK ) {
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_set_multiplex", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Add 2 events... */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
i = 0;
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if (!TESTS_QUIET) printf( "Added %s\n", out );
|
|
Packit |
577717 |
i++;
|
|
Packit |
577717 |
retval = PAPI_add_event( EventSet, PAPI_events[i] );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_events[i], out );
|
|
Packit |
577717 |
if (!TESTS_QUIET) printf( "Added %s\n", out );
|
|
Packit |
577717 |
i++;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_start( EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_read( EventSet, start_values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_read", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do_stuff( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_stop( EventSet, values );
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
for (j=0;j
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf("read @start counter[%d]: %lld\n",
|
|
Packit |
577717 |
j, start_values[j]);
|
|
Packit |
577717 |
printf("read @stop counter[%d]: %lld\n",
|
|
Packit |
577717 |
j, values[j]);
|
|
Packit |
577717 |
printf("difference counter[%d]: %lld\n ",
|
|
Packit |
577717 |
j, values[j]-start_values[j]);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if (values[j]-start_values[j] < 0LL) {
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "Difference in start and stop resulted in negative value!", 0 );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_cleanup_eventset( EventSet ); /* JT */
|
|
Packit |
577717 |
if ( retval != PAPI_OK )
|
|
Packit |
577717 |
test_fail(__FILE__,__LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
PAPI_shutdown( );
|
|
Packit |
577717 |
return ( SUCCESS );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
main( int argc, char **argv )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
|
|
Packit |
577717 |
tests_quiet( argc, argv ); /* Set TESTS_QUIET variable */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf( "case1: Does PAPI_multiplex_init() not break regular operation?\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
case1( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf( "\ncase2: Does setmpx/add work?\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
case2( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf( "\ncase3: Does add/setmpx work?\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
case3( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf( "\ncase4: Does add/setmpx/add work?\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
case4( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!TESTS_QUIET) {
|
|
Packit |
577717 |
printf( "\ncase5: Does setmpx/add/add/start/read work?\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
case5( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
test_pass( __FILE__ );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
return 0;
|
|
Packit |
577717 |
}
|