165 |
PARAMETER ( PRINT = 'PRINT' ) |
PARAMETER ( PRINT = 'PRINT' ) |
166 |
CHARACTER*(*) PRINTALL |
CHARACTER*(*) PRINTALL |
167 |
PARAMETER ( PRINTALL = 'PRINTALL' ) |
PARAMETER ( PRINTALL = 'PRINTALL' ) |
168 |
#ifdef USE_PAPI |
#if defined(USE_PAPI) || defined(USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined (USE_PCL) |
|
#include <fpapi.h> |
|
|
INTEGER PAPIF_num_counters |
|
|
EXTERNAL PAPIF_num_counters |
|
169 |
CHARACTER*(*) INIT |
CHARACTER*(*) INIT |
|
CHARACTER(13) EventName |
|
170 |
PARAMETER ( INIT = 'INIT' ) |
PARAMETER ( INIT = 'INIT' ) |
171 |
|
#ifdef USE_PAPI |
172 |
INTEGER nmaxevents |
INTEGER nmaxevents |
173 |
PARAMETER (nmaxevents = 18) |
PARAMETER (nmaxevents = 18) |
174 |
INTEGER EventCode(nmaxevents) |
INTEGER neventsmax, nevents |
175 |
|
SAVE neventsmax, nevents |
176 |
INTEGER*8 values(nmaxevents, maxTimers , MAX_NO_THREADS), |
INTEGER*8 values(nmaxevents, maxTimers , MAX_NO_THREADS), |
177 |
$ values1(nmaxevents, maxTimers, MAX_NO_THREADS), |
$ values1(nmaxevents, maxTimers, MAX_NO_THREADS), |
178 |
$ values2(nmaxevents, maxTimers, MAX_NO_THREADS) |
$ values2(nmaxevents, maxTimers, MAX_NO_THREADS) |
179 |
COMMON /papivalues/ values, values1, values2 |
COMMON /papivalues/ values, values1, values2 |
180 |
INTEGER neventsmax, nevents, Check, EventSet |
#include <fpapi.h> |
181 |
|
CHARACTER(13) EventName |
182 |
|
INTEGER EventCode(nmaxevents) |
183 |
|
INTEGER Check, EventSet |
184 |
INTEGER papiunit |
INTEGER papiunit |
185 |
SAVE EventCode, neventsmax, nevents, EventSet |
SAVE EventCode, EventSet |
186 |
|
#else |
187 |
|
#if defined(USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined(USE_PCL) |
188 |
|
#include <pclh.f> |
189 |
|
INTEGER nmaxevents |
190 |
|
PARAMETER (nmaxevents = 61) |
191 |
|
INTEGER flags, res, nevents |
192 |
|
INTEGER*8 descr |
193 |
|
CHARACTER*22 pcl_counter_name(0:nmaxevents-1) |
194 |
|
#ifdef USE_PCL |
195 |
|
INTEGER pcl_counter_list(nmaxevents) |
196 |
|
INTEGER*8 i_result(nmaxevents, maxTimers, MAX_NO_THREADS) |
197 |
|
INTEGER*8 i_result1(nmaxevents, maxTimers, MAX_NO_THREADS) |
198 |
|
INTEGER*8 i_result2(nmaxevents, maxTimers, MAX_NO_THREADS) |
199 |
|
REAL*8 fp_result(nmaxevents, maxTimers, MAX_NO_THREADS) |
200 |
|
#else |
201 |
|
INTEGER pcl_counter_list(5), alt_counter_list(5) |
202 |
|
INTEGER*8 i_result(5) |
203 |
|
REAL*8 fp_result(5) |
204 |
|
SAVE alt_counter_list |
205 |
|
DATA alt_counter_list /PCL_MFLOPS, PCL_IPC, PCL_L1DCACHE_MISSRATE, |
206 |
|
$ PCL_L2DCACHE_MISSRATE, PCL_MEM_FP_RATIO/ |
207 |
|
#endif |
208 |
|
COMMON /pclvars/ i_result, descr, fp_result, pcl_counter_list, |
209 |
|
$ flags, nevents |
210 |
|
COMMON /pclnames/ pcl_counter_name |
211 |
|
INTEGER pclunit |
212 |
|
#endif |
213 |
|
#endif |
214 |
#endif |
#endif |
215 |
INTEGER I, J |
INTEGER I, J |
216 |
Real*8 userTime |
Real*8 userTime |
264 |
timerStarts(iTimer,myThreadId) = |
timerStarts(iTimer,myThreadId) = |
265 |
& timerStarts(iTimer,myThreadId)+1 |
& timerStarts(iTimer,myThreadId)+1 |
266 |
#ifdef USE_PAPI |
#ifdef USE_PAPI |
267 |
CCE107 - Read event counts |
CCE107 PAPI - Read event counts |
268 |
call PAPIF_read(EventSet, values1(1,iTimer,myThreadId), Check) |
call PAPIF_read(EventSet, values1(1,iTimer,myThreadId), Check) |
269 |
|
#else |
270 |
|
#ifdef USE_PCL |
271 |
|
CCE107 PCL - Read event counts |
272 |
|
res = PCLread(descr, i_result1(1,iTimer,myThreadId), |
273 |
|
$ fp_result(1,iTimer,myThreadId), nevents) |
274 |
|
#endif |
275 |
#endif |
#endif |
276 |
ENDIF |
ENDIF |
277 |
#ifdef USE_LIBHPM |
#ifdef USE_LIBHPM |
286 |
#ifdef USE_PAPI |
#ifdef USE_PAPI |
287 |
CCE107 PAPI - Read event counts |
CCE107 PAPI - Read event counts |
288 |
call PAPIF_read(EventSet, values2(1,iTimer,myThreadId), Check) |
call PAPIF_read(EventSet, values2(1,iTimer,myThreadId), Check) |
289 |
|
#else |
290 |
|
#ifdef USE_PCL |
291 |
|
CCE107 PCL - Read event counts |
292 |
|
res = PCLread(descr, i_result2(1,iTimer,myThreadId), |
293 |
|
$ fp_result(1,iTimer,myThreadId), nevents) |
294 |
|
#endif |
295 |
#endif |
#endif |
296 |
CALL TIMER_GET_TIME( userTime, systemTime, wallClockTime ) |
CALL TIMER_GET_TIME( userTime, systemTime, wallClockTime ) |
297 |
timerUser(iTimer,myThreadId) = |
timerUser(iTimer,myThreadId) = |
311 |
values(i,iTimer,myThreadId) = values(i,iTimer,myThreadId) + |
values(i,iTimer,myThreadId) = values(i,iTimer,myThreadId) + |
312 |
$ values2(i,iTimer,myThreadId) - values1(i,iTimer,myThreadId) |
$ values2(i,iTimer,myThreadId) - values1(i,iTimer,myThreadId) |
313 |
enddo |
enddo |
314 |
|
#else |
315 |
|
#ifdef USE_PCL |
316 |
|
do i=1,nevents |
317 |
|
i_result(i,iTimer,myThreadId) = i_result(i,iTimer |
318 |
|
$ ,myThreadId) + i_result2(i,iTimer,myThreadId) - |
319 |
|
$ i_result1(i,iTimer,myThreadId) |
320 |
|
enddo |
321 |
|
#endif |
322 |
#endif |
#endif |
323 |
timerStatus(iTimer,myThreadId) = STOPPED |
timerStatus(iTimer,myThreadId) = STOPPED |
324 |
timerStops (iTimer,myThreadId) = |
timerStops (iTimer,myThreadId) = |
325 |
& timerStops (iTimer,myThreadId)+1 |
& timerStops (iTimer,myThreadId)+1 |
326 |
ENDIF |
ENDIF |
327 |
#ifdef USE_PAPI |
#if defined (USE_PAPI) || defined (USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined(USE_PCL) |
328 |
ELSEIF ( tmpAction .EQ. INIT ) THEN |
ELSEIF ( tmpAction .EQ. INIT ) THEN |
329 |
|
#ifdef USE_PAPI |
330 |
CCE107 PAPI - Check PAPI version, find the maximum number of events and |
CCE107 PAPI - Check PAPI version, find the maximum number of events and |
331 |
C initialize the library, read the suggested events and create |
C initialize the library, read the suggested events and create |
332 |
C EventSet, prepare counter for use |
C EventSet, prepare counter for use |
338 |
& SQUEEZE_RIGHT,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
339 |
CALL ABORT |
CALL ABORT |
340 |
endif |
endif |
341 |
neventsmax = PAPIF_num_counters(check) |
call PAPIF_num_counters(neventsmax) |
342 |
if (neventsmax .GT. nmaxevents) then |
if (neventsmax .GT. nmaxevents) then |
343 |
WRITE(msgBuffer,*) "Fix the nmaxevents in the code to ", |
WRITE(msgBuffer,*) "Fix the nmaxevents in the code to ", |
344 |
$ neventsmax |
$ neventsmax |
356 |
WRITE(msgBuffer,*) |
WRITE(msgBuffer,*) |
357 |
$ "resetting the number of PAPI events to the maximum" |
$ "resetting the number of PAPI events to the maximum" |
358 |
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
359 |
& SQUEEZE_RIGHT,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
360 |
endif |
endif |
361 |
do i = 1,nevents |
do i = 1,nevents |
362 |
read(papiunit,*) EventName |
read(papiunit,*) EventName |
363 |
call PAPIF_event_name_to_code(EventName, EventCode(i), Check) |
if ((EventName .eq. 'PAPI_FLOPS') .or. |
364 |
|
$ (EventName .eq. 'PAPI_IPS')) then |
365 |
|
WRITE(msgBuffer,*) "Abort! Rate events are not supported:" |
366 |
|
$ ,EventName |
367 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
368 |
|
& SQUEEZE_RIGHT,myThreadId) |
369 |
|
CALL ABORT |
370 |
|
endif |
371 |
|
|
372 |
|
call PAPIF_event_name_to_code(EventName, EventCode(i), Check) |
373 |
end do |
end do |
374 |
close(papiunit) |
close(papiunit) |
375 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
389 |
enddo |
enddo |
390 |
CCE107 - Start counting events |
CCE107 - Start counting events |
391 |
call PAPIF_start(EventSet, Check) |
call PAPIF_start(EventSet, Check) |
392 |
|
#else |
393 |
|
#if defined(USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined(USE_PCL) |
394 |
|
CCE107 PCL - initialize the library, read the suggested events |
395 |
|
C and check them |
396 |
|
res = PCLinit(descr) |
397 |
|
|
398 |
|
#ifdef USE_PCL |
399 |
|
_BEGIN_MASTER(myThreadId) |
400 |
|
CALL mdsFindUnit (pclunit, myThreadId) |
401 |
|
OPEN(UNIT=pclunit,FILE='data.pcl',STATUS='OLD') |
402 |
|
read(pclunit,*) nevents |
403 |
|
C reset to reasonable values |
404 |
|
if (nevents .gt. nmaxevents) then |
405 |
|
nevents = nmaxevents |
406 |
|
WRITE(msgBuffer,*) |
407 |
|
$ "resetting the number of PCL events to the maximum" |
408 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
409 |
|
& SQUEEZE_RIGHT,myThreadId) |
410 |
|
endif |
411 |
|
do i = 1,nevents |
412 |
|
read(pclunit,*) pcl_counter_list(i) |
413 |
|
if ((pcl_counter_list(i) .ge. PCL_MFLOPS) .or. |
414 |
|
$ (pcl_counter_list(i) .lt. 1)) then |
415 |
|
if ((pcl_counter_list(i) .ge. PCL_MFLOPS) .and. |
416 |
|
$ (pcl_counter_list(i) .le. nmaxevents)) then |
417 |
|
WRITE(msgBuffer,*) |
418 |
|
$ "Abort! Rate events are not relevant:", |
419 |
|
$ pcl_counter_name(pcl_counter_list(i)) |
420 |
|
else |
421 |
|
WRITE(msgBuffer,*) |
422 |
|
$ "Abort! Events are not defined:", |
423 |
|
$ pcl_counter_list(i) |
424 |
|
endif |
425 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
426 |
|
& SQUEEZE_RIGHT,myThreadId) |
427 |
|
CALL ABORT |
428 |
|
endif |
429 |
|
enddo |
430 |
|
close(pclunit) |
431 |
|
_END_MASTER(myThid) |
432 |
|
|
433 |
|
do i = 1,nevents |
434 |
|
CCE107 check to see that event are supported in the order asked |
435 |
|
res = PCLquery(descr, pcl_counter_list, i, flags) |
436 |
|
IF(res .NE. PCL_SUCCESS) THEN |
437 |
|
WRITE(msgBuffer,*) "Abort! No support when adding event: " |
438 |
|
$ , pcl_counter_name(pcl_counter_list(i)) |
439 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
440 |
|
& SQUEEZE_RIGHT,myThreadId) |
441 |
|
CALL ABORT |
442 |
|
endif |
443 |
|
enddo |
444 |
|
#else |
445 |
|
do i = 1,5 |
446 |
|
CCE107 check to see which rate events are supported. |
447 |
|
res = PCLquery(descr, pcl_counter_list, nevents+1, flags) |
448 |
|
if ((res .ne. PCL_SUCCESS) .and. (i .lt. 5)) then |
449 |
|
pcl_counter_list(nevents+1) = alt_counter_list(i+1) |
450 |
|
else |
451 |
|
if (i .lt. 5) then |
452 |
|
nevents = nevents + 1 |
453 |
|
endif |
454 |
|
endif |
455 |
|
enddo |
456 |
|
if (nevents .eq. 0) then |
457 |
|
WRITE(msgBuffer,*) |
458 |
|
$ "No PCL rate events supported: Please recompile!" |
459 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
460 |
|
& SQUEEZE_RIGHT,myThreadId) |
461 |
|
CALL ABORT |
462 |
|
endif |
463 |
|
#endif |
464 |
|
|
465 |
|
CCE107 - Start counting events |
466 |
|
res = PCLstart(descr, pcl_counter_list, nevents, flags) |
467 |
|
IF(res .NE. PCL_SUCCESS) THEN |
468 |
|
WRITE(msgBuffer,*) "PCL counting failed - please recompile!" |
469 |
|
CALL PRINT_MESSAGE(msgBuffer,errorMessageUnit, |
470 |
|
& SQUEEZE_RIGHT,myThreadId) |
471 |
|
CALL ABORT |
472 |
|
ENDIF |
473 |
|
#endif |
474 |
|
#endif |
475 |
#endif |
#endif |
476 |
ELSEIF ( tmpAction .EQ. PRINT ) THEN |
ELSEIF ( tmpAction .EQ. PRINT ) THEN |
477 |
IF ( iTimer .EQ. 0 ) GOTO 905 |
IF ( iTimer .EQ. 0 ) GOTO 905 |
504 |
#ifdef USE_PAPI |
#ifdef USE_PAPI |
505 |
do i = 1,nevents |
do i = 1,nevents |
506 |
call PAPIF_event_code_to_name(EventCode(i), EventName, Check) |
call PAPIF_event_code_to_name(EventCode(i), EventName, Check) |
507 |
if ((EventName .ne. 'PAPI_FLOPS ') .and. |
WRITE(msgBuffer,71) Eventname, |
508 |
$ (EventName .ne. 'PAPI_IPS ')) then |
$ values(i,iTimer,myThreadId)/timerUser(iTimer,myThreadId) |
509 |
WRITE(msgBuffer,71) Eventname, |
$ ,values(i,iTimer,myThreadId)/timerWall(iTimer,myThreadId |
510 |
$ values(i,iTimer,myThreadId)/timerUser(iTimer,myThreadId), |
$ ),1.D0*values(i,iTimer,myThreadId) |
511 |
$ values(i,iTimer,myThreadId)/timerWall(iTimer,myThreadId), |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
512 |
$ 1.D0*values(i,iTimer,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
513 |
else |
enddo |
514 |
WRITE(msgBuffer,72) Eventname,1.D0*values(j,I,myThreadId) |
#else |
515 |
endif |
#ifdef USE_PCL |
516 |
|
do i = 1,nevents |
517 |
|
WRITE(msgBuffer,71) pcl_counter_name(pcl_counter_list(i)), |
518 |
|
$ i_result(i,iTimer,myThreadId)/timerUser(iTimer |
519 |
|
$ ,myThreadId),i_result(i,iTimer,myThreadId) |
520 |
|
$ /timerWall(iTimer,myThreadId),1.D0*i_result(i,iTimer |
521 |
|
$ ,myThreadId) |
522 |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
523 |
& SQUEEZE_RIGHT,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
524 |
enddo |
enddo |
525 |
#endif |
#endif |
526 |
|
#endif |
527 |
ELSEIF ( tmpAction .EQ. PRINTALL ) THEN |
ELSEIF ( tmpAction .EQ. PRINTALL ) THEN |
528 |
DO 10 I = 1, nTimers(myThreadId) |
DO 10 I = 1, nTimers(myThreadId) |
529 |
WRITE(msgBuffer,*) ' Seconds in section "', |
WRITE(msgBuffer,*) ' Seconds in section "', |
554 |
#ifdef USE_PAPI |
#ifdef USE_PAPI |
555 |
do j = 1,nevents |
do j = 1,nevents |
556 |
call PAPIF_event_code_to_name(EventCode(j), EventName, Check) |
call PAPIF_event_code_to_name(EventCode(j), EventName, Check) |
557 |
if ((EventName .ne. 'PAPI_FLOPS ') .and. |
WRITE(msgBuffer,71) Eventname, |
558 |
$ (EventName .ne. 'PAPI_IPS ')) then |
$ values(j,I,myThreadId)/timerUser(I,myThreadId), |
559 |
WRITE(msgBuffer,71) Eventname, |
$ values(j,I,myThreadId)/timerWall(I,myThreadId), |
560 |
$ values(j,I,myThreadId)/timerUser(I,myThreadId), |
$ 1.D0*values(j,I,myThreadId) |
561 |
$ values(j,I,myThreadId)/timerWall(I,myThreadId), |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
562 |
$ 1.D0*values(j,I,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
563 |
else |
enddo |
564 |
WRITE(msgBuffer,72) Eventname,1.D0*values(j,I,myThreadId) |
#else |
565 |
endif |
#ifdef USE_PCL |
566 |
|
do j = 1,nevents |
567 |
|
WRITE(msgBuffer,71) pcl_counter_name(pcl_counter_list(j)), |
568 |
|
$ i_result(j,I,myThreadId)/timerUser(I,myThreadId) |
569 |
|
$ ,i_result(j,I,myThreadId)/timerWall(I,myThreadId),1.D0 |
570 |
|
$ *i_result(j,I,myThreadId) |
571 |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
CALL PRINT_MESSAGE(msgBuffer,standardMessageUnit, |
572 |
& SQUEEZE_RIGHT,myThreadId) |
& SQUEEZE_RIGHT,myThreadId) |
573 |
enddo |
enddo |
574 |
#endif |
#endif |
575 |
|
#endif |
576 |
10 CONTINUE |
10 CONTINUE |
577 |
ELSE |
ELSE |
578 |
GOTO 903 |
GOTO 903 |
758 |
CEH3 that is diagnosed by genmake |
CEH3 that is diagnosed by genmake |
759 |
CEH3 #ifndef HAVE_FDATE |
CEH3 #ifndef HAVE_FDATE |
760 |
Real*8 system_time, user_time, timenow |
Real*8 system_time, user_time, timenow |
761 |
|
external system_time, user_time, timenow |
762 |
CEH3 #else |
CEH3 #else |
763 |
#ifdef TARGET_AIX |
#ifdef TARGET_AIX |
764 |
Real*4 ETIME_ |
Real*4 ETIME_ |
900 |
PARAMETER (maxTimers = 40) |
PARAMETER (maxTimers = 40) |
901 |
INTEGER nmaxevents |
INTEGER nmaxevents |
902 |
PARAMETER (nmaxevents = 18) |
PARAMETER (nmaxevents = 18) |
|
INTEGER EventCode(nmaxevents) |
|
903 |
INTEGER size |
INTEGER size |
904 |
PARAMETER (size = 3*nmaxevents*maxTimers*MAX_NO_THREADS) |
PARAMETER (size = 3*nmaxevents*maxTimers*MAX_NO_THREADS) |
905 |
INTEGER*8 values(nmaxevents, maxTimers , MAX_NO_THREADS), |
INTEGER*8 values(nmaxevents, maxTimers , MAX_NO_THREADS), |
909 |
DATA values, values1, values2 /size*0/ |
DATA values, values1, values2 /size*0/ |
910 |
END |
END |
911 |
#endif |
#endif |
912 |
|
#if defined(USE_PCL_FLOPS_SFP) || defined(USE_PCL_FLOPS) || defined(USE_PCL) |
913 |
|
CCE107 Initialization of common block for PCL event names |
914 |
|
BLOCK DATA setpclnames |
915 |
|
INTEGER nmaxevents |
916 |
|
PARAMETER (nmaxevents = 61) |
917 |
|
CHARACTER*22 pcl_counter_name(0:nmaxevents-1) |
918 |
|
COMMON /pclnames/ pcl_counter_name |
919 |
|
DATA pcl_counter_name(0) /'PCL_L1CACHE_READ'/ |
920 |
|
DATA pcl_counter_name(1) /'PCL_L1CACHE_WRITE'/ |
921 |
|
DATA pcl_counter_name(2) /'PCL_L1CACHE_READWRITE'/ |
922 |
|
DATA pcl_counter_name(3) /'PCL_L1CACHE_HIT'/ |
923 |
|
DATA pcl_counter_name(4) /'PCL_L1CACHE_MISS'/ |
924 |
|
DATA pcl_counter_name(5) /'PCL_L1DCACHE_READ'/ |
925 |
|
DATA pcl_counter_name(6) /'PCL_L1DCACHE_WRITE'/ |
926 |
|
DATA pcl_counter_name(7) /'PCL_L1DCACHE_READWRITE'/ |
927 |
|
DATA pcl_counter_name(8) /'PCL_L1DCACHE_HIT'/ |
928 |
|
DATA pcl_counter_name(9) /'PCL_L1DCACHE_MISS'/ |
929 |
|
DATA pcl_counter_name(10) /'PCL_L1ICACHE_READ'/ |
930 |
|
DATA pcl_counter_name(11) /'PCL_L1ICACHE_WRITE'/ |
931 |
|
DATA pcl_counter_name(12) /'PCL_L1ICACHE_READWRITE'/ |
932 |
|
DATA pcl_counter_name(13) /'PCL_L1ICACHE_HIT'/ |
933 |
|
DATA pcl_counter_name(14) /'PCL_L1ICACHE_MISS'/ |
934 |
|
DATA pcl_counter_name(15) /'PCL_L2CACHE_READ'/ |
935 |
|
DATA pcl_counter_name(16) /'PCL_L2CACHE_WRITE'/ |
936 |
|
DATA pcl_counter_name(17) /'PCL_L2CACHE_READWRITE'/ |
937 |
|
DATA pcl_counter_name(18) /'PCL_L2CACHE_HIT'/ |
938 |
|
DATA pcl_counter_name(19) /'PCL_L2CACHE_MISS'/ |
939 |
|
DATA pcl_counter_name(20) /'PCL_L2DCACHE_READ'/ |
940 |
|
DATA pcl_counter_name(21) /'PCL_L2DCACHE_WRITE'/ |
941 |
|
DATA pcl_counter_name(22) /'PCL_L2DCACHE_READWRITE'/ |
942 |
|
DATA pcl_counter_name(23) /'PCL_L2DCACHE_HIT'/ |
943 |
|
DATA pcl_counter_name(24) /'PCL_L2DCACHE_MISS'/ |
944 |
|
DATA pcl_counter_name(25) /'PCL_L2ICACHE_READ'/ |
945 |
|
DATA pcl_counter_name(26) /'PCL_L2ICACHE_WRITE'/ |
946 |
|
DATA pcl_counter_name(27) /'PCL_L2ICACHE_READWRITE'/ |
947 |
|
DATA pcl_counter_name(28) /'PCL_L2ICACHE_HIT'/ |
948 |
|
DATA pcl_counter_name(29) /'PCL_L2ICACHE_MISS'/ |
949 |
|
DATA pcl_counter_name(30) /'PCL_TLB_HIT'/ |
950 |
|
DATA pcl_counter_name(31) /'PCL_TLB_MISS'/ |
951 |
|
DATA pcl_counter_name(32) /'PCL_ITLB_HIT'/ |
952 |
|
DATA pcl_counter_name(33) /'PCL_ITLB_MISS'/ |
953 |
|
DATA pcl_counter_name(34) /'PCL_DTLB_HIT'/ |
954 |
|
DATA pcl_counter_name(35) /'PCL_DTLB_MISS'/ |
955 |
|
DATA pcl_counter_name(36) /'PCL_CYCLES'/ |
956 |
|
DATA pcl_counter_name(37) /'PCL_ELAPSED_CYCLES'/ |
957 |
|
DATA pcl_counter_name(38) /'PCL_INTEGER_INSTR'/ |
958 |
|
DATA pcl_counter_name(39) /'PCL_FP_INSTR'/ |
959 |
|
DATA pcl_counter_name(40) /'PCL_LOAD_INSTR'/ |
960 |
|
DATA pcl_counter_name(41) /'PCL_STORE_INSTR'/ |
961 |
|
DATA pcl_counter_name(42) /'PCL_LOADSTORE_INSTR'/ |
962 |
|
DATA pcl_counter_name(43) /'PCL_INSTR'/ |
963 |
|
DATA pcl_counter_name(44) /'PCL_JUMP_SUCCESS'/ |
964 |
|
DATA pcl_counter_name(45) /'PCL_JUMP_UNSUCCESS'/ |
965 |
|
DATA pcl_counter_name(46) /'PCL_JUMP'/ |
966 |
|
DATA pcl_counter_name(47) /'PCL_ATOMIC_SUCCESS'/ |
967 |
|
DATA pcl_counter_name(48) /'PCL_ATOMIC_UNSUCCESS'/ |
968 |
|
DATA pcl_counter_name(49) /'PCL_ATOMIC'/ |
969 |
|
DATA pcl_counter_name(50) /'PCL_STALL_INTEGER'/ |
970 |
|
DATA pcl_counter_name(51) /'PCL_STALL_FP'/ |
971 |
|
DATA pcl_counter_name(52) /'PCL_STALL_JUMP'/ |
972 |
|
DATA pcl_counter_name(53) /'PCL_STALL_LOAD'/ |
973 |
|
DATA pcl_counter_name(54) /'PCL_STALL_STORE'/ |
974 |
|
DATA pcl_counter_name(55) /'PCL_STALL'/ |
975 |
|
DATA pcl_counter_name(56) /'PCL_MFLOPS'/ |
976 |
|
DATA pcl_counter_name(57) /'PCL_IPC'/ |
977 |
|
DATA pcl_counter_name(58) /'PCL_L1DCACHE_MISSRATE'/ |
978 |
|
DATA pcl_counter_name(59) /'PCL_L2DCACHE_MISSRATE'/ |
979 |
|
DATA pcl_counter_name(60) /'PCL_MEM_FP_RATIO'/ |
980 |
|
END |
981 |
|
|
982 |
|
|
983 |
|
#ifdef USE_PCL |
984 |
|
CCE107 Initialization of common block for PCL summary performance |
985 |
|
BLOCK DATA setpcls |
986 |
|
#include "EEPARAMS.h" |
987 |
|
INTEGER maxTimers |
988 |
|
PARAMETER (maxTimers = 40) |
989 |
|
INTEGER nmaxevents |
990 |
|
PARAMETER (nmaxevents = 61) |
991 |
|
INTEGER size |
992 |
|
PARAMETER (size = nmaxevents*maxTimers*MAX_NO_THREADS) |
993 |
|
INTEGER PCL_CYCLES, PCL_MODE_USER_SYSTEM |
994 |
|
PARAMETER (PCL_CYCLES=36, PCL_MODE_USER_SYSTEM=3) |
995 |
|
INTEGER pcl_counter_list(nmaxevents) |
996 |
|
INTEGER flags, nevents |
997 |
|
INTEGER*8 i_result(nmaxevents, maxTimers, MAX_NO_THREADS) |
998 |
|
INTEGER*8 i_result1(nmaxevents, maxTimers, MAX_NO_THREADS) |
999 |
|
INTEGER*8 i_result2(nmaxevents, maxTimers, MAX_NO_THREADS) |
1000 |
|
INTEGER*8 descr |
1001 |
|
REAL*8 fp_result(nmaxevents, maxTimers, MAX_NO_THREADS) |
1002 |
|
COMMON /pclvars/ i_result, descr, fp_result, pcl_counter_list, |
1003 |
|
$ flags, nevents |
1004 |
|
DATA fp_result /size*0.0D0/ |
1005 |
|
DATA i_result /size*0/ |
1006 |
|
DATA i_result1 /size*0/ |
1007 |
|
DATA i_result2 /size*0/ |
1008 |
|
DATA descr /0/ |
1009 |
|
DATA nevents /nmaxevents/ |
1010 |
|
DATA pcl_counter_list /nmaxevents*PCL_CYCLES/ |
1011 |
|
DATA flags /PCL_MODE_USER_SYSTEM/ |
1012 |
|
END |
1013 |
|
#else |
1014 |
|
CCE107 Initialization of common block for PCL summary performance |
1015 |
|
BLOCK DATA setpcls |
1016 |
|
INTEGER PCL_MFLOPS, PCL_IPC, PCL_L1DCACHE_MISSRATE, |
1017 |
|
$ PCL_L2DCACHE_MISSRATE, PCL_MEM_FP_RATIO |
1018 |
|
PARAMETER (PCL_MFLOPS=56, PCL_IPC=57, PCL_L1DCACHE_MISSRATE=58, |
1019 |
|
$ PCL_L2DCACHE_MISSRATE=59, PCL_MEM_FP_RATIO=60) |
1020 |
|
INTEGER PCL_MODE_USER_SYSTEM |
1021 |
|
PARAMETER (PCL_MODE_USER_SYSTEM=3) |
1022 |
|
INTEGER pcl_counter_list(5), flags, nevents |
1023 |
|
INTEGER*8 i_result(5), descr |
1024 |
|
REAL*8 fp_result(5) |
1025 |
|
COMMON /pclvars/ i_result, descr, fp_result, pcl_counter_list, |
1026 |
|
$ flags, nevents |
1027 |
|
DATA fp_result /5*0.0D0/ |
1028 |
|
DATA i_result /5*0/ |
1029 |
|
DATA descr /0/ |
1030 |
|
DATA nevents /0/ |
1031 |
|
DATA pcl_counter_list /PCL_MFLOPS, PCL_IPC, PCL_L1DCACHE_MISSRATE, |
1032 |
|
$ PCL_L2DCACHE_MISSRATE, PCL_MEM_FP_RATIO/ |
1033 |
|
DATA flags /PCL_MODE_USER_SYSTEM/ |
1034 |
|
END |
1035 |
|
#endif |
1036 |
|
#endif |