Blame src/components/perf_event/tests/perf_event_system_wide.c

Packit Service a1973e
/*
Packit Service a1973e
 * This tests the measuring of events using a system-wide granularity
Packit Service a1973e
 */
Packit Service a1973e
Packit Service a1973e
#include <stdio.h>
Packit Service a1973e
#include <errno.h>
Packit Service a1973e
#include <string.h>
Packit Service a1973e
Packit Service a1973e
#include "papi.h"
Packit Service a1973e
#include "papi_test.h"
Packit Service a1973e
Packit Service a1973e
#include "do_loops.h"
Packit Service a1973e
Packit Service a1973e
#ifndef __USE_GNU
Packit Service a1973e
#define __USE_GNU
Packit Service a1973e
#endif
Packit Service a1973e
Packit Service a1973e
/* For sched_setaffinity() */
Packit Service a1973e
#include <sched.h>
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
int main( int argc, char **argv ) {
Packit Service a1973e
Packit Service a1973e
	int retval;
Packit Service a1973e
	int EventSetDefault = PAPI_NULL;
Packit Service a1973e
	int EventSetUser = PAPI_NULL;
Packit Service a1973e
	int EventSetKernel = PAPI_NULL;
Packit Service a1973e
	int EventSetUserKernel = PAPI_NULL;
Packit Service a1973e
	int EventSetAll = PAPI_NULL;
Packit Service a1973e
	int EventSet4 = PAPI_NULL;
Packit Service a1973e
	int EventSet5 = PAPI_NULL;
Packit Service a1973e
	int EventSet6 = PAPI_NULL;
Packit Service a1973e
	int EventSet7 = PAPI_NULL;
Packit Service a1973e
	int EventSet8 = PAPI_NULL;
Packit Service a1973e
	int EventSet9 = PAPI_NULL;
Packit Service a1973e
	int EventSet10 = PAPI_NULL;
Packit Service a1973e
Packit Service a1973e
	int quiet=0;
Packit Service a1973e
Packit Service a1973e
	PAPI_domain_option_t domain_opt;
Packit Service a1973e
	PAPI_granularity_option_t gran_opt;
Packit Service a1973e
	PAPI_cpu_option_t cpu_opt;
Packit Service a1973e
	cpu_set_t mask;
Packit Service a1973e
Packit Service a1973e
	long long dom_default_values[1],
Packit Service a1973e
		dom_user_values[1],
Packit Service a1973e
		dom_kernel_values[1],
Packit Service a1973e
		dom_userkernel_values[1],
Packit Service a1973e
		dom_all_values[1];
Packit Service a1973e
	long long grn_thr_values[1],grn_proc_values[1];
Packit Service a1973e
	long long grn_sys_values[1],grn_sys_cpu_values[1];
Packit Service a1973e
	long long total_values[1],total_affinity_values[1];
Packit Service a1973e
	long long total_all_values[1];
Packit Service a1973e
Packit Service a1973e
	dom_user_values[0]=0;
Packit Service a1973e
	dom_userkernel_values[0]=0;
Packit Service a1973e
	dom_all_values[0]=0;
Packit Service a1973e
	grn_thr_values[0]=0;
Packit Service a1973e
	grn_proc_values[0]=0;
Packit Service a1973e
	grn_sys_values[0]=0;
Packit Service a1973e
	grn_sys_cpu_values[0]=0;
Packit Service a1973e
	total_values[0]=0;
Packit Service a1973e
	total_affinity_values[0]=0;
Packit Service a1973e
	total_all_values[0]=0;
Packit Service a1973e
Packit Service a1973e
	/* Set TESTS_QUIET variable */
Packit Service a1973e
	quiet=tests_quiet( argc, argv );
Packit Service a1973e
Packit Service a1973e
	/* Init the PAPI library */
Packit Service a1973e
	retval = PAPI_library_init( PAPI_VER_CURRENT );
Packit Service a1973e
	if ( retval != PAPI_VER_CURRENT ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
		printf("\nTrying PAPI_TOT_INS with different domains:\n");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/* Default		   */
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_create_eventset(&EventSetDefault);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_add_named_event(EventSetDefault, "PAPI_TOT_INS");
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if ( !quiet ) {
Packit Service a1973e
			fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
		}
Packit Service a1973e
		test_skip(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
		printf("\tDefault:\t\t\t");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_start( EventSetDefault );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_stop( EventSetDefault, dom_default_values );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( !quiet ) {
Packit Service a1973e
		printf("%lld\n",dom_default_values[0]);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/* user events             */
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_create_eventset(&EventSetUser);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_assign_eventset_component(EventSetUser, 0);
Packit Service a1973e
Packit Service a1973e
	/* we need to set domain to be as inclusive as possible */
Packit Service a1973e
	domain_opt.def_cidx=0;
Packit Service a1973e
	domain_opt.eventset=EventSetUser;
Packit Service a1973e
	domain_opt.domain=PAPI_DOM_USER;
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_set_opt(PAPI_DOMAIN,(PAPI_option_t*)&domain_opt);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if (retval==PAPI_EPERM) {
Packit Service a1973e
         		test_skip( __FILE__, __LINE__,
Packit Service a1973e
		    		"this test; trying to set PAPI_DOM_ALL; need to run as root",
Packit Service a1973e
				retval);
Packit Service a1973e
		}
Packit Service a1973e
		else {
Packit Service a1973e
			test_fail(__FILE__, __LINE__, "setting PAPI_DOM_KERNEL",retval);
Packit Service a1973e
		}
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_add_named_event(EventSetUser, "PAPI_TOT_INS");
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if ( !quiet ) {
Packit Service a1973e
			fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
		}
Packit Service a1973e
		test_skip(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
		printf("\tPAPI_DOM_USER:\t\t\t");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_start( EventSetUser );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_stop( EventSetUser, dom_user_values );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( !quiet ) {
Packit Service a1973e
		printf("%lld\n",dom_user_values[0]);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/* kernel events           */
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_create_eventset(&EventSetKernel);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_assign_eventset_component(EventSetKernel, 0);
Packit Service a1973e
Packit Service a1973e
	/* we need to set domain to be as inclusive as possible */
Packit Service a1973e
	domain_opt.def_cidx=0;
Packit Service a1973e
	domain_opt.eventset=EventSetKernel;
Packit Service a1973e
	domain_opt.domain=PAPI_DOM_KERNEL;
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_set_opt(PAPI_DOMAIN,(PAPI_option_t*)&domain_opt);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if (retval==PAPI_EPERM) {
Packit Service a1973e
         		test_skip( __FILE__, __LINE__,
Packit Service a1973e
		    		"this test; trying to set PAPI_DOM_ALL; need to run as root",
Packit Service a1973e
				retval);
Packit Service a1973e
		}
Packit Service a1973e
		else {
Packit Service a1973e
			test_fail(__FILE__, __LINE__, "setting PAPI_DOM_KERNEL",retval);
Packit Service a1973e
		}
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_add_named_event(EventSetKernel, "PAPI_TOT_INS");
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if ( !quiet ) {
Packit Service a1973e
			fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
		}
Packit Service a1973e
		test_skip(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
		printf("\tPAPI_DOM_KERNEL:\t\t");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_start( EventSetKernel );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_stop( EventSetKernel, dom_kernel_values );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( !quiet ) {
Packit Service a1973e
		printf("%lld\n",dom_kernel_values[0]);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/* User+Kernel events      */
Packit Service a1973e
	/***************************/
Packit Service a1973e
	/***************************/
Packit Service a1973e
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
		printf("\tPAPI_DOM_USER|PAPI_DOM_KERNEL:\t");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_create_eventset(&EventSetUserKernel);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_assign_eventset_component(EventSetUserKernel, 0);
Packit Service a1973e
Packit Service a1973e
	/* we need to set domain to be as inclusive as possible */
Packit Service a1973e
Packit Service a1973e
	domain_opt.def_cidx=0;
Packit Service a1973e
	domain_opt.eventset=EventSetUserKernel;
Packit Service a1973e
	domain_opt.domain=PAPI_DOM_USER|PAPI_DOM_KERNEL;
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_set_opt(PAPI_DOMAIN,(PAPI_option_t*)&domain_opt);
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
Packit Service a1973e
		if (retval==PAPI_EPERM) {
Packit Service a1973e
			test_skip( __FILE__, __LINE__,
Packit Service a1973e
				"this test; trying to set PAPI_DOM_ALL; need to run as root",
Packit Service a1973e
				retval);
Packit Service a1973e
		}
Packit Service a1973e
		else {
Packit Service a1973e
			test_fail(__FILE__, __LINE__, "setting PAPI_DOM_ALL",retval);
Packit Service a1973e
		}
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_add_named_event(EventSetUserKernel, "PAPI_TOT_INS");
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
		if ( !quiet ) {
Packit Service a1973e
			fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
		}
Packit Service a1973e
		test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_start( EventSetUserKernel );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_stop( EventSetUserKernel, dom_userkernel_values );
Packit Service a1973e
	if ( retval != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( !quiet ) {
Packit Service a1973e
		printf("%lld\n",dom_userkernel_values[0]);
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* DOMAIN_ALL  events      */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if (!quiet) {
Packit Service a1973e
      printf("\tPAPI_DOM_ALL:\t\t\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSetAll);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSetAll, 0);
Packit Service a1973e
Packit Service a1973e
   /* we need to set domain to be as inclusive as possible */
Packit Service a1973e
Packit Service a1973e
   domain_opt.def_cidx=0;
Packit Service a1973e
   domain_opt.eventset=EventSetAll;
Packit Service a1973e
   domain_opt.domain=PAPI_DOM_ALL;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_DOMAIN,(PAPI_option_t*)&domain_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
Packit Service a1973e
      if (retval==PAPI_EPERM) {
Packit Service a1973e
         test_skip( __FILE__, __LINE__,
Packit Service a1973e
		    "this test; trying to set PAPI_DOM_ALL; need to run as root",
Packit Service a1973e
		    retval);
Packit Service a1973e
      }
Packit Service a1973e
      else {
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "setting PAPI_DOM_ALL",retval);
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_add_named_event(EventSetAll, "PAPI_TOT_INS");
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if ( !quiet ) {
Packit Service a1973e
         fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
      }
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_start( EventSetAll );
Packit Service a1973e
   if ( retval != PAPI_OK ) {
Packit Service a1973e
      test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_stop( EventSetAll, dom_all_values );
Packit Service a1973e
   if ( retval != PAPI_OK ) {
Packit Service a1973e
      test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("%lld\n",dom_all_values[0]);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* PAPI_GRN_THR  events */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\nTrying different granularities:\n");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tPAPI_GRN_THR:\t\t\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSet4);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSet4, 0);
Packit Service a1973e
Packit Service a1973e
   /* Set the granularity to individual thread */
Packit Service a1973e
Packit Service a1973e
   gran_opt.def_cidx=0;
Packit Service a1973e
   gran_opt.eventset=EventSet4;
Packit Service a1973e
   gran_opt.granularity=PAPI_GRN_THR;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_skip( __FILE__, __LINE__,
Packit Service a1973e
		      "this test; trying to set PAPI_GRN_THR",
Packit Service a1973e
		      retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_add_named_event(EventSet4, "PAPI_TOT_INS");
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if ( !quiet ) {
Packit Service a1973e
         fprintf(stderr,"Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
      }
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_start( EventSet4 );
Packit Service a1973e
   if ( retval != PAPI_OK ) {
Packit Service a1973e
      test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_stop( EventSet4, grn_thr_values );
Packit Service a1973e
   if ( retval != PAPI_OK ) {
Packit Service a1973e
      test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("%lld\n",grn_thr_values[0]);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* PAPI_GRN_PROC  events   */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tPAPI_GRN_PROC:\t\t\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSet5);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSet5, 0);
Packit Service a1973e
Packit Service a1973e
   /* Set the granularity to process */
Packit Service a1973e
Packit Service a1973e
   gran_opt.def_cidx=0;
Packit Service a1973e
   gran_opt.eventset=EventSet5;
Packit Service a1973e
   gran_opt.granularity=PAPI_GRN_PROC;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if (!quiet) {
Packit Service a1973e
         printf("Unable to set PAPI_GRN_PROC\n");
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
   else {
Packit Service a1973e
      retval = PAPI_add_named_event(EventSet5, "PAPI_TOT_INS");
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
         }
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_start( EventSet5 );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_stop( EventSet5, grn_proc_values );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      if ( !quiet ) {
Packit Service a1973e
         printf("%lld\n",grn_proc_values[0]);
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* PAPI_GRN_SYS  events    */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tPAPI_GRN_SYS:\t\t\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSet6);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSet6, 0);
Packit Service a1973e
Packit Service a1973e
   /* Set the granularity to current cpu */
Packit Service a1973e
Packit Service a1973e
   gran_opt.def_cidx=0;
Packit Service a1973e
   gran_opt.eventset=EventSet6;
Packit Service a1973e
   gran_opt.granularity=PAPI_GRN_SYS;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if (!quiet) {
Packit Service a1973e
         printf("Unable to set PAPI_GRN_SYS\n");
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
   else {
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_add_named_event(EventSet6, "PAPI_TOT_INS");
Packit Service a1973e
	if (retval != PAPI_OK) {
Packit Service a1973e
Packit Service a1973e
		if (retval == PAPI_EPERM) {
Packit Service a1973e
			/* FIXME: read perf_event_paranoid and see */
Packit Service a1973e
			if (!quiet) printf("SYS granularity not allowed, probably perf_event_paranoid permissions\n");
Packit Service a1973e
		}
Packit Service a1973e
		else {
Packit Service a1973e
			if ( !quiet ) {
Packit Service a1973e
            			printf("Error adding PAPI_TOT_INS with system granularity\n");
Packit Service a1973e
         		}
Packit Service a1973e
			test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS with system granularity",retval);
Packit Service a1973e
		}
Packit Service a1973e
	} else {
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_start( EventSet6 );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_stop( EventSet6, grn_sys_values );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("%lld\n",grn_sys_values[0]);
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /****************************/
Packit Service a1973e
   /****************************/
Packit Service a1973e
   /* PAPI_GRN_SYS_CPU  events */
Packit Service a1973e
   /****************************/
Packit Service a1973e
   /****************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tPAPI_GRN_SYS_CPU:\t\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSet7);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSet7, 0);
Packit Service a1973e
Packit Service a1973e
   /* Set the granularity to all cpus */
Packit Service a1973e
Packit Service a1973e
   gran_opt.def_cidx=0;
Packit Service a1973e
   gran_opt.eventset=EventSet7;
Packit Service a1973e
   gran_opt.granularity=PAPI_GRN_SYS_CPU;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if (!quiet) {
Packit Service a1973e
         printf("Unable to set PAPI_GRN_SYS_CPU\n");
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
   else {
Packit Service a1973e
      retval = PAPI_add_named_event(EventSet7, "PAPI_TOT_INS");
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
         }
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_start( EventSet7 );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_stop( EventSet7, grn_sys_cpu_values );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      if ( !quiet ) {
Packit Service a1973e
         printf("%lld\n",grn_sys_cpu_values[0]);
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* SYS and ATTACH  events  */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\nPAPI_GRN_SYS plus CPU attach:\n");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tGRN_SYS, DOM_USER, CPU 0 attach:\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_create_eventset(&EventSet8);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_assign_eventset_component(EventSet8, 0);
Packit Service a1973e
Packit Service a1973e
   /* Set the granularity to system-wide */
Packit Service a1973e
Packit Service a1973e
   gran_opt.def_cidx=0;
Packit Service a1973e
   gran_opt.eventset=EventSet8;
Packit Service a1973e
   gran_opt.granularity=PAPI_GRN_SYS;
Packit Service a1973e
Packit Service a1973e
   retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
   if (retval != PAPI_OK) {
Packit Service a1973e
      if (!quiet) {
Packit Service a1973e
         printf("Unable to set PAPI_GRN_SYS\n");
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
   else {
Packit Service a1973e
      /* we need to set to a certain cpu */
Packit Service a1973e
Packit Service a1973e
      cpu_opt.eventset=EventSet8;
Packit Service a1973e
      cpu_opt.cpu_num=0;
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_set_opt(PAPI_CPU_ATTACH,(PAPI_option_t*)&cpu_opt);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
	 if (retval==PAPI_EPERM) {
Packit Service a1973e
		if (!quiet) {
Packit Service a1973e
			printf("Permission error trying to CPU_ATTACH; need to run as root\n");
Packit Service a1973e
		}
Packit Service a1973e
            test_skip( __FILE__, __LINE__,
Packit Service a1973e
		    "this test; trying to CPU_ATTACH; need to run as root",
Packit Service a1973e
		    retval);
Packit Service a1973e
	 }
Packit Service a1973e
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "PAPI_CPU_ATTACH",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_add_named_event(EventSet8, "PAPI_TOT_INS");
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
         }
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_start( EventSet8 );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_stop( EventSet8, total_values );
Packit Service a1973e
      if ( retval != PAPI_OK ) {
Packit Service a1973e
         test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      if ( !quiet ) {
Packit Service a1973e
         printf("%lld\n",total_values[0]);
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* SYS and ATTACH, bind CPU  events  */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tGRN_SYS, DOM_USER, CPU 0 affinity:\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   /* Set affinity to CPU 0 */
Packit Service a1973e
   CPU_ZERO(&mask);
Packit Service a1973e
   CPU_SET(0,&mask);
Packit Service a1973e
   retval=sched_setaffinity(0, sizeof(mask), &mask);
Packit Service a1973e
Packit Service a1973e
   if (retval<0) {
Packit Service a1973e
     if (!quiet) {
Packit Service a1973e
        printf("Setting affinity failed: %s\n",strerror(errno));
Packit Service a1973e
     }
Packit Service a1973e
   } else {
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_create_eventset(&EventSet9);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_assign_eventset_component(EventSet9, 0);
Packit Service a1973e
Packit Service a1973e
      /* Set the granularity to system-wide */
Packit Service a1973e
Packit Service a1973e
      gran_opt.def_cidx=0;
Packit Service a1973e
      gran_opt.eventset=EventSet9;
Packit Service a1973e
      gran_opt.granularity=PAPI_GRN_SYS;
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         if (!quiet) {
Packit Service a1973e
            printf("Unable to set PAPI_GRN_SYS\n");
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
      else {
Packit Service a1973e
         /* we need to set to a certain cpu for uncore to work */
Packit Service a1973e
Packit Service a1973e
         cpu_opt.eventset=EventSet9;
Packit Service a1973e
         cpu_opt.cpu_num=0;
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_set_opt(PAPI_CPU_ATTACH,(PAPI_option_t*)&cpu_opt);
Packit Service a1973e
         if (retval != PAPI_OK) {
Packit Service a1973e
            test_fail(__FILE__, __LINE__, "PAPI_CPU_ATTACH",retval);
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_add_named_event(EventSet9, "PAPI_TOT_INS");
Packit Service a1973e
         if (retval != PAPI_OK) {
Packit Service a1973e
            if ( !quiet ) {
Packit Service a1973e
               printf("Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
            }
Packit Service a1973e
            test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_start( EventSet9 );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_stop( EventSet9, total_affinity_values );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("%lld\n",total_affinity_values[0]);
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /* SYS and ATTACH, bind CPU  events  */
Packit Service a1973e
   /***************************/
Packit Service a1973e
   /***************************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\tGRN_SYS, DOM_ALL, CPU 0 affinity:\t");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
   /* Set affinity to CPU 0 */
Packit Service a1973e
   CPU_ZERO(&mask);
Packit Service a1973e
   CPU_SET(0,&mask);
Packit Service a1973e
   retval=sched_setaffinity(0, sizeof(mask), &mask);
Packit Service a1973e
Packit Service a1973e
   if (retval<0) {
Packit Service a1973e
     if (!quiet) {
Packit Service a1973e
        printf("Setting affinity failed: %s\n",strerror(errno));
Packit Service a1973e
     }
Packit Service a1973e
   } else {
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_create_eventset(&EventSet10);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         test_fail(__FILE__, __LINE__, "PAPI_create_eventset",retval);
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_assign_eventset_component(EventSet10, 0);
Packit Service a1973e
Packit Service a1973e
      /* Set DOM_ALL */
Packit Service a1973e
      domain_opt.def_cidx=0;
Packit Service a1973e
      domain_opt.eventset=EventSet10;
Packit Service a1973e
      domain_opt.domain=PAPI_DOM_ALL;
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_set_opt(PAPI_DOMAIN,(PAPI_option_t*)&domain_opt);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
Packit Service a1973e
         if (retval==PAPI_EPERM) {
Packit Service a1973e
            test_skip( __FILE__, __LINE__,
Packit Service a1973e
		    "this test; trying to set PAPI_DOM_ALL; need to run as root",
Packit Service a1973e
		    retval);
Packit Service a1973e
         }
Packit Service a1973e
         else {
Packit Service a1973e
            test_fail(__FILE__, __LINE__, "setting PAPI_DOM_ALL",retval);
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
Packit Service a1973e
      /* Set the granularity to system-wide */
Packit Service a1973e
Packit Service a1973e
      gran_opt.def_cidx=0;
Packit Service a1973e
      gran_opt.eventset=EventSet10;
Packit Service a1973e
      gran_opt.granularity=PAPI_GRN_SYS;
Packit Service a1973e
Packit Service a1973e
      retval = PAPI_set_opt(PAPI_GRANUL,(PAPI_option_t*)&gran_opt);
Packit Service a1973e
      if (retval != PAPI_OK) {
Packit Service a1973e
         if (!quiet) {
Packit Service a1973e
            printf("Unable to set PAPI_GRN_SYS\n");
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
      else {
Packit Service a1973e
         /* we need to set to a certain cpu for uncore to work */
Packit Service a1973e
Packit Service a1973e
         cpu_opt.eventset=EventSet10;
Packit Service a1973e
         cpu_opt.cpu_num=0;
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_set_opt(PAPI_CPU_ATTACH,(PAPI_option_t*)&cpu_opt);
Packit Service a1973e
         if (retval != PAPI_OK) {
Packit Service a1973e
            test_fail(__FILE__, __LINE__, "PAPI_CPU_ATTACH",retval);
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_add_named_event(EventSet10, "PAPI_TOT_INS");
Packit Service a1973e
         if (retval != PAPI_OK) {
Packit Service a1973e
            if ( !quiet ) {
Packit Service a1973e
               printf("Error trying to add PAPI_TOT_INS\n");
Packit Service a1973e
            }
Packit Service a1973e
            test_fail(__FILE__, __LINE__, "adding PAPI_TOT_INS ",retval);
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_start( EventSet10 );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         do_flops( NUM_FLOPS );
Packit Service a1973e
Packit Service a1973e
         retval = PAPI_stop( EventSet10, total_all_values );
Packit Service a1973e
         if ( retval != PAPI_OK ) {
Packit Service a1973e
            test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
         }
Packit Service a1973e
Packit Service a1973e
         if ( !quiet ) {
Packit Service a1973e
            printf("%lld\n",total_all_values[0]);
Packit Service a1973e
         }
Packit Service a1973e
      }
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   /**************/
Packit Service a1973e
   /* Validation */
Packit Service a1973e
   /**************/
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("\n");
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
   if ( !quiet ) {
Packit Service a1973e
      printf("Validating:\n");
Packit Service a1973e
      printf("\tDOM_USER|DOM_KERNEL (%lld) > DOM_USER (%lld)\n",
Packit Service a1973e
             dom_userkernel_values[0],dom_user_values[0]);
Packit Service a1973e
   }
Packit Service a1973e
   if (dom_user_values[0] > dom_userkernel_values[0]) {
Packit Service a1973e
      test_fail( __FILE__, __LINE__, "DOM_USER too high", 0 );
Packit Service a1973e
   }
Packit Service a1973e
Packit Service a1973e
	if ( !quiet ) {
Packit Service a1973e
		printf("\n");
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	test_pass( __FILE__ );
Packit Service a1973e
Packit Service a1973e
	return 0;
Packit Service a1973e
}