Blame src/ftests/fmultiplex2.F

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