/[MITgcm]/MITgcm_contrib/PAPI/papi_events.F
ViewVC logotype

Contents of /MITgcm_contrib/PAPI/papi_events.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Thu Dec 22 19:28:03 2005 UTC (19 years, 6 months ago) by ce107
Branch: MAIN
Added example code to generate and test data.papi.

1 PROGRAM TESTPAPIEVENTS
2 #include <fpapi.h>
3 INTEGER PAPIF_num_counters
4 EXTERNAL PAPIF_num_counters
5 CHARACTER(13) EventName
6 INTEGER nmaxevents
7 PARAMETER (nmaxevents = 18)
8 INTEGER EventCode(nmaxevents)
9 LOGICAL use_counter(nmaxevents)
10 INTEGER*8 values(nmaxevents), values1(nmaxevents),
11 $ values2(nmaxevents)
12 COMMON /papivalues/ values, values1, values2
13 INTEGER neventsmax, nevents, Check, EventSet
14 INTEGER papiunit
15 SAVE EventCode, neventsmax, nevents, EventSet
16 REAL*4 f, df, arg, PI
17 INTEGER i, j, valid_counters
18
19 PI=4.0E0*ATAN(1.0)
20 f=0.0
21
22 Check = PAPI_VER_CURRENT
23 call PAPIF_library_init(Check)
24 if (Check .NE. PAPI_VER_CURRENT) then
25 WRITE(*,*) "PAPI Library Version is out of Date"
26 CALL ABORT
27 endif
28 neventsmax = PAPIF_num_counters(check)
29 if (neventsmax .GT. nmaxevents) then
30 WRITE(*,*) "Fix the nmaxevents in the code to ", neventsmax
31 CALL ABORT
32 endif
33 papiunit=99
34 OPEN(UNIT=papiunit,FILE='data.papi',STATUS='OLD')
35 read(papiunit,*) nevents
36 C reset to reasonable values
37 if (nevents .gt. neventsmax) then
38 nevents = neventsmax
39 WRITE(*,*) "resetting the number of PAPI events to the maximum"
40 endif
41 do i = 1,nevents
42 read(papiunit,*) EventName
43 call PAPIF_event_name_to_code(EventName, EventCode(i), Check)
44 end do
45 close(papiunit)
46 EventSet = PAPI_NULL
47 call PAPIF_create_eventset(EventSet, Check)
48 valid_counters = 0
49 do i = 1,nevents
50 call PAPIF_add_event(EventSet, EventCode(i), Check)
51 if (Check .NE. PAPI_OK) then
52 call PAPIF_event_code_to_name(EventCode(i),EventName,Check)
53 WRITE(*,*) "Error after PAPIF_add_event: ", EventName
54 use_counter(i) = .false.
55 else
56 valid_counters = valid_counters + 1
57 use_counter(i) = .true.
58 endif
59 enddo
60 CCE107 - Start counting events
61 call PAPIF_start(EventSet, Check)
62 CCE107 - Read event counts
63 call PAPIF_read(EventSet, values1, Check)
64
65 do i=1,100000
66 arg = PI/1000.0*i*nevents
67 df = tan(arg)
68 f = f + df
69 WRITE (10,*) f, df, arg
70 enddo
71
72 CCE107 - Read event counts
73 call PAPIF_read(EventSet, values2, Check)
74
75 do i=1,valid_counters
76 values(i) = values2(i) - values1(i)
77 enddo
78
79 WRITE (*,*) "f = ", f
80 j = 1
81 do i = 1,nevents
82 if (use_counter(i)) then
83 call PAPIF_event_code_to_name(EventCode(i),EventName,Check)
84 WRITE(*,*) Eventname, values(j), values1(j), values2(j)
85 j = j + 1
86 endif
87 enddo
88
89 end
90
91
92 BLOCK DATA setpapivalues
93 INTEGER nmaxevents
94 PARAMETER (nmaxevents = 18)
95 INTEGER size
96 PARAMETER (size = 3*nmaxevents)
97 INTEGER*8 values(nmaxevents), values1(nmaxevents),
98 $ values2(nmaxevents)
99 COMMON /papivalues/ values, values1, values2
100 DATA values, values1, values2 /size*0/
101 END

  ViewVC Help
Powered by ViewVC 1.1.22