Blame src/ftests/accum.F

Packit 577717
#include "fpapi_test.h"
Packit 577717
Packit 577717
      program accum
Packit 577717
      implicit integer (p)
Packit 577717
Packit 577717
      integer es1, number, i
Packit 577717
      integer*8 values(10)
Packit 577717
      integer events(2)
Packit 577717
      character*PAPI_MAX_STR_LEN name
Packit 577717
      integer retval
Packit 577717
      integer tests_quiet, get_quiet
Packit 577717
      external get_quiet
Packit 577717
      integer last_char, n
Packit 577717
      external last_char
Packit 577717
Packit 577717
      tests_quiet = get_quiet()
Packit 577717
      es1 = 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_create_eventset(es1, 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
      number=2
Packit 577717
Packit 577717
      call PAPIf_query_event(PAPI_FP_INS, retval)
Packit 577717
      if (retval .NE. PAPI_OK) then
Packit 577717
        events(1) = PAPI_TOT_INS 
Packit 577717
      else
Packit 577717
        events(1) = PAPI_FP_INS 
Packit 577717
      end if
Packit 577717
Packit 577717
      events(2) = PAPI_TOT_CYC
Packit 577717
      call PAPIf_add_events( es1, events, number, retval )
Packit 577717
      if ( retval.LT.PAPI_OK) then
Packit 577717
        call ftest_fail(__FILE__, __LINE__,
Packit 577717
     .     'PAPIf_add_events', retval)
Packit 577717
      end if
Packit 577717
Packit 577717
      do i=1,10
Packit 577717
        values(i)=0
Packit 577717
      end do
Packit 577717
Packit 577717
      call PAPIf_start(es1, 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_accum(es1, values(7), retval)
Packit 577717
      if ( retval .NE. PAPI_OK ) then
Packit 577717
        call ftest_fail(__FILE__, __LINE__,
Packit 577717
     .     'PAPIf_accum', retval)
Packit 577717
      end if
Packit 577717
Packit 577717
      values(1)=values(7)
Packit 577717
      values(2)=values(8)
Packit 577717
      call PAPIf_stop(es1, values(3), 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_start(es1, 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
      call PAPIf_accum(es1, values(7), retval)
Packit 577717
      if ( retval .NE. PAPI_OK ) then
Packit 577717
        call ftest_fail(__FILE__, __LINE__,
Packit 577717
     .     'PAPIf_accum', retval)
Packit 577717
      end if
Packit 577717
Packit 577717
      values(5)=values(7)
Packit 577717
      values(6)=values(8)
Packit 577717
Packit 577717
      call fdo_flops(NUM_FLOPS)
Packit 577717
Packit 577717
      call PAPIf_accum(es1, values(7), retval)
Packit 577717
      if ( retval .NE. PAPI_OK ) then
Packit 577717
        call ftest_fail(__FILE__, __LINE__,
Packit 577717
     .     'PAPIf_accum', retval)
Packit 577717
      end if
Packit 577717
Packit 577717
      call fdo_flops(NUM_FLOPS)      
Packit 577717
Packit 577717
      call PAPIf_stop(es1, values(9), 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_remove_events( es1, events, number, retval )
Packit 577717
      if ( retval .NE. PAPI_OK ) then
Packit 577717
        call ftest_fail(__FILE__, __LINE__,
Packit 577717
     .     'PAPIf_remove_events', retval)
Packit 577717
      end if
Packit 577717
Packit 577717
      if (tests_quiet .EQ. 0) then
Packit 577717
        call PAPIf_event_code_to_name (events(1), 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
        print *, "Test case accum: Test of PAPI_add_events, ",
Packit 577717
     *  "PAPI_remove_events, PAPI_accum"
Packit 577717
        print *, "------------------------------------------",
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
        write (*,100) "PAPI_TOT_CYC", values(2), values(4),
Packit 577717
     *    values(6), values(8), values(10)
Packit 577717
        print *, "------------------------------------------",
Packit 577717
     *    "------------------------"
Packit 577717
 100    format(a15, ":", i10, i10, i10, i10, i10)
Packit 577717
        print *
Packit 577717
        print *, "Verification:"
Packit 577717
        print *, "Column 2 approximately equals to 0;"
Packit 577717
        print *, "Column 3 approximately equals 2 * Column 1;"
Packit 577717
        print *, "Column 4 approximately equals 3 * Column 1;"
Packit 577717
        print *, "Column 5 approximately equals Column 1."
Packit 577717
      end if
Packit 577717
 
Packit 577717
      call ftests_pass(__FILE__)
Packit 577717
      end