|
Packit |
577717 |
#include <stdio.h>
|
|
Packit |
577717 |
#include <stdlib.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 |
int
|
|
Packit |
577717 |
main( int argc, char **argv )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int FPEventSet = PAPI_NULL;
|
|
Packit |
577717 |
long long values;
|
|
Packit |
577717 |
int PAPI_event, retval;
|
|
Packit |
577717 |
char event_name[PAPI_MAX_STR_LEN];
|
|
Packit |
577717 |
int quiet;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Set TESTS_QUIET variable */
|
|
Packit |
577717 |
quiet=tests_quiet( argc, argv );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* init PAPI */
|
|
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 |
/* Use PAPI_FP_INS if available, otherwise use PAPI_TOT_INS */
|
|
Packit |
577717 |
if ( PAPI_query_event( PAPI_FP_INS ) == PAPI_OK )
|
|
Packit |
577717 |
PAPI_event = PAPI_FP_INS;
|
|
Packit |
577717 |
else
|
|
Packit |
577717 |
PAPI_event = PAPI_TOT_INS;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_query_event( PAPI_event );
|
|
Packit |
577717 |
if (retval != PAPI_OK ) {
|
|
Packit |
577717 |
if (!quiet) printf("Trouble querying event\n");
|
|
Packit |
577717 |
test_skip( __FILE__, __LINE__, "PAPI_query_event", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Create the eventset */
|
|
Packit |
577717 |
if ( ( retval = PAPI_create_eventset( &FPEventSet ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Add event to the eventset */
|
|
Packit |
577717 |
if ( ( retval = PAPI_add_event( FPEventSet, PAPI_event ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_add_event", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Start counting */
|
|
Packit |
577717 |
if ( ( retval = PAPI_start( FPEventSet ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_start", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Try to cleanup while running */
|
|
Packit |
577717 |
/* Fail test if this isn't refused */
|
|
Packit |
577717 |
if ( ( retval = PAPI_cleanup_eventset( FPEventSet ) ) != PAPI_EISRUN )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Try to destroy eventset while running */
|
|
Packit |
577717 |
/* Fail test if this isn't refused */
|
|
Packit |
577717 |
if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_EISRUN )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* do some work */
|
|
Packit |
577717 |
do_flops( 1000000 );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* stop counting */
|
|
Packit |
577717 |
if ( ( retval = PAPI_stop( FPEventSet, &values ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Try to destroy eventset without cleaning first */
|
|
Packit |
577717 |
/* Fail test if this isn't refused */
|
|
Packit |
577717 |
if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_EINVAL )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Try to cleanup eventset. */
|
|
Packit |
577717 |
/* This should pass. */
|
|
Packit |
577717 |
if ( ( retval = PAPI_cleanup_eventset( FPEventSet ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_cleanup_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Try to destroy eventset. */
|
|
Packit |
577717 |
/* This should pass. */
|
|
Packit |
577717 |
if ( ( retval = PAPI_destroy_eventset( &FPEventSet ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_destroy_eventset", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Make sure eventset was set to PAPI_NULL */
|
|
Packit |
577717 |
if ( FPEventSet != PAPI_NULL )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "FPEventSet != PAPI_NULL", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( !quiet ) {
|
|
Packit |
577717 |
if ( ( retval =
|
|
Packit |
577717 |
PAPI_event_code_to_name( PAPI_event, event_name ) ) != PAPI_OK )
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_event_code_to_name", retval );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
printf( "Test case John May 2: cleanup / destroy eventset.\n" );
|
|
Packit |
577717 |
printf( "-------------------------------------------------\n" );
|
|
Packit |
577717 |
printf( "Test run : \t1\n" );
|
|
Packit |
577717 |
printf( "%s : \t", event_name );
|
|
Packit |
577717 |
printf( LLDFMT, values );
|
|
Packit |
577717 |
printf( "\n" );
|
|
Packit |
577717 |
printf( "-------------------------------------------------\n" );
|
|
Packit |
577717 |
printf( "The following messages will appear if PAPI is compiled with debug enabled:\n" );
|
|
Packit |
577717 |
printf
|
|
Packit |
577717 |
( "\tPAPI Error Code -10: PAPI_EISRUN: EventSet is currently counting\n" );
|
|
Packit |
577717 |
printf
|
|
Packit |
577717 |
( "\tPAPI Error Code -10: PAPI_EISRUN: EventSet is currently counting\n" );
|
|
Packit |
577717 |
printf( "\tPAPI Error Code -1: PAPI_EINVAL: Invalid argument\n" );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
test_pass( __FILE__ );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
return 0;
|
|
Packit |
577717 |
}
|