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

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