home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / benchmar / 1923 < prev    next >
Encoding:
Text File  |  1993-01-11  |  8.0 KB  |  176 lines

  1. Newsgroups: comp.benchmarks
  2. Path: sparky!uunet!cis.ohio-state.edu!sample.eng.ohio-state.edu!purdue!ames!agate!dog.ee.lbl.gov!news!marlin!aburto
  3. From: aburto@nosc.mil (Alfred A. Aburto)
  4. Subject: flops.c Version 2.0 
  5. Message-ID: <1993Jan11.044042.18641@nosc.mil>
  6. Followup-To: comp.benchmarks 
  7. Organization: Naval Ocean Systems Center, San Diego
  8. Distribution: comp.benchmarks 
  9. Date: Mon, 11 Jan 1993 04:40:42 GMT
  10. Expires: Sat, 30 Jan 1993 08:00:00 GMT
  11. Lines: 163
  12.  
  13. -------
  14.    I have finally revised the flops.c program to version 2.0 which
  15.    addresses the concerns brought out over the last year or so (version
  16.    1.2c and earliar versions). Below is a discussion of the new flops.c
  17.    program (flops20.c) and some results for the HP 9000/730 and IBM
  18.    RS/6000 Model 550 systems.
  19.  
  20.    Flops.c is a 'c' program which attempts to estimate your systems
  21.    floating-point 'MFLOPS' rating for the FADD, FSUB, FMUL, and FDIV
  22.    operations based on specific 'instruction mixes' (discussed below).
  23.    The program provides an estimate of PEAK MFLOPS performance by making
  24.    maximal use of register variables with minimal interaction with main
  25.    memory. The execution loops are all small so that they will fit in
  26.    any cache. Flops.c can be used along with Linpack and the Livermore
  27.    kernels (which exercise memory much more extensively) to gain further
  28.    insight into the limits of system performance. The flops.c execution
  29.    modules include various percent weightings of FDIV's (from 0% to 25%
  30.    FDIV's) so that the range of performance can be obtained when using
  31.    FDIV's. FDIV's, being computationally more intensive than FADD's or
  32.    FMUL's, can impact performance considerably on some systems.
  33.    
  34.    Flops.c consists of 8 independent 'modules' which, except for module
  35.    2, conduct numerical integration of various functions. Some of the
  36.    functions (sin(x) and cos(x)) are approximated using a power series
  37.    expansion accurate to 1.0e-14 over the integration interval. Module 2,
  38.    estimates the value of pi based upon the Maclaurin series expansion of
  39.    atan(1). MFLOPS ratings are provided for each module, but the programs
  40.    overall results are summerized by the MFLOPS(1), MFLOPS(2), MFLOPS(3),
  41.    and MFLOPS(4) outputs.
  42.  
  43.    The MFLOPS(1) result is identical to the result provided by all
  44.    previous versions of flops.c (flops12c.c and earliar versions). It is
  45.    based only upon the results from modules 2 and 3. Actually, on faster
  46.    machines, MFLOPS(1) from flops.c V2.0 is expected to provide more
  47.    accurate results since the number of iterations conducted (which is
  48.    reflected in the timing accuracy) is more tightly controlled than in
  49.    previous versions of flops.c.
  50.    
  51.    Two problems surfaced in using MFLOPS(1). First, it was difficult to
  52.    completely 'vectorize' the result due to the recurrence of the 's'
  53.    variable in module 2. This problem is addressed in the MFLOPS(2) result
  54.    which does not use module 2, but maintains nearly the same weighting of
  55.    FDIV's (9.2%) as in MFLOPS(1) (9.6%). For scalar machines the MFLOPS(2)
  56.    results 'should' be similar to the MFLOPS(1) results. However, for
  57.    vector machines the MFLOPS(1) and MFLOPS(2) results may differ
  58.    considerably since the MFLOPS(2) result is expected to be more
  59.    completely vectorizable. The second problem with MFLOPS(1) centers
  60.    around the percentage of FDIV's (9.6%) which was viewed as too high for
  61.    an important class of problems. This concern is addressed in the
  62.    MFLOPS(3) result which does only 3.4% FDIV's, and the MFLOPS(4) result
  63.    where NO FDIV's are conducted at all.
  64.    
  65.    The number of floating-point instructions per iteration (loop) is
  66.    given below for each module executed.
  67.  
  68.    MODULE   FADD   FSUB   FMUL   FDIV   TOTAL  Comment
  69.      1        7      0      6      1      14   7.1%  FDIV's
  70.      2        3      2      1      1       7   difficult to vectorize.
  71.      3        6      2      9      0      17   0.0%  FDIV's
  72.      4        7      0      8      0      15   0.0%  FDIV's
  73.      5       13      0     15      1      29   3.4%  FDIV's
  74.      6       13      0     16      0      29   0.0%  FDIV's
  75.      7        3      3      3      3      12   25.0% FDIV's
  76.      8       13      0     17      0      30   0.0%  FDIV's
  77.    
  78.    A*2+3     21     12     14      5      52   A=5, MFLOPS(1), Same as
  79.         40.4%  23.1%  26.9%  9.6%          previous versions of the
  80.                            flops.c program. Includes
  81.                            only Modules 2 and 3.
  82.    
  83.    1+3+4     58     14     66     14     152   A=4, MFLOPS(2), New output
  84.    +5+6+    38.2%  9.2%   43.4%  9.2%          does not include Module 2,
  85.    A*7                                         but does 9.2% FDIV's.
  86.    
  87.    1+3+4     62      5     74      5     146   A=0, MFLOPS(3), New output
  88.    +5+6+    42.5%  3.4%   50.7%  3.4%          does not include Module 2,
  89.    7+8                                         but does 3.4% FDIV's.
  90.  
  91.    3+4+6     39      2     50      0      91   A=0, MFLOPS(4), New output
  92.    +8       42.9%  2.2%   54.9%  0.0%          does not include Module 2,
  93.                            and does NO FDIV's.
  94.  
  95.    I hope that flops.c V2.0 (flops20.c) proves more useful than earliar
  96.    versions.
  97.  
  98.  
  99. (1) HP 9000/730 flops.c V2.0 Results, cc +OS +O3 -W1-a,archive   
  100.  
  101.    Below are the HP 9000/730 results (provided by Bo Thide'). The minimum
  102.    MFLOPS rating is 15.1 MFLOPS for module 7, which does 25% FDIV's. The
  103.    maximum MFLOPS rating is 37.1 MFLOPS for module 6, which does 0.0%
  104.    FDIV's. FDIV appears to be reasonably efficient on the HP 9000/730,
  105.    as indicated by the overall MFLOPS(n) outputs. 
  106.  
  107.    The 'Runtime' output is the time in microseconds (usec) for one
  108.    iteration (loop) through the module. The MFLOPS rating is obtained by
  109.    dividing the number of floating-point instructions in the loop by the
  110.    Runtime (in microseconds). For example for module 1 below:
  111.    MFLOPS = 14.0 / 0.5978 = 23.42.
  112.  
  113.    The Runtime output has already been adjusted for an estimate of the
  114.    time in microseconds to conduct one empty 'for' loop (NullTime). If
  115.    NullTime is not calculated (that is, NullTime = 0.0), due to compiler
  116.    optimization, it can produce a 3% to 5% lower MFLOPS rating than would
  117.    otherwise be obtained.
  118.  
  119.  
  120.    FLOPS C Program (Double Precision), V2.0 18 Dec 1992
  121.  
  122.    Module     Error        RunTime      MFLOPS
  123.                 (usec)
  124.      1     -4.6896e-13      0.5978     23.4187
  125.      2      2.2160e-13      0.2447     28.6079
  126.      3     -6.9944e-15      0.7412     22.9342
  127.      4     -9.7256e-14      0.6906     21.7195
  128.      5     -1.6542e-14      0.9200     31.5217
  129.      6      4.3632e-14      0.7822     37.0755
  130.      7     -4.9454e-11      0.7972     15.0529
  131.      8      7.2164e-14      0.8275     36.2538
  132.  
  133.    Iterations      =   32000000
  134.    NullTime (usec) =     0.0306
  135.    MFLOPS(1)       =    26.4673  [same as flops12c.c, 9.6% FDIV's]
  136.    MFLOPS(2)       =    21.9633  [9.2% FDIV's]
  137.    MFLOPS(3)       =    27.2566  [3.4% FDIV's]
  138.    MFLOPS(4)       =    29.9188  [0.0% FDIV's]
  139.  
  140.  
  141. (2) IBM RS/6000 Model 550 flops.c V2.0 results, cc -DUNIX -O -Q
  142.  
  143.    The IBM RS/6000 Model 550 flops20.c results are shown below. Here,
  144.    the minimum MFLOPS rating is 7.3 MFLOPS also for module 7 which does
  145.    25.0% FDIV's. The maximum MFLOPS rating is 56.9 MFLOPS (!) also for
  146.    module 6 which does 0.0% FDIV's. While the Model 550 works wonders
  147.    with FADD's and FMULS's its performance falls off rapidly with FDIV's.
  148.  
  149.  
  150.    FLOPS C Program (Double Precision), V2.0 18 Dec 1992
  151.  
  152.    Module     Error        RunTime      MFLOPS
  153.                 (usec)
  154.      1     -4.6896e-13      0.7028     19.9200
  155.      2      2.2160e-13      0.5806     12.0560
  156.      3     -7.0499e-15      0.4372     38.8849
  157.      4     -9.7145e-14      0.4359     34.4086
  158.      5     -1.6542e-14      0.9903     29.2837
  159.      6      4.3632e-14      0.5100     56.8627
  160.      7     -4.9454e-11      1.6456      7.2921
  161.      8      7.2164e-14      0.5572     53.8418
  162.  
  163.    Iterations      =   32000000
  164.    NullTime (usec) =     0.0484
  165.    MFLOPS(1)       =    15.5674  [same as flops12c.c, 9.6% FDIV's]
  166.    MFLOPS(2)       =    15.7370  [9.2% FDIV's]
  167.    MFLOPS(3)       =    27.6568  [3.4% FDIV's]
  168.    MFLOPS(4)       =    46.8997  [0.0% FDIV's]
  169.  
  170. Al Aburto
  171. aburto@marlin.nosc.mil
  172.  
  173. -------
  174.  
  175.  
  176.