|
Packit |
577717 |
#include "fpapi_test.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
program first
|
|
Packit |
577717 |
IMPLICIT integer (p)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
integer event1
|
|
Packit |
577717 |
INTEGER retval
|
|
Packit |
577717 |
INTEGER*8 values(10)
|
|
Packit |
577717 |
INTEGER*8 max, min
|
|
Packit |
577717 |
INTEGER EventSet
|
|
Packit |
577717 |
integer domain, granularity
|
|
Packit |
577717 |
character*(PAPI_MAX_STR_LEN) domainstr, grnstr
|
|
Packit |
577717 |
character*(PAPI_MAX_STR_LEN) name
|
|
Packit |
577717 |
|
|
Packit |
577717 |
Integer last_char, n
|
|
Packit |
577717 |
External last_char
|
|
Packit |
577717 |
integer tests_quiet, get_quiet
|
|
Packit |
577717 |
external get_quiet
|
|
Packit |
577717 |
|
|
Packit |
577717 |
tests_quiet = get_quiet()
|
|
Packit |
577717 |
EventSet = PAPI_NULL
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval = PAPI_VER_CURRENT
|
|
Packit |
577717 |
call PAPIf_library_init(retval)
|
|
Packit |
577717 |
if ( retval.NE.PAPI_VER_CURRENT) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPI_library_init', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_query_event(PAPI_FP_INS, retval)
|
|
Packit |
577717 |
if (retval .NE. PAPI_OK) then
|
|
Packit |
577717 |
event1 = PAPI_TOT_INS
|
|
Packit |
577717 |
else
|
|
Packit |
577717 |
event1 = PAPI_FP_INS
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_create_eventset(EventSet, retval)
|
|
Packit |
577717 |
if ( retval.NE.PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_create_eventset',
|
|
Packit |
577717 |
*retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_add_event( EventSet, event1, retval )
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_add_event',
|
|
Packit |
577717 |
*retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_add_event( EventSet, PAPI_TOT_CYC, retval )
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_add_event',
|
|
Packit |
577717 |
*retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_start(EventSet, retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_start', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call fdo_flops(NUM_FLOPS)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_read(EventSet, values(1), retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_read', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_reset(EventSet, retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_reset', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call fdo_flops(NUM_FLOPS)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_read(EventSet, values(3), retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_read', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call fdo_flops(NUM_FLOPS)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_read(EventSet, values(5), retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_read', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call fdo_flops(NUM_FLOPS)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_stop(EventSet, values(7), retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_stop', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_read(EventSet, values(9), retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_read', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
print *, 'TEST CASE 1: Non-overlapping start, stop, read.'
|
|
Packit |
577717 |
print *, '--------------------------------------------------'//
|
|
Packit |
577717 |
* '--------------------------------'
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_get_domain(EventSet, domain, PAPI_DEFDOM, retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_get_domain', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call stringify_domain(domain, domainstr)
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
write (*,900) 'Default domain is:', domain, domainstr
|
|
Packit |
577717 |
900 format(a20, i3, ' ', a70)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_get_granularity(eventset, granularity, PAPI_DEFGRN,
|
|
Packit |
577717 |
*retval)
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_get_granularity',
|
|
Packit |
577717 |
*retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call stringify_granularity(granularity, grnstr)
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
call PAPIf_event_code_to_name (event1, name, retval)
|
|
Packit |
577717 |
if ( retval.NE.PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
* 'PAPIf_event_code_to_name', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
n=last_char(name)
|
|
Packit |
577717 |
write (*,800) 'Default granularity is:', granularity, grnstr
|
|
Packit |
577717 |
800 format(a25, i3, ' ', a20)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
print *, 'Using', NUM_FLOPS, ' iterations of c += b*c'
|
|
Packit |
577717 |
print *, '-----------------------------------------------'//
|
|
Packit |
577717 |
* '-----------------------------------'
|
|
Packit |
577717 |
|
|
Packit |
577717 |
write (*,100) 'Test type', 1, 2, 3, 4, 5
|
|
Packit |
577717 |
write (*,100) name(1:n), values(1), values(3),
|
|
Packit |
577717 |
* values(5), values(7), values(9)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
write (*,100) 'PAPI_TOT_CYC', values(2), values(4),
|
|
Packit |
577717 |
* values(6), values(8), values(10)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
100 format(a13, ': ', i11, i11, i11, i11, i11)
|
|
Packit |
577717 |
print *, '-----------------------------------------------'//
|
|
Packit |
577717 |
* '-----------------------------------'
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
print *, 'Verification:'
|
|
Packit |
577717 |
print *, 'Column 1 approximately equals column 2'
|
|
Packit |
577717 |
print *, 'Column 3 approximately equals 2 * column 2'
|
|
Packit |
577717 |
print *, 'Column 4 approximately equals 3 * column 2'
|
|
Packit |
577717 |
print *, 'Column 4 exactly equals column 5'
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
min = INT(REAL(values(3))*0.8)
|
|
Packit |
577717 |
max = INT(REAL(values(3))*1.2)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ((values(1).gt.max) .OR. (values(1).lt.min) .OR.
|
|
Packit |
577717 |
*(values(5).gt.(max*2)) .OR. (values(5).lt.(min*2)) .OR.
|
|
Packit |
577717 |
*(values(7).gt.(max*3)) .OR. (values(7).lt.(min*3)) .OR.
|
|
Packit |
577717 |
*(values(7).NE.values(9))) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. name, 1)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
min = INT(REAL(values(4))*0.65)
|
|
Packit |
577717 |
max = INT(REAL(values(4))*1.35)
|
|
Packit |
577717 |
if ((values(2).gt.max) .OR. (values(2).lt.min) .OR.
|
|
Packit |
577717 |
*(values(6).gt.(max*2)) .OR. (values(6).lt.(min*2)) .OR.
|
|
Packit |
577717 |
*(values(8).gt.(max*3)) .OR. (values(8).lt.(min*3)) .OR.
|
|
Packit |
577717 |
*(values(8).NE.values(10))) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPI_TOT_CYC', 1)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call ftests_pass(__FILE__)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
end
|