Blame src/ftests/first.F

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