|
Packit Service |
a1973e |
#include "fpapi_test.h"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
program nineth
|
|
Packit Service |
a1973e |
implicit integer (p)
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
integer es1, es2
|
|
Packit Service |
a1973e |
integer*8 values(10),tvalues(10)
|
|
Packit Service |
a1973e |
integer domain, granularity
|
|
Packit Service |
a1973e |
character*(PAPI_MAX_STR_LEN) domainstr, grnstr
|
|
Packit Service |
a1973e |
integer retval
|
|
Packit Service |
a1973e |
integer clockrate
|
|
Packit Service |
a1973e |
real*8 test_flops, min, max
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
Integer last_char
|
|
Packit Service |
a1973e |
External last_char
|
|
Packit Service |
a1973e |
integer tests_quiet, get_quiet
|
|
Packit Service |
a1973e |
external get_quiet
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
tests_quiet = get_quiet()
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
retval = PAPI_VER_CURRENT
|
|
Packit Service |
a1973e |
call PAPIf_library_init(retval)
|
|
Packit Service |
a1973e |
if ( retval.NE.PAPI_VER_CURRENT) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPI_library_init', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_query_event(PAPI_FP_OPS, retval)
|
|
Packit Service |
a1973e |
if (retval.NE.PAPI_OK) then
|
|
Packit Service |
a1973e |
call ftest_skip(__FILE__, __LINE__, 'PAPI_FP_OPS', PAPI_ENOEVNT)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_create_eventset(es1, retval)
|
|
Packit Service |
a1973e |
if ( retval.NE.PAPI_OK) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_create_eventset',
|
|
Packit Service |
a1973e |
*retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_add_event( es1, PAPI_FP_OPS, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_add_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_add_event( es1, PAPI_TOT_CYC, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_add_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_create_eventset(es2, retval)
|
|
Packit Service |
a1973e |
if ( retval.NE.PAPI_OK) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_create_eventset',
|
|
Packit Service |
a1973e |
*retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_add_event( es2, PAPI_FLOPS, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_add_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_get_clockrate(clockrate)
|
|
Packit Service |
a1973e |
if (tests_quiet .EQ. 0) then
|
|
Packit Service |
a1973e |
print *, 'Clockrate:', clockrate
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_start(es1, retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_start', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call do_flops(NUM_FLOPS)
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_stop(es1, tvalues(1), retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_stop', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_start(es2, retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_start', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call do_flops(NUM_FLOPS)
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_stop(es2, values(1), retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_stop', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_remove_event( es1, PAPI_TOT_CYC, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_remove_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_remove_event( es1, PAPI_FP_OPS, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_remove_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_remove_event( es2, PAPI_FLOPS, retval )
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_remove_event', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
test_flops = tvalues(1)*clockrate*1000000.0
|
|
Packit Service |
a1973e |
if ( tvalues(2) .NE. 0) then
|
|
Packit Service |
a1973e |
test_flops = test_flops / tvalues(2)
|
|
Packit Service |
a1973e |
else
|
|
Packit Service |
a1973e |
test_flops = 0.0
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
if (tests_quiet .EQ. 0) then
|
|
Packit Service |
a1973e |
print *, "Test case 9: start, stop for derived event PAPI_FLOPS"
|
|
Packit Service |
a1973e |
print *, "---------------------------------------------"
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
call PAPIf_get_domain(es1, domain, PAPI_DEFDOM, retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_get_domain', retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call stringify_domain(domain, domainstr)
|
|
Packit Service |
a1973e |
if (tests_quiet .EQ. 0) then
|
|
Packit Service |
a1973e |
write (*,900) "Default domain is:", domain, domainstr
|
|
Packit Service |
a1973e |
900 format(a20, i3, " ", a70)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call PAPIf_get_granularity(es1, granularity, PAPI_DEFGRN,
|
|
Packit Service |
a1973e |
*retval)
|
|
Packit Service |
a1973e |
if ( retval .NE. PAPI_OK ) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPIf_get_granularity',
|
|
Packit Service |
a1973e |
*retval)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call stringify_granularity(granularity, grnstr)
|
|
Packit Service |
a1973e |
if (tests_quiet .EQ. 0) then
|
|
Packit Service |
a1973e |
write (*,800) "Default granularity is:", granularity, grnstr
|
|
Packit Service |
a1973e |
800 format(a25, i3, " ", a20)
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
print *, " Using", NUM_FLOPS, " iterations of c += b*c"
|
|
Packit Service |
a1973e |
print *, "---------------------------------------------"
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
write (*,810) "Test type :", 1, 2
|
|
Packit Service |
a1973e |
write (*,810) "PAPI_FP_OPS :", tvalues(1), 0
|
|
Packit Service |
a1973e |
write (*,810) "PAPI_TOT_CYC:", tvalues(2), 0
|
|
Packit Service |
a1973e |
write (*,810) "PAPI_FLOPS :", 0, values(1)
|
|
Packit Service |
a1973e |
print *, "---------------------------------------------"
|
|
Packit Service |
a1973e |
810 format(a15, i15, i15)
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
print *, "Verification:"
|
|
Packit Service |
a1973e |
print *, "Last number in row 3 approximately equals", test_flops
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
min = values(1) * 0.9
|
|
Packit Service |
a1973e |
max = values(1) * 1.1
|
|
Packit Service |
a1973e |
if ((test_flops.gt.max) .OR. (test_flops.lt.min)) then
|
|
Packit Service |
a1973e |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit Service |
a1973e |
. 'PAPI_FLOPS', 1)
|
|
Packit Service |
a1973e |
end if
|
|
Packit Service |
a1973e |
|
|
Packit Service |
a1973e |
call ftests_pass(__FILE__)
|
|
Packit Service |
a1973e |
end
|