|
Packit |
577717 |
#include "fpapi_test.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define MAX_TO_ADD 5
|
|
Packit |
577717 |
|
|
Packit |
577717 |
program multiplex2
|
|
Packit |
577717 |
IMPLICIT integer (p)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
integer retval
|
|
Packit |
577717 |
integer tests_quiet, get_quiet
|
|
Packit |
577717 |
external get_quiet
|
|
Packit |
577717 |
|
|
Packit |
577717 |
tests_quiet = get_quiet()
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
write (*, 100) NUM_ITERS
|
|
Packit |
577717 |
100 FORMAT ("multiplex2: Using ", I3, " iterations")
|
|
Packit |
577717 |
write (*,*) "case1: Does PAPI_multiplex_init() handle",
|
|
Packit |
577717 |
* " lots of events?"
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
call case1(tests_quiet, retval)
|
|
Packit |
577717 |
call ftests_pass(__FILE__)
|
|
Packit |
577717 |
end
|
|
Packit |
577717 |
|
|
Packit |
577717 |
subroutine init_papi()
|
|
Packit |
577717 |
IMPLICIT integer (p)
|
|
Packit |
577717 |
integer retval
|
|
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 |
end
|
|
Packit |
577717 |
|
|
Packit |
577717 |
subroutine case1(tests_quiet, ret)
|
|
Packit |
577717 |
IMPLICIT integer (p)
|
|
Packit |
577717 |
integer tests_quiet
|
|
Packit |
577717 |
integer retval
|
|
Packit |
577717 |
integer i, ret, fd
|
|
Packit |
577717 |
integer EventCode
|
|
Packit |
577717 |
character*(PAPI_MAX_STR_LEN) event_name, event_descr,
|
|
Packit |
577717 |
* event_label, event_note
|
|
Packit |
577717 |
integer avail_flag, flags, check
|
|
Packit |
577717 |
integer EventSet,mask1
|
|
Packit |
577717 |
integer*8 values(MAX_TO_ADD*2)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
EventSet = PAPI_NULL
|
|
Packit |
577717 |
call init_papi()
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call init_multiplex()
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_create_eventset(EventSet, retval)
|
|
Packit |
577717 |
if ( retval.NE.PAPI_OK) then
|
|
Packit |
577717 |
|
|
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_assign_eventset_component(EventSet, 0, retval)
|
|
Packit |
577717 |
if ( retval.NE.PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
& 'PAPIf_assign_eventset_component', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_set_multiplex(EventSet, retval)
|
|
Packit |
577717 |
if ( retval.EQ.PAPI_ENOSUPP) then
|
|
Packit |
577717 |
call ftest_skip(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'Multiplex not implemented', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
if ( retval.NE.PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'papif_set_multiplex', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
print *, "Checking for available events..."
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
EventCode = 0
|
|
Packit |
577717 |
i = 1
|
|
Packit |
577717 |
do while (i .LE. MAX_TO_ADD)
|
|
Packit |
577717 |
avail_flag=0
|
|
Packit |
577717 |
do while ((avail_flag.EQ.0).AND.
|
|
Packit |
577717 |
* (EventCode.LT.PAPI_MAX_PRESET_EVENTS))
|
|
Packit |
577717 |
mask1 = ((PAPI_L1_DCM)+EventCode)
|
|
Packit |
577717 |
if (mask1.NE.PAPI_TOT_CYC) then
|
|
Packit |
577717 |
call papif_get_event_info(mask1,
|
|
Packit |
577717 |
* event_name, event_descr, event_label, avail_flag,
|
|
Packit |
577717 |
* event_note, flags, check)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
EventCode = EventCode + 1
|
|
Packit |
577717 |
end do
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( EventCode.EQ.PAPI_MAX_PRESET_EVENTS .AND.
|
|
Packit |
577717 |
* i .LT. MAX_TO_ADD ) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
* 'PAPIf_add_event', retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
write (*, 200) " Adding Event ", event_name
|
|
Packit |
577717 |
200 FORMAT(A22, A12)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
mask1 = ((PAPI_L1_DCM)+EventCode)
|
|
Packit |
577717 |
mask1 = mask1 - 1
|
|
Packit |
577717 |
call PAPIf_add_event( EventSet, mask1, retval )
|
|
Packit |
577717 |
if ( retval .NE. PAPI_OK .AND. retval .NE. PAPI_ECNFLCT) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
* 'PAPIf_add_event', retval)
|
|
Packit |
577717 |
stop
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (tests_quiet .EQ. 0) then
|
|
Packit |
577717 |
if (retval .EQ. PAPI_OK) then
|
|
Packit |
577717 |
write (*, 200) " Added Event ", event_name
|
|
Packit |
577717 |
else
|
|
Packit |
577717 |
write (*, 200) " Could not add Event ", event_name
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (retval .EQ. PAPI_OK) then
|
|
Packit |
577717 |
i = i + 1
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
end do
|
|
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 |
fd = 1
|
|
Packit |
577717 |
call do_stuff()
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_stop(EventSet, values(1), 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_cleanup_eventset(EventSet, retval)
|
|
Packit |
577717 |
if (retval .NE. PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_cleanup_eventset',
|
|
Packit |
577717 |
* retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
call PAPIf_destroy_eventset(EventSet, retval)
|
|
Packit |
577717 |
if (retval .NE. PAPI_OK) then
|
|
Packit |
577717 |
call ftest_fail(__FILE__, __LINE__,
|
|
Packit |
577717 |
. 'PAPIf_destroy_eventset',
|
|
Packit |
577717 |
* retval)
|
|
Packit |
577717 |
end if
|
|
Packit |
577717 |
|
|
Packit |
577717 |
ret = SUCCESS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
end
|
|
Packit |
577717 |
|