From: cmg@ferrari.cray.com (Charles Grassl)
Subject: Re: % parallelization
Reply-To: cmg@magnet.cray.com
Organization: Cray Research, inc.
Date: 14 Oct 92 18:17:11 CDT

                                                             vvvvvvvvvv
In article <1992Oct14.200645.4577@news.eng.convex.com>, cann@convex.com (David C. Cann) writes:
>> Does anyone know of a simple utility that will report the amount
>> of vectorization there is in Fortran code?   How is it that people
>> say that their code is 98% vectorized?   What tool are they using?
>
>1. I doubt it would be a simple utility... :-)
>2. They lie :-)
>3. Their funding agents
>
>Sorry, I'm in a bad mood, and wanted to share it with the world.

Cheer-up.  

A simple utility for measuring vectorization is the Hardware
Performance Monitor (hpm) on CRAY X-MP, Y-MP and Y-MP C90 systems.  The
performance monitor is implemented in hardware and has zero overhead.

To use hpm, simply execute:

prompt$ hpm a.out

An example of the hpm output is given below.  The vectorization is the
ratio of "Vec F.P. ops" to "F.P. ops".

Charles Grassl
Cray Research, Inc.
Eagan, Minnesota USA



 CP: 20.846s,  Wallclock: 21.374s,  6.1% of 16-CPU Machine
 HWM mem: 5895153, HWM stack: 5380276, Stack overflows: 0
CPU seconds             :      20.84      CP executing     :     5002168609

Million inst/sec (MIPS) :      22.34      Instructions     :      465517654
Avg. clock periods/inst :      10.75
% CP holding issue      :      88.56      CP holding issue :     4429926203
Inst.buffer fetches/sec :       0.01M     Inst.buf. fetches:         145583
Floating ops/sec        :     617.74M     F.P. ops         :    12875206913
Vector Floating ops/sec :     617.74M     Vec F.P. ops     :    12875109372
CPU mem. references/sec :     452.67M     actual refs      :     9434624606
    avg conflict/ref    :       0.09      actual conflicts :      881372371
VEC mem. references/sec :     452.59M     actual refs      :     9432962724
B/T mem. references/sec :       0.04M     actual refs      :         818918
I/O mem. references/sec :       0.07M     actual refs      :        1495176
    avg conflict/ref    :       0.23      actual conflicts :         346367


  Hold issue condition              % of all CPs       actual # of CPs
Waiting on A-regs & access         :   2.97                 148787237
Waiting on S-regs & access         :   0.14                   6860459
Waiting on V-registers             :  39.75                1988534065
Waiting on B/T-registers           :   0.02                    885601
Waiting on Functional Units        :  56.90                2846275416
Waiting on Shared Registers        :   0.00                      1730
Waiting on Memory Ports            :   9.13                 456781635
Waiting on Miscellaneous           :   1.49                  74517084


 (octal) instruction type        inst./CPUsec      actual inst.  % of all insts.
(000-004)Special                :       0.25M          5289505      1.14
(005-017)Branch                 :       0.27M          5545542      1.19
(02x,030-033)A Register         :      12.92M        269319593     57.85
(034-037)B/T Memory             :       0.00M            96357      0.02
(040-043,071-077)S Register     :       0.42M          8734074      1.88
(044-061)Scalar Integer         :       0.04M           763549      0.16
(062-070)Scalar Floating-Point  :       0.00M            97541      0.02
(10x-13x)Scalar Memory          :       0.04M           842964      0.18
(140-177)All Vector             :       8.39M        174828529     37.56


  type of vector operation         ops/CPUsec       actual ops
Vector Logical                  :       0.98M         20370931
Vector Shift/Pop/LZ             :       0.11M          2305382
Vector Integer Add              :       0.31M          6529354
Vector Floating Multiply        :     258.11M       5379621380
Vector Floating Add             :     350.43M       7303724731
Vector Floating Reciprocal      :       9.20M        191763261
Vector Memory Read              :     332.19M       6923641482
Vector Memory Write             :     120.40M       2509321242


Average Vector Length for all Operations : 127.77