PAPI 7.1.0.0
Loading...
Searching...
No Matches
mpifirst.c File Reference
Include dependency graph for mpifirst.c:

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 30 of file mpifirst.c.

31{
32 int retval, num_tests = 5, num_events, tmp;
33 long long **values;
34 int EventSet = PAPI_NULL;
35 int PAPI_event, mask;
36 char event_name[PAPI_MAX_STR_LEN], add_event_str[PAPI_MAX_STR_LEN];
37 int quiet;
38
39 /* Set TESTS_QUIET variable */
40 quiet=tests_quiet( argc, argv );
41
42
43 MPI_Init( argc, argv );
44
46 if ( retval != PAPI_VER_CURRENT )
47 test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
48
49 /* query and set up the right instruction to monitor */
53 } else {
56 }
57
59 if ( retval != PAPI_OK )
60 test_fail( __FILE__, __LINE__, "PAPI_event_code_to_name", retval );
61 sprintf( add_event_str, "PAPI_add_event[%s]", event_name );
62
64
66
68 if ( retval != PAPI_OK )
69 test_fail( __FILE__, __LINE__, "PAPI_start", retval );
70
72
74 if ( retval != PAPI_OK )
75 test_fail( __FILE__, __LINE__, "PAPI_read", retval );
76
78 if ( retval != PAPI_OK )
79 test_fail( __FILE__, __LINE__, "PAPI_reset", retval );
80
82
84 if ( retval != PAPI_OK )
85 test_fail( __FILE__, __LINE__, "PAPI_read", retval );
86
88
90 if ( retval != PAPI_OK )
91 test_fail( __FILE__, __LINE__, "PAPI_read", retval );
92
94
96 if ( retval != PAPI_OK )
97 test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
98
100 if ( retval != PAPI_OK )
101 test_fail( __FILE__, __LINE__, "PAPI_read", retval );
102
104
105 if ( !quiet ) {
106 printf( "Test case 1: Non-overlapping start, stop, read.\n" );
107 printf( "-----------------------------------------------\n" );
108 tmp = PAPI_get_opt( PAPI_DEFDOM, NULL );
109 printf( "Default domain is: %d (%s)\n", tmp,
111 tmp = PAPI_get_opt( PAPI_DEFGRN, NULL );
112 printf( "Default granularity is: %d (%s)\n", tmp,
114 printf( "Using %d iterations of c += a*b\n", NUM_FLOPS );
115 printf
116 ( "-------------------------------------------------------------------------\n" );
117
118 printf( "Test type : \t1\t\t2\t\t3\t\t4\t\t5\n" );
119 sprintf( add_event_str, "%s : ", event_name );
120 printf( TAB5, add_event_str,
121 ( values[0] )[0], ( values[1] )[0], ( values[2] )[0],
122 ( values[3] )[0], ( values[4] )[0] );
123 printf( TAB5, "PAPI_TOT_CYC: ", ( values[0] )[1], ( values[1] )[1],
124 ( values[2] )[1], ( values[3] )[1], ( values[4] )[1] );
125 printf
126 ( "-------------------------------------------------------------------------\n" );
127
128 printf( "Verification:\n" );
129 printf( "Column 1 approximately equals column 2\n" );
130 printf( "Column 3 approximately equals 2 * column 2\n" );
131 printf( "Column 4 approximately equals 3 * column 2\n" );
132 printf( "Column 4 exactly equals column 5\n" );
133 }
134
135 {
136 long long min, max;
137 min = ( long long ) ( values[1][0] * .9 );
138 max = ( long long ) ( values[1][0] * 1.1 );
139
140 if ( values[0][0] > max || values[0][0] < min ||
141 values[2][0] > ( 2 * max )
142 || values[2][0] < ( 2 * min ) || values[3][0] > ( 3 * max )
143 || values[3][0] < ( 3 * min )
144 || values[3][0] != values[4][0] ) {
145 printf( "min: " );
146 printf( LLDFMT, min );
147 printf( "max: " );
148 printf( LLDFMT, max );
149 printf( "1st: " );
150 printf( LLDFMT, values[0][0] );
151 printf( "2nd: " );
152 printf( LLDFMT, values[1][0] );
153 printf( "3rd: " );
154 printf( LLDFMT, values[2][0] );
155 printf( "4th: " );
156 printf( LLDFMT, values[3][0] );
157 printf( "5th: " );
158 printf( LLDFMT, values[4][0] );
159 printf( "\n" );
160 test_fail( __FILE__, __LINE__, event_name, 1 );
161 }
162
163 min = ( long long ) ( values[1][1] * .9 );
164 max = ( long long ) ( values[1][1] * 1.1 );
165 if ( values[0][1] > max || values[0][1] < min ||
166 values[2][1] > ( 2 * max )
167 || values[2][1] < ( 2 * min ) || values[3][1] > ( 3 * max )
168 || values[3][1] < ( 3 * min )
169 || values[3][1] != values[4][1] ) {
170 test_fail( __FILE__, __LINE__, "PAPI_TOT_CYC", 1 );
171 }
172 }
173 test_pass( __FILE__, values, num_tests );
174
175 MPI_Finalize( );
176 exit( 1 );
177}
double tmp
Convert a numeric hardware event code to a name.
Get PAPI library or event set options.
initialize the PAPI library.
Query if PAPI event exists.
Read hardware counters from an 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.
#define min(x, y)
Definition: darwin-common.h:4
int PAPI_event[2]
Definition: data_range.c:30
char event_name[2][PAPI_MAX_STR_LEN]
Definition: data_range.c:29
#define PAPI_VER_CURRENT
Definition: f90papi.h:54
#define PAPI_OK
Definition: f90papi.h:73
#define PAPI_NULL
Definition: f90papi.h:78
#define PAPI_DEFGRN
Definition: f90papi.h:26
#define PAPI_FP_INS
Definition: f90papi.h:366
#define PAPI_MAX_STR_LEN
Definition: f90papi.h:77
#define PAPI_TOT_INS
Definition: f90papi.h:317
#define PAPI_DEFDOM
Definition: f90papi.h:188
static int EventSet
Definition: init_fini.c:8
static long long values[NUM_EVENTS]
Definition: init_fini.c:10
static int num_events
void do_flops(int n)
Definition: multiplex.c:23
int tests_quiet(int argc, char **argv)
Definition: test_utils.c:376
int add_test_events(int *number, int *mask, int allow_derived)
Definition: test_utils.c:152
char * stringify_all_domains(int domains)
Definition: test_utils.c:293
#define TAB5
Definition: papi_test.h:102
#define LLDFMT
Definition: papi_test.h:104
char * stringify_granularity(int granularity)
Definition: test_utils.c:353
void PAPI_NORETURN test_fail(const char *file, int line, const char *call, int retval)
Definition: test_utils.c:491
long long ** allocate_test_space(int num_tests, int num_events)
Definition: test_utils.c:46
#define MASK_FP_INS
Definition: papi_test.h:38
void PAPI_NORETURN test_pass(const char *filename)
Definition: test_utils.c:432
#define MASK_TOT_CYC
Definition: papi_test.h:40
int remove_test_events(int *EventSet, int mask)
Definition: test_utils.c:201
#define MASK_TOT_INS
Definition: papi_test.h:39
int quiet
Definition: rapl_overflow.c:19
long long int long long
Definition: sde_internal.h:85
#define NUM_FLOPS
Definition: sdsc-mpx.c:24
int num_tests
Definition: zero_fork.c:53
int retval
Definition: zero_fork.c:53
Here is the call graph for this function: