35{
39 char event_name1[]="PAPI_TOT_CYC";
40 char event_name2[]="PAPI_TOT_INS";
44
45
47
48
52 }
53
54
58 }
59
62 if (!
quiet) printf(
"Couldn't add %s\n",event_name1);
63 test_skip(__FILE__,__LINE__,
"Couldn't add PAPI_TOT_CYC",0);
64 }
65
68 if (!
quiet) printf(
"Couldn't add %s\n",event_name2);
69 test_skip(__FILE__,__LINE__,
"Couldn't add PAPI_TOT_INS",0);
70 }
71
73
74 sprintf( add_event_str, "PAPI_add_event[%s]", event_name2 );
75
76
78
79
83 }
84
85
87
88
92 }
93
94
98 }
99
100
102
103
107 }
108
109
111
112
116 }
117
118
120
121
125 }
126
127
131 }
132
133
136
138 printf( "Test case 1: Non-overlapping start, stop, read.\n" );
139 printf( "-----------------------------------------------\n" );
141 printf(
"Default domain is: %d (%s)\n",
tmp,
144 printf(
"Default granularity is: %d (%s)\n",
tmp,
146 printf(
"Using %d iterations of c += a*b\n",
NUM_FLOPS );
147 printf( "-------------------------------------------------------------------------\n" );
148
149 printf( "Test type : 1 2 3 4 5\n" );
150 sprintf( add_event_str, "%s:", event_name2 );
151 printf(
TAB5, add_event_str,
154 printf(
TAB5,
"PAPI_TOT_CYC:",
157 printf( "-------------------------------------------------------------------------\n" );
158
159 printf( "Verification:\n" );
160 printf(
"Row 1 Column 1 at least %d\n",
NUM_FLOPS );
161 printf( "%% difference between %s 1 & 2: %.2f\n",
162 add_event_str,
163 100.0 * (
float )
values[0][1] /
165 printf( "%% difference between %s 1 & 2: %.2f\n",
166 "PAPI_TOT_CYC",
167 100.0 * (
float )
values[0][0] /
169 printf( "Column 1 approximately equals column 2\n" );
170 printf( "Column 3 approximately equals 2 * column 2\n" );
171 printf( "Column 4 approximately equals 3 * column 2\n" );
172 printf( "Column 4 exactly equals column 5\n" );
173 }
174
175
176
177
178
180 max = (
long long ) ( (
double )
values[1][0] * 1.2 );
181
182
184 test_fail( __FILE__, __LINE__,
"Cycle Col1!=Col2", 1 );
185 }
186
187 if ( (
values[2][0] > ( 2 * max )) ||
189 test_fail( __FILE__, __LINE__,
"Cycle Col3!=2*Col2", 1 );
190 }
191
192 if ( (
values[3][0] > ( 3 * max )) ||
194 test_fail( __FILE__, __LINE__,
"Cycle Col3!=3*Col2", 1 );
195 }
196
198 test_fail( __FILE__, __LINE__,
"Cycle Col4!=Col5", 1 );
199 }
200
201
202
203
205 max = (
long long ) ( (
double )
values[1][1] * 1.1 );
206
207
209 test_fail( __FILE__, __LINE__,
"FLOP Col1!=Col2", 1 );
210 }
211
212 if ( (
values[2][1] > ( 2 * max )) ||
214 test_fail( __FILE__, __LINE__,
"FLOP Col3!=2*Col2", 1 );
215 }
216
217 if ( (
values[3][1] > ( 3 * max )) ||
219 test_fail( __FILE__, __LINE__,
"FLOP Col4!=3*Col2", 1 );
220 }
221
223 test_fail( __FILE__, __LINE__,
"FLOP Col4!=Col5", 1 );
224 }
225
227 test_fail( __FILE__, __LINE__,
"FLOP sanity", 1 );
228 }
229
231
232 return 0;
233
234}
add PAPI preset or native hardware event by name to an EventSet
Create a new empty PAPI EventSet.
Get PAPI library or event set options.
initialize the PAPI library.
Read hardware counters from an event set.
removes a named hardware event from a PAPI event set.
Reset the hardware event counts in an event set.
Start counting hardware events in an event set.
Stop counting hardware events in an event set.
static long long values[NUM_EVENTS]
int tests_quiet(int argc, char **argv)
char * stringify_all_domains(int domains)
char * stringify_granularity(int granularity)
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
long long ** allocate_test_space(int num_tests, int num_events)
void PAPI_NORETURN test_pass(const char *filename)
void PAPI_NORETURN test_skip(const char *file, int line, const char *call, int retval)