Title                  :BENCHMARKS
Keywords               :COMPUTERS
Computer               :DEC,IBM,APPLE,ATT,CDC,HP,PRIME,GOULD,SUN,COMMODORE,TI
Operating System       :Various as appropriate to above systems
Programming Language   :Fortran , BASIC, Pascal, Assembler
Hardware Requirements  :None
Author(s)              :Earl J. Kirkland
Correspondence Address :School of Applied and Engineering  Physics,
                       :Cornell University Ithaca, N.Y. 14853
Abstract:
              Benchmarks on various computer systems have been run in order
to gauge the performance of various CPU's to different types of problems. The
performance of 11 different computer systems is described and the source code is
documented in order that users may repeat comparisons on systems not included in
this study.  The comparisons include raw computing speed (Integer and Floating
Point), memory dependent computations, and FFT computations.
------------------------------------------------------------------------------
Title                  :BENCHMARKS
Keywords               :COMPUTERS
Computer               :DEC,IBM,APPLE,ATT,CDC,HP,PRIME,GOULD,SUN,COMMODORE,TI
Operating System       :Various as appropriate to above systems
Programming Language   :Fortran , BASIC, Pascal, Assembler
Hardware Requirements  :None
Author(s)              :Earl J. Kirkland
Correspondence Address :School of Applied and Engineering  Physics,
                       :Cornell University Ithaca, N.Y. 14853
Documentation:











                        BENCHMARKS ON VARIOUS COMPUTERS


                         Raw Floating Point Arithmetic

                            Raw Integer Arithmetic

                     Floating Point with Large Data Space

                              1D Complex FFT Time




                              by Earl J. Kirkland

                   School of Applied and Engineering Physics

                              Cornell University

                              Ithaca, N. Y. 14853


                                   4-Sept-87


                                                                          Page 2



     1.Introduction


     The time required to execute a program on a given computer is

obviously highly dependent on the type of problem and the type of computer

used.  Therefore to adequately gauge the performance of a given computer

it is necessary to specify the type of problem.  For this reason several

different types of programs have been run on different computers to test

their relative performance.  These programs have been chosen to be

representative of the different types of things done locally.  The widely

quoted "Whetstone" benchmark (H.J.Curnow, B.A.Wichmann, "A Synthetic

Benchmark", The Computer Journal, Vol.  19, no.  1, 1975 p.43-49) is

perhaps a better overall number crunching (floating point) benchmark

because it is a statistically weighted average of many types of program

constructs, but it is very long and too complicated to type in over and

over.  For comparison, a PDP 11/34 with floating point hardware running

RSX (V4.0) and F77 (V5.0) is rated at 167 (204 with no error trace back)

thousand whetstone instructions per sec (kWIPS), a VAX 750 is rated at 780

thousand WIPS' (with floating point accelerator), an IBM-PC/AT or XT (with

floating point chips) is rated at around 70 kWIPS, in double precision

(see 'A Performance Analysis of MC68020-Based Systems', by D.MacGregor and

J.Rubinstein, IEEE Micro, Dec.  1985 pgs.50-70).  The rival Dhrystone

benchmark (R.P.Weicker, "Dhrystone:  A Synthetic Systems Programming

Benchmark", Comm.  ACM Vol.  27 No.  10, 1984, p.1013-1030) is a

non-floating point benchmark designed for structure program languages,

such as C, Pascal or Ada.  Recently the LINPACK benchmarks (J.Dongara,

Computer Architecture News, Vol.  11, No.  5, Dec.  1983, pgs.22-27, and

Vol.  13 No.  1, March, 1985 pgs.3-11) have been extensively applied to

supercomputers to measure performance in FLOPS.  The LINPACK benchmark is

very similer to the Gauss elimination benchmark (Dongara used a different

form of Gauss elimination).  The FLOP rating found here are similar to

Dongara's.  This benchmark as well as the pitfalls of benchmarking in

general has been recently discussed by Dongara et al.  (J.Dongara,

J.L.Martin, J.Worlton, 'Computer Benchmarking:  Paths and Pitfalls', IEEE

Spectrum, July, 1987, pg.38-42).


     Note that the times shown below are actual CPU execution times and

not subjective times.  On a system with many users the subjective

execution time may appear to be much longer than the times tabulated

below.  Note also that although some times are given to many significant

figures this does not mean that the time is that accurate.  Times are

always measured in 'clock ticks' which limits the (smallest) resolution

and there is some variation with system load on multiuser systems due to

program disk swapping.


     A total of five different programs were used.  The source listings

for all of these are available through the EMMPDL under the contribution

title BENCHMARKS and are referred through the remainder of this text as

APPENDIX I - V.  There are two short programs that require very little

memory but concentrate on raw computing speed.  One uses integer only

arithmetic (Prime number sieve) and the other uses mainly floating point

arithmetic.  There are two programs that use large amounts of memory and

floating point arithmetic.  One is a two dimensional fast Fourier

transform (fairly well behaved memory access ordering) and the other is a

matrix diagonalization (in two dimensions) using Gauss reduction (more

disordered memory access).  One dimensional complex FFT times are also

recorded for comparison to advertised array processor times.


     The various people that have kindly contributed are;

Rich Cochran(RC), Doug Davenport(DD), John Denker(JSD), Jeff Goldner(JG),

Joe Hornack(JH), Michael S. Isaacson(MSI), Carl Lagoze(CL),

Bruce Land(BL), Tim Larkin(TM), Kate MacGregor(KM), Dave McQueeney(DM),

Doug Neuhauser(DN), Dave Olsen(DO), Keith S. Pickens(KSP),

Dave Rabson(DR), Bruce Thompson(BT), and Paul Tjossem(PJT),

Doug Young(DY).


     2.Raw Floating Point Speed


     A short floating point intensive program has been run on various

computers.  The execution times and resulting answers are tabulated below.

The program consists of a simple one line calculation imbedded in simple

GOTO loops, three levels deep.  This test is by no means definitive.  Many

other things such as memory address space, disk speed, etc.  are also

important.  This is however useful for 'compute bound' number crunching

comparisons.


     The FORTRAN version of the program is shown below:


                            F=83.

                            A=0.

                            B=F

                       10   C=F

                       20   D=F

                       30   A=A+B*C/D-(B+1.)*(C+1.)/(D+1.)

                            D=D-1.

                            IF(D.NE.1.) GO TO 30

                            C=C-1.

                            IF(C.NE.1.) GO TO 20

                            B=B-1.

                            IF(B.NE.1.) GO TO 10

                            WRITE(5,40) A

                       40   FORMAT(E21.7)

                            STOP

                            END

(Note that the .NE.  may be changed to .GT.  if there is a problem).


     This program was originally written by Rick Cochran of the Materials

Science Center (Cornell Univ.).  Various people have run this program on

their computer and kindly provided most of the data given below.


     Similarly, this program in BASIC is:


                         10 F=83.

                         20 A=0.

                         30 B=F

                         40 C=F

                         50 D=F

                         60 A=A+B*C/D-(B+1.)*(C+1.)/(D+1.)

                         70 D=D-1.

                         80 IF D <> 1. GOTO 60

                         90 C=C-1.

                         100 IF C <> 1. GOTO 50

                         110 B=B-1.

                         120 IF B <> 1. GOTO 40

                         130 PRINT A

                         140 STOP

                         150 END


     The execution time of this program on different computer varies

widely.  To prevent abnormally long run times this program may be scaled

by changing F (F=83.  takes longer than F=41.).


     The total number of floating point operations (FLOPs) and the total

number of floating point compares (FLC's) in this program are;


                    FLOP's = 10*(F-1)**3 + (F-1)**2 + (F-1)

                     

                    FLC's  =    (F-1)**3 + (F-1)**2 + (F-1)

                     

                     

                           F  #   FLOP's  #    FLCs

                         -----+-----------+---------

                           83 # 5,520,486 #  558,174

                           41 #   641,640 #   65,640

                            8 #     3,486 #      399

                     


     This yields a value of 0.0232 MegFLOP/sec for an IBM PC/XT (Fortran

with 8087), 0.305 MFLOPS for a PRIME-750 (FTN 19.3 and PRIMOS 19.4.2), and

0.445 MFLOPS for a VAX-750 (VMS 4.2, FORT 4.3).  The number of floating

point compare operations have been ignored for this calculation of FLOPS.

NOTE that use of this programs to calculate a rating in FLOP/sec for a

given computer yields unrealistically high values, more realistic values

are given in the Gauss elimination benchmark.


     3.Floating Point Execution Times


     The tables below list the raw execution times for the above benchmark

program.  All of the computers listed below do single precision floating

point with 32 bits, except the CDC 7600 which uses 64 bits in single

precision (according to RC).  Hence the CDC 7600 answer will have

negligible round-off error and should be used as a reference answer for

comparison.  All other machines should get this answer, 0.3896022 E7 (and

most do) when the calculation is done in double precission.  The times

below are in units of hr:min:sec.


   F=83.  Single Precision  (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  TIME   #   ANSWER   # COMMENTS

----------#-----------#-----------#---------#------------#----------

 Apple    #  Mac-os   # Absoft    #         #            #EJK 2/85

Macintosh #Finder 2.0 # F77 V2.0  #   9:29  #0.3871070 E7#integer*4

          #           #           #         #            #

          #           #Microsoft  #         #            #

          #           #BASIC 2.0B # 1:43:30 #0.3896050 E7#EJK 4/85

          #           #BASIC 2.0D # 3:07:31 #0.4241720 E7#EJK 4/85

          #           #           #         #            #

          #           # Forth 2.1 # 5:16:10 #0.3896022 E7# BL 4/85

          #           #           #         #            # 80 bit

          #           #           #         #            #

          #           #MacPascal  # 3:33:07 #0.3895725 E7# KM 4/85

          #           #Lisa Pascal# 1:38:23 #0.3895725 E7# DY 4/85

          #           #           #         #            #

          # Mac       # Microsoft #         #            #

          # Finder 4.1# F77 V 2.2 #    9:32 #0.3871066 E7# EJK 1/87

          #           #           #         #            #

          #  Mac      #Microsoft  #         #            #

          # Finder 5.3#BASIC 3.0B # 1:12:08 #            #EJK 1/87

          #           #           #         #            #

          #           # Microsoft #         #            #

          #           # Compiled  #    9:43 #0.3871066 E7# BL 12/86

          #           # BASIC     #         #            #

          #           #           #         #            #

          # Manx      #Aztec C    #         #            #

          # UNIX shell# V1.06C    # 1:39:52 #0.3895722 E7# DJD 4/85

----------#-----------#-----------#---------#------------#----------

  CDC     #           #           #         #            # RC

 7600     #           # FORTRAN   #   :01   #0.3896022 E7# 11/81

----------#-----------#-----------#---------#------------#----------

  ATT     #   UNIX    #           #         #            # DO

 3B2/300  # System V  # FORTRAN   # 4:51:26 #            # 6/18/86

----------#-----------#-----------#---------#------------#----------

          #           # IEEE  F77 #         #            #

 CRDS     # UNOS      # no FPP    #    6:28 #0.3897858 E7#  JG

68000     #           # Sky FPP   #    2:03 #0.3897858 E7# 8/84

----------#-----------#-----------#---------#------------#----------

  DEC     #  RT-11    # opt.      #         #            # BL _& JG

 LSI 11/2 #  (FIS)    # FORTRAN   # 12:18   #            # 11/81

----------#-----------#-----------#---------#------------#----------

  DEC     #  DOS V 9.0#           #         #            #

PDP 11/20 #  EAE      # FORTRAN   # 30:46   #0.3897858 E7# EJK

          #  FPS      #           # 10:58   #0.3802640 E7# 11/81

----------#-----------#-----------#---------#------------#----------

  DEC     #  RT-11    # threaded  #         #            # BL _& JG

LSI 11/23 #  (FPU)    # FORTRAN   # 10:03   #            # 11/81

 (FPU)    #           #           #         #            #

          # RSX-11M   #FORTRAN 77 #         #            # EJK

          # V4.0B     #  V5.0     #  7:34   #0.3897859 E7# 3/11/85

          #           #ASSEMBLER  #  7:20   #0.3895876 E7#MSCmachine

----------#-----------#-----------#---------#------------#----------

  DEC     # RSX 11M   # FORTRAN   #         #            # EJK

PDP 11/34A#  V3.2     # IV Plus   #  1:55   #0.3897859 E7# 11/81

 with FPP #           #           #         #            #

          #           #           #         #            #

          # RSX 11M   # FORTRAN   #         #            # EJK

          #  V 4.0B   #   77      #  1:55   #0.3897859 E7# 9/84

          #           # V4.1, 5.0 #         #            #

          #           #           #         #            #

          # RSX 11M   # ASSEMBLER #         #            # EJK

          #  V 4.0B   #           #  1:48   #0.3895876 E7# 9/84

          #           #           #         #            #

----------#-----------#-----------#---------#------------#----------

  DEC     #           #           #         #            #

PDP 11/34A# RT-11     # FORTRAN   #  3:00   #            #  JH

w/cache,FP#           #  IV       #         #            # 11/83

----------#-----------#-----------#---------#------------#----------

  DEC     # RSX 11M   # FORTRAN   #         #            #  JH

 PDP 11/44#   V 4.0   # 77 (V 5.0)#  1:27   #            # 11/83

----------#-----------#-----------#---------#------------#----------

  DEC     #RT-11 V5.0 # FORTRAN   #         #            #  JG

LSI 11/73 #           #   IV      #  3:23   #            # 4/84

          #           #           #         #            #

          #RT-11v5.1c # FORTRAN   #         #            #  JG 2/85

          #           # IV v2.62  #  3:09   #            # /nolines

(15Mhz    #           # F77 V5.0  #  1:42   #            # /NOLINES

   J11)   #           # macro     #  1:39   #            # as a fcn.

          #           #           #         # same as    # JG

          #RT-11v5.1c # F77 v5.0  #   :31   # VAX750     # 10/17/85

          #           #           #         #            # w/FPJ11

          #           #           #         #            # float pt.

----------#-----------#-----------#---------#------------#----------

  DEC     #  VENIX    #  RATFOR,  #         #            #  JG

LSI 11/73 #           #    F77    #  3:48   #0.3895876 E7# 4/84

          #  VENIX    #  FORTRAN  #         #            #

(15Mhz    #           #    77     #  3:47   #            #

   J11)   #  VENIX    #    C      #         #            #

          #           #not optim. #  3:38   #            #

          #  VENIX    #    C      #         #            #

          #           # optimized #  3:35   #            #

          #  RT-11    # ASSEMBLER #  1:42   # Same as    # 10/84

          #           #           #         # PDP 11/34A #

----------#-----------#-----------#---------#------------#----------

  DEC     #  BSD      #           #         #            #  JSD

 VAX-750  #  UNIX     #   F77     #   0:46  #0.3896022 E7# 9/84

          #           #           #         #            #

 w/FPA    #  VMS      #   F77     #   0:22  #0.3897859 E7# RC

          #  VMS 4.0  # F77 v4.2  #   0:31  #0.3897859 E7# /NOPT

          #  VMS 4.0  # F77 v4.2  #   0:15.3#0.3897859 E7# 9/85 EJK

          #  VMS 4.2  # F77 v4.3  #   0:22  #0.3896022 E7# REAL*8

          #  VMS 4.2  # F77 v4.3  #   0:12.4#0.3897859 E7# 1/86 EJK

          #           #           #         #            #

          #  VMS 4.3  # EPASCAL   #   0:17.5#            # EJK

          #           # F77 V4.4  #   0:12.4#            # 4/21/86

----------#-----------#-----------#---------#------------#----------

  DEC     # micro VMS #           #         #            # JG

microVAX  #  v4.1M    # F77 v4.2  # 0:13.34 #  "     "   # 10/17/85

  II      #           #           #         #            #

          #  ELN v2.1 # EPASCAL   # 0:21.68 #            # EJK

          #           #VMS-F77 4.4# 0:13.26 #            # 4/21/86

----------#-----------#-----------#---------#------------#----------

  DEC     # TOPS 20   #           #         #            #  JSD

 2060     # 5(4757)-2 # FORTRAN   # 0:17.72 #0.3896025 E7# 9/84

----------#-----------#-----------#---------#------------#----------

  DEC     #   OS-8    #           #         #            #  JG

 PDP-8E   #FP hardware# Assembler # 6:02    #            # 2/85

----------#-----------#-----------#---------#------------#----------

  Gould   #  VTX/32   # FORTRAN   #         #            # DO

  9050    #  2.0V01   #           #    :05  #0.3933101 E7# 2/87

----------#-----------#-----------#---------#------------#----------

  HP      #  RTE      # FORTRAN   #         #            # EJK

 1000 F   #  IV B     #   IV      #   1:08  #0.3901291 E7# 10/82

----------#-----------#-----------#---------#------------#----------

          #           # FORTRAN   #         #            # DN

  IBM     # VM370CMS  # normal    #   :06   #0.3480567 E7# 11/81

 370/ 168 #           # ext. opt. #   :03.5 #            #

----------#-----------#-----------#---------#------------#----------

          #           # VS FORTRAN#         #            # BL 1/86

  IBM     # VM CMS    #   opt 0   #   :02.7 #0.348056  E7# REAL*4

  3084    #           #   opt 3   #   :01.48#   "   "    # REAL*4

          #           #   opt 0   #   :03.1 #0.3896022 E7# REAL*8

 no FPS   #           #   opt 3   #   :01.9 #0.3896022 E7# REAL*8

          #           #           #         #            #

  with    #   SJE     # AP FTN64  #         #            #

 FPS 264  #           #   opt 1   #   :01.3 #0.3896022 E7# REAL*8

          #           #   opt 4   #   :01.2 #0.3896022 E7# REAL*8

----------#-----------#-----------#---------#------------#----------

          #           # VS FORTRAN#         #            # BL 2/87

  IBM     # VM CMS    #   V. 2    #         #            #

  3090    #           #   opt 0   #  :01.3  #            # REAL*8

  -400    #           #   opt 3   #  :00.94 #            # REAL*8

----------#-----------#-----------#---------#------------#----------

  IBM     #   UNIX    # FORTRAN   #         #            #  DR

 PC/RT    #  BSD 4.2  #  (F77)    # :03:52  #0.3895725 E7# 3/16/87

 old FPA  #           #           #         #            # f77 -o

          #           #   C       # :01:41  #0.3895725 E7# cc -o

          #           #   C       # :01:40  #0.38960224E7# cc -o

          #           #           #         #            #doub prec

----------#-----------#-----------#---------#------------#----------

          #           # Microsoft #         #            #

  IBM     # DOS 2 ?   # FORTRAN   #         #            #  BT

 PC / XT  #           # no 8087   # 1:21:00 #0.3895725 E7#

          #           # with 8087 #    4:31 #0.3895725 E7# 7/84

          # DOS 3.0   #RMacFarland#         #            #

          #           #Fortran1.00#         #            # PJT

          #           # with 8087 #    3:58 #0.3895725 E7# 6/85

----------#-----------#-----------#---------#------------#----------

 PRIME    # PRIMOS    # FORTRAN   #         #            # RC

  400     # V 13      #  IV       #   :52   #            # 11/81

----------#-----------#-----------#---------#------------#----------

 PRIME    # PRIMOS    # FORTRAN   #         #            # RC

  750     # V 17.6    #   IV      #   :19   #0.3792591 E7# 11/81

          # V 19.3.2  #FTN V.19.3 #   :21   #0.3792416 E7#EJK 4/85

          # V 19.3.2  #F77 V19.3.1#   :26   #0.3704328 E7#EJK 4/85

          # V 19.4.2  #FTN V19.3  #   :18.1 #0.3792416 E7#EJK 8/85

          # V 19.4.2  #F77 V19.4.2#   :22.4 #0.3704328 E7#EJK 8/85

          # V 19.4.2  #F77 V19.4.2#   :21.1 #0.3704328 E7# -FOPT

----------#-----------#-----------#---------#------------#----------

 PRIME    # PRIMOS    #           #         #            # CL 10/85

  9955    # V 19.4.2  #F77 v19.4.2#  :10.87 #0.3704328 E7# REAL*4

          # V 19.4.2  #F77 v19.4.2#  :12.04 #0.3896022 E7# REAL*8

----------#-----------#-----------#---------#------------#----------

 Sun 3/50 #  Sun Os   #           #         #            #DO 1/29/87

   with   #  3.0B     # f77       #  :25.4  #0.3896023 E7# -f68881

 68881 FP # 12/21/85  #           #         #            # -o

----------#-----------#-----------#---------#------------#----------

 Sun 3/180#  Sun Unix #           #         #            #DO /2/87

   with   #    4.2    # f77       #  :05.7  #0.3896050 E7# -ffpa

   FPA    #  rel 3.2  #           #         #            # -o

----------#-----------#-----------#---------#------------#----------

Symbolics #  ??       # Zeta-     #         #            # TL 1/85

3670      #           # LISP      #    :34  #0.389605  E7# 32 bit

w/FP hardware         # compiled  #         #            #sing prec

----------#-----------#-----------#---------#------------#----------

Tektronix # Tektronix #           #         #            #  EJK

 6130     #   UNIX    # FORTRAN   # 1:56    #            # 2/8

(National #           #  77       #         # from TEK demo; answer

  32016   #   UTEK    #           #         # would not output

  8Mhz)   #           #           #         # with indicated LUN

----------#-----------#-----------#---------#------------#----------

   F=41.  Single Precision  (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  TIME   #   ANSWER   # COMMENTS

----------#-----------#-----------#---------#------------#----------

 Apple    #  Mac-os   # Microsoft #         #            # EJK

Macintosh #           # BASIC V1.0#  19:54  # 152111     #  5/84

          #           #           #         #            #

          #           # Microsoft #   1:07  #            # BL 12/86

          #           # Compiled  #         #            #

          #           #  BASIC    #         #            #

          #           #           #         #            #

          #  Mac-os   # Microsoft #         #            # EJK

          #Finder V2.0#BASIC V2.0B#  12:06  # 153187.8   # 1/85

          #           #BASIC V2.0D#  21:26  # 152111     # 4/85

          #           #           #         #            #

          #  Mac-os   # Microsoft #         #            # EJK

          #Finder V5.3#BASIC V3.0B#   8:24  # 153187.8   # 1/87

          #           #           #         #            #

          #  Mac-os   #           #         #            #  EJK

          #           # MacPascal #  24:34  # 153187.8   #  11/84

          #           #           #         #            #

          #  UNIX     # Manx      #         #            # EJK

          #   Shell   # Aztec-C   #  11:15  # 153188     #  10/84

          #           #           #         #            #

          #  Mac-os   # Absoft    #         #            #EJK 2/85

          #           # F77       #   1:07  # 0.153041 E6#INTEGER*4

----------#-----------#-----------#---------#------------#----------

  DEC     # RSX 11M   # FORTRAN   #         #            #  EJK

PDP 11/34A#  V3.2     # IV Plus   #    :13  #0.1531878 E6# 12/81

 with FPP #           #           #         #            #

----------#-----------#-----------#---------#------------#----------

   F=8.  Single Precision  (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  TIME   #   ANSWER   # COMMENTS

----------#-----------#-----------#---------#------------#----------

  Apple   #           #           #         #            #  BL

  II +    #           #  BASIC    #   :08   #            # 12/81

----------#-----------#-----------#---------#------------#----------

 Apple    #           # MAC       #         #            #  BL

Macintosh #           # FORTH II  #    :12  #            #  10/84

          #           #           #         #            #  EJK

          #           #MAC-PASCAL #    :09  # -239.9250  #  11/84

          #           #           #         #            #  EJK

          #           # Microsoft #         #            #

          #           #BASIC 2.0D #    :07  # -239.926   #EJK 4/85

          #           #           #         #            #  EJK

          #    Mac    # Microsoft #         #            #

          # Finder 5.3#BASIC 3.0B #    :03  #            #EJK 1/87

----------#-----------#-----------#---------#------------#----------

Commodore #           #           #         #            #  MSI

   64     #           # BASIC     #    :10  # -239.925   # 1/86

----------#-----------#-----------#---------#------------#----------

  DEC     # RSX 11M   # FORTRAN   #         #            #  EJK

PDP 11/34A#  V3.2     # IV Plus   # 0.068sec#-0.2399250E3# 12/81

 with FPP #           #           #         #            #

----------#-----------#-----------#---------#------------#----------

  Sharp   #           #           #         #            #  BL

  PC-11   #           #  BASIC    #   6:00  #            # 12/81

----------#-----------#-----------#---------#------------#----------

   TI     #           #           #         #            #  EJK

  CC-40   #           #  BASIC    #    :25  # -239.925   # sprg. 83

----------#-----------#-----------#---------#------------#----------


     4.Raw Integer Speed


     This test uses the prime number sieve of Erastothenes (see Appendix

I).  There sould be 1899 primes between 0 and 8190.  Source listings for

the sieve in many different languages as well as the execution time for

hundreds of different computers were given by J. Gilbreath and

G. Gilbreath in the January 1983 issue of BYTE magazine (Vol.  8, No.  1,

pages 283-326).  Note that the times quoted in BYTE are for ten (10)

passes through the loop whereas the times quoted here are for a single

pass through the loop.


   Raw Integer Speed (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  TIME   # COMMENTS

----------+-----------+-----------+---------+----------------------

Apple II E#           #  BASIC    # 245     # BYTE Jan 83 p.298

----------+-----------+-----------+---------+----------------------

  Apple   #  Manx     #   Aztec   #         #  EJK 2/85

 Macintosh#  UNIX     #  C-68K-C  # 0.735667#   local int array

          #  Shell    #   V1.06C  # 0.710667# asm optimizer

          #           #           #         #

          #           #           # 0.496333# register variable

          #           #           # 0.470667# reg var and asm opt.

          #           #           #         #

          #           #  V1.06G   # 0.348   # EJK 5/19/86

          #           #           #         # reg var and extern

          #           #           #         #   char array

          #           #           #         #

          #           # Assembler # 0.287   # DJD 4/85

          #           # Assembler # 0.236   # EJK 5/19/86

          #           #           #         #

          #           #           #         #

          # Mac-OS    #  Absoft   #         #  EJK 2/212/85

          #Finder V2.0#   F77     # 0.98    #  integer*4

          #           #           # 0.83    #  integer*2

          #           #Microsoft  #         #

          #           # BASIC 2.0B# 116     # EJK 4/85

          #           # BASIC 2.0D# 118     #

          #           #           #         #

          #           #MacPascal  # 128     #

          #           #LisaPascal #   0.42  # DY 4/85

          #           #           #         #

          #           # Forth 2.1 #   2.0   # BL 4/85

          #           #           #         #  32 bit

          #           #           #         #

          #           # TML Pascal#   0.7   # EJK 12/11/85

          #           #           #         #

          # Mac       #Microsoft  #         # EJK 1/87

          #Finder V4.1# F77 V2.2  #   0.80  # Integer*2

          #           #           #   0.83  # Logical*4 array

          #           #           #   0.77  # Logical*2 array

          #           #           #   0.73  # Logical*1 array

          #           #           #   0.66  # Logical*1 array

          #           #           #         # (in line code-

          #           #           #         # not a subroutine)

          #           #           #         #

          # Mac       #Microsoft  #         #

          #Finder V5.3# BASIC 3.0B#   67    # EJK 1/87

----------+-----------+-----------+---------+----------------------

  ATT     #  UNIX     #           #         #  DO  6/18/86

 3B2/300  # System V  # FORTRAN   # 0.915   #

----------+-----------+-----------+---------+----------------------

  DEC     # RT-11 FB  # ASSEMBLER # 0.4     #  DN 3/6/85

 PDP11/23 #  V5.1C    # FORTRAN IV# 2.8     #

          #           #           #         # elapsed real time

 (MSC     #  TSX 5.1B # ASSEMBLER # 0.4     #

 machine) #           # FORTRAN IV# 3.6     #

          #           #           #         #

          #  RSX 4.0B # ASSEMBLER # 0.409   # EJK 3/12/85

          #           # F77 V5.0  # 1.354   #

----------+-----------+-----------+---------+----------------------

  DEC     #           #           #         #  KSP 2/85

PDP-11/23 #  UNIX     #     C     # 0.56    #16bit register var.

----------+-----------+-----------+---------+----------------------

  DEC     # RSX-11M   # ASSEMBLER #         #  EJK 1/85

 PDP11/34A#  V 4.0B   #           # 0.357   #

          #           #           #         #

          #           # FORTRAN 77#         #

          #           #  V4.1     # 0.847   #  /NOTR

          #           #           # 1.067   #  /TR:BLOCKS

          #           #           # 1.297   #  /TR:ALL

          #           #           # 4.937   #  /CK

          #           #           # 5.167   #  /TR:ALL/CK

          #           #           #         #

          #           #           #NOTE: time varies a little

          #           #           #because of short time

----------+-----------+-----------+---------+----------------------

  DEC     #           #           #         #  KSP 2/85 cache

PDP-11/34 #  UNIX     #     C     # 0.32    #16bit register var.

----------+-----------+-----------+---------+----------------------

  DEC     #  RT-11    # ASSEMBLER # 0.138   #  JG 1/85

 PDP11/73 #  V5.1C    #           #         #

          #           #           #         #

(15Mhz    #           # FORTRANIV # 0.93    #

  J11)    #           # F77 V5.0  # 0.362   # /NOTR

          #           # F77 V5.0  # 0.466   # /TR:BLOCKS

          #           # F77 V5.0  # 0.570   # /TR:ALL

          #           # F77 V5.0  # 2.339   # /NOTR/CK

          #           # F77 V5.0  # 2.541   # /TR:ALL/CK

----------+-----------+-----------+---------+----------------------

  DEC     #           #           #         #  KSP 2/85

PDP-11/73 #  UNIX     #     C     # 0.18    #16bit register var.

----------+-----------+-----------+---------+----------------------

  DEC     #           #           #         #  KSP 2/85

  VAX-750 #  UNIX     #     C     # 0.27    # register variable

  w/FPA   # BSD 4.2   #           #         #(0.28 without FPA)

          # VMS V4.0  #  F77 V4.2 # 0.408   # defaults EJK 9/85

          # VMS V4.0  #  F77 V4.2 # 0.514   # /NOI4

          #       NOTE: V4.0 did not turn on the cache !

          #           #           #         #

          # VMS V4.2  #  F77 V4.3 # 0.234   # defaults EJK 1/86

          # VMS V4.2  #  F77 V4.3 # 0.296   # /NOI4

          # VMS V4.3  #EPASCAL 2.1# 0.233   # 4/21/86 EJK

          # VMS V4.4  #  F77 V4.5 # 0.234   # 5/86 EJK

          # VMS V4.4  #  F77 V4.5 # 0.213   # 5/86 BYTE ARRAY EJK

          # VMS V4.4  #  assembler# 0.198   # 5/86 EJK

          # VMS V4.5  #  F77 V4.5 # 0.209   # 1/87 BYTE ARRAY EJK

          # VMS V4.5  #  assembler# 0.195   # 1/87 EJK

----------+-----------+-----------+---------+----------------------

  DEC     #           #  FORTRAN  #         # BYTE Jan 83

  VAX-780 #  VMS 2.3  #  V2.3-53  # 0.145   #  page 298

----------+-----------+-----------+---------+----------------------

  DEC     #           #           #         # JG 10/17/85

micro VAX # micro VMS # F77 v4.2  # 0.156   #

  II      #  v4.1M    #           # 0.195   # /NOI4

          #           #           #         #

          #  ELN 2.1  #EPASCAL 2.1# 0.135   # EJK 4/21/86

          #           # F77 4.4   # 0.135   #

----------+-----------+-----------+---------+----------------------

Gould 9050#  VTX/32   #  Fortran  # 0.063   # DO 2/4/87

          #  2.0V01   #           #         #

----------+-----------+-----------+---------+----------------------

 HP Series#           #           #         # from: IEEE Micro

   200    #  Pascal   # Pascal    # 0.679   #  December 1985

 (8Mhz    #   Work    #           #         #  p.50-70

   68000) # Station   #           #         #

----------+-----------+-----------+---------+----------------------

 HP Series#           #           #         # from: IEEE Micro

   300    #  Pascal   # Pascal    # 0.158   #  December 1985

 (16Mhz   #   Work    #           #         #  p.50-70

   68020) # Station   #           #         #

----------+-----------+-----------+---------+----------------------

  IBM-PC  #  DOS      #  BASIC    # 191     # BYTE Jan 83 p.298

----------+-----------+-----------+---------+----------------------

          #           #Pro Fortran#  1.46   # INTEGER*2  PJT 7/85

 IBM PC/XT#  DOS 3.0  #(R.Macfar.)#  3.99   # INTEGER*4

  w/8087  #           #  V 1.0    #  4.01   # I*4 NOOPTIMIZE

          #           #           #  1.64   # I*2 NOOPTIMIZE

----------+-----------+-----------+---------+----------------------

          #           #Pro Fortran#         #      PJT 7/85

 IBM PC/AT#  DOS 3.0  #(R.Macfar.)#  1.20   # INTEGER*4

  w/80287 #           #  V 1.0    #         #

----------+-----------+-----------+---------+----------------------

 IBM PC/RT#   UNIX    # FORTRAN   # 0.28967 #  DR 3/16/87

  old FPA #  BSD 4.2  #           #         # f77 -o

          #           #    C      # 0.102   #

----------+-----------+-----------+---------+----------------------

 PRIME    # PRIMOS    #    FTN    # 0.14179 #  DN 2/26/85

   -750   #  19.3.2   #    F77    # 0.25906 #

          #  19.4.2   # FTN V19.3 # 0.14521 # EJK 8/1/85

          #  19.4.2   #F77 V19.4.2# 0.25703 # defaults

          #  19.4.2   #F77 V19.4.2# 0.15539 # -INTS -OPT 4

          #  19.4.2   #F77 V19.4.2# 0.20400 # -INTS

----------+-----------+-----------+---------+----------------------

 PRIME    # PRIMOS    #           #         #  CL 10/24/85

  9955    #  19.4.2   #F77 v19.4.2# 0.05603 #

----------+-----------+-----------+---------+----------------------

 Sun 3/50 #Sun Os 3.0B#   f77     #         #  DO 1/29/87

 w/68881  #  12/21/85 #           # 0.047   # -f68881 -o

----------+-----------+-----------+---------+----------------------

 Sun 3/180#Sun Unix4.2#   f77     #         #  DO 2/4/87

 w/ FPA   #  rel 3.2  #           # 0.040   # -ffpa -o

----------+-----------+-----------+---------+----------------------

Tektronix #Tektronix  #           #         #  EJK 2/85

 6130     #  UNIX     #     C     # 0.42    # register variable

(Nat 32016#  (UTEK)   #           #         # (32 bit)

 8Mhz)    #           #           #         #

----------+-----------+-----------+---------+----------------------


     5.Large Memory Floating Point Speed A


     This test uses the two dimensional FFT (see Appendix III) by

successive application of a one dimensional FFT.  Although there are

faster FFT algorithms (about twice as fast) they are much harder to type

in.  Some times use the IEEE radix-8 1D FFT (subroutine FFT842, see

chapter 7) or the prime factor FFT 1D FFT (C.S.Burrus, P.W.Eschenbacher,

IEEE Trans.  on Acoutics, Speech and Signal Processing, Vol.  ASSP-29

no.4, August 1981, p.806-817) for comparison.  Otherwise the original

Cooley-Tukey radix-2 algorithm copied from Gonzalez and Wintz, Digital

Image Processing (Addison-Wesley, 1977, pg 87) is used.  The answer should

be (1.0, 0.0).  Of particular importance for PDP-11's is which data is

stored as virtual arrays (noted in the comments).  Note that 256 x 128 is

the largest power of 2 array (it must also be a virtual array) that can be

declared on a PDP-11 in general and 128 x 128 is the largest that can be

declared on an 18 bit address PDP-11 (i.e.  11/23, 11/34, etc.).


     There is another small problem discovered too late.  Some machines

are clever enough to realize that they don't have to multiply by zero so

this particular initialization scheme may produce misleading results (a

20-40 percent change has been seen with 1D FFT's in section 7).  These may

be run again in the future but for now this will have to do (sorry).

Times anotated with a * are with an initialization of (1.,0.) otherwise

the dummy array was initialized to (FLOAT(IX),FLOAT(IY)) (the answer

should be (1.,1.)).


   Large Memory Floating Point Speed A (hr:min:sec.)

 

 COMPUTER # OP. SYS.  # LANGUAGE  # Nx Ny  #  TIME   # COMMENTS

----------+-----------+-----------+--------+---------+-------------

          #           #           # 64 x 64#  33*    # EJK 2/25/85

  Apple   #           # Absoft    # 64 x 64#  44     # EJK 3/12/85

 Macintosh#  Mac-os   # Fortran   #        #         #

  (512k)  #Finder V2.0#   77      #128x128 # 130*    #

          #           #  V2.0a    #128x128 # 182     #

----------+-----------+-----------+--------+---------+-------------

  DEC     #  RT-11    #           #        #         # DN 3/6/85

 LSI 11/23#  V 5.1C   #FORTRAN IV # 64 x 64#  42*    # BL monitor

          #           # threaded  #        #  44*    # DATA virtual

 (MSC     #           # /LINES    #        #  55*    #A,DATA virtual

  machine)#           # vectoring #        #         #

          #  TSX 5.1B #           # 64 x 64#  51*    #

          #           #           #        #  57*    # DATA virtual

          #           #           #        # 140*    #A,DATA virtual

          #           #           #        #         #

          #  RSX 4.0B # F77 V5.0  # 64 x 64#  43.6*  # EJK 3/12/85

          #           #           #        #  48.1*  # DATA virtual

          #           #           #        # 102.6*  #A,DATA virtual

          #           #           #        #         #

          #           #           #128x 128# 207.5*  # DATA virtual

----------+-----------+-----------+--------+---------+--------------

  DEC     # RSX-11M   # FORTRAN 77#        #         #  EJK 1/85

 PDP11/34A#  V 4.0B   #  V 4.1,   # 64 x 64#  17.13* #

          #           #  V 5.0    #        #  18.71  #

          #           #           #        #  20.30* # DATA virtual

          #           #           #        #  59.98* #A,DATA virtual

          #           #           #        #         #

          #           #           #128x128 #  89.30* # DATA virtual

          #           #           #        # 271.08* #A,DATA virtual

          #           #           #        #         #

          #           #           #128x128 #  59.18* # DATA virtual

          #           #           #        #  63.53  # radix-8

----------+-----------+-----------+--------+---------+--------------

  DEC     #  RT-11    #           #        #         # JG 3/1/85

 LSI 11/73#  V 5.1C   #FORTRAN IV # 64 x 64#  16*    #

          #           #           #        #  17*    # DATA virtual

(15Mhz    #           #           #        #  22*    #A,DATA virtual

  J11)    #           #           #        #         #  no vectoring

          #           #           #        #  21*    #A,DATA virtual

          #           #           #        #         #  vectoring

          #           # F77 V5.0  # 64 x 64#  13.33* #

          #           #           #        #         #

          #           # FOR IV    #128x128 #  73.0*  # DATA virt

          #           #           #        #  78.0   #  /nolines

          #           #           #        #         #

          #           #           #        #  97*    #A,DATA virt

          #           #           #        # 103     #  /nolines

          #           #           #        #         #

          # TSX 5.1B  # FOR IV    #128x128 #  81.0*  # DATA virt

          #           #           #        #  86.0   #  /nolines

          #           #           #        #         #

          #           # F77 V5.0  #        #  71.18* #

          #           #           #        #  77.268 #

          #           #           #        #         #

          #           # FOR IV    #        # 225*    #A,DATA virt

          #           #           #        # 230     #  /nolines

          #           #           #        #         #

          #           # F77 V5.0  #        # 216.85* #

          #           #           #        # 230.47  #

----------+-----------+-----------+--------+---------+--------------

  DEC     #           #           # 64 x 64#   7.6*  # KSP 2/25/85

VAX 11/750#  UNIX     #   F77     #        #         #

  w/FPA   #  bsd 4.2  #           #128x128 #  31.8*  #

          #           #           #        #         #

          # VMS 4.2   # F77 4.3   # 64 x 64#   2.29  # EJK 1/13/86

          #           #           # 128x128#   9.78  #

          #           #           # 256x256#  41.5   #

          #           #           # 512x512# 188.95  #

          #           #           #        #         #

          # VMS 4.2   # F77 4.3   # 64 x 64#   1.93  # EJK 1/13/86

          #           #           # 128x128#   7.7   #

          #           #           # 256x256#  34.3   # FFT842

          #           #           # 512x512# 150.3   # radix-8

          #           #           #        #         #

          # VMS 4.2   # F77 4.3   # 64 x 64#   1.90  # EJK 1/27/86

          #           #           # 128x128#   8.10  # FFTS (1D

          #           #           # 256x256#  33.52  # mode) from

          #           #           # 512x512# 164.93  # Singelton

          #           #           #        #         #

          # VMS 4.2   # F77 4.3   # 63 x 63#   1.60  # EJK 1/27/86

          #           #           # 126x126#   7.04  # PFAFFT

          #           #           # 252x252#  31.01  # prime

          #           #           # 504x504# 134.64  # factor

----------+-----------+-----------+--------+---------+-------------

  DEC     #           #           # 64x64  #    2.3  # JG 10/17/85

micro VAX # micro VMS # F77 v4.2  #128x128 #    8.35 #

   II     #  v4.1M    #           #256x256 #   35.4  #

----------+-----------+-----------+--------+---------+-------------

Gould 9050# VTX/32    #           #        #         # DO 2/4/87

          # 2.0V01    # F77       #512x512 #    51.8 #

----------+-----------+-----------+--------+---------+-------------

          #           #           # 64 x 64#  30.32* # I*4 PJT 7/85

  IBM     #  DOS 3.0  # IBM pro-  # 64 x 64#  22.02* # I*2

  PC/XT   #           # Fortran   # 64 x 64#  24.71  # I*2

  w/8087  #           #(R.MacFarl)#        #         #

          #           #  V1.0     #128x128 # 120.73  # I*2

          #           #           #128x128 # 152.20  # I*4

          #           #           #128x128 # 139.84* # I*4

          #           #           #128x128 # 108.37* # I*2

          #           #           #        #         #

          #           #           #256x256 # 456.3*  # I*2

          #           #           #256x256 # 510.04  # I*2

          #           #           #256x256 # 590.18* # I*4

----------+-----------+-----------+--------+---------+-------------

  IBM     #   UNIX    #           #        #         # DR 3/16/87

  PC/RT   #  BSD 4.2  # Fortran   #256x256 #  342.4  # f77 -o

 old FPA  #           #           #        #         #

----------+-----------+-----------+--------+---------+-------------

  IBM     #  VM/CMS   # VS-FORTRAN#        #         # BL 2/13/86

  3084    #           #  OPT=0    # 64 x 64#   0.39  #

  no FPS  #           #  OPT=3    # 64 x 64#   0.21  #

          #           #  OPT=3    #512x512 #  15.5   # 32 bit

          #           #           #        #         #

   with   #  SJE      # AP FORTRAN#        #         #

 FPS 264  #           #  OPT=1    #512x512 #  12.5   #

  64 bit  #           #  OPT=4    #512x512 #   7.7   #

          #           # CFFTSC    #512x512 #   0.8   #AP subroutine

          #           #           # 64x64  #   0.2   # "   "

----------+-----------+-----------+--------+---------+-------------

  IBM     #  VM/CMS   # VS-FORTRAN#        #         # BL 2/87

  3090    #           #  V. 2     #        #         #

  -400    #           #  OPT=3    #512x512 #   5.6   # REAL*4

----------+-----------+-----------+--------+---------+-------------

 PRIME    # PRIMOS    #           #        #         # DN 2/26/85

   -750   #  19.3.2   #    FTN    # 64 x 64#  16.6*  # integer*2

          #           #    F77    #        #   3.47* # integer*2

          #           #    F77    #        #   3.972*# integer*4

          #           #    F77    #        #   3.77  # integer*4

          #           #           #        #         #

          #           #    F77    #128x128 #  15.35* # integer*2

          #           #    F77    #        #  16.35* # integer*4

          #           #    F77    #        #  16.5   # integer*4

          #           #           #        #         #EJK 3/12/85

          #           #    F77    #256x256 #  72.33* # integer*4

          #           #    F77    #256x256 #  71.48  # integer*4

          #           #           #        #         #

          #           #    F77    #512x512 # 317.71* # integer*4

          #           #    F77    #512x512 # 312.07  # integer*4

          #           #           #        #         #

          #   V19.4.2 #F77 V19.4.2#512x512 # 302     # EJK 8/2/85

          #           #           #        #         # -FOPT -INTS

----------+-----------+-----------+--------+---------+------------

  PRIME   # PRIMOS    #   F77     #        #         # CL 10/24/85

  9955    # v19.4.2   #  v19.4.2  #512x512 #  85.094 #

----------+-----------+-----------+--------+---------+-------------

 Sun 3/50 #Sun Os 3.0B#   f77     #        #         # DO 1/29/87

 w/ 68881 #  12/21/85 #           #128x128 #  46.6   # -f68881 -o

----------+-----------+-----------+--------+---------+-------------

 Sun 3/180#Sun Unix4.2#   f77     #        #         # DO 2/4/87

 w/ FPA   #  rel 3.2  #           #512x512 #  190    # -ffpa -o

----------+-----------+-----------+--------+---------+-------------


     6.Large Memory Floating Point Speed B


     This test performs matrix diagonalization using Gauss elimination

(see Appendix IV).  This uses the large memory addressing in a more

intense and disorganized manner.  Of particular importance for PDP-11's is

which data is stored as virtual arrays (noted in the comments).


     The total number of floating point operations in this program are

given in the following table (found by inserting counters in the program);


     #  Int to #  Add   #    Sub     #    Mul     # Div    # Total

  N  #  FLOAT  #        #            #            #        # (excl. I-F)

-----+---------+--------+------------+------------+--------+------------

 100 #  20,200 # 10,200 #    509,850 #    519,950 #  5,150 #  1,045,150

 150 #  45,300 # 22,800 #  1,709,775 #  1,732,425 # 11,475 #  3,476,475

 300 # 180,600 # 90,600 # 13,589,550 # 13,679,850 # 45,450 # 27,405,450



     The N=150 version yields a value of 0.0050 MegFLOP/sec for an IBM

PC/XT (Fortran with 8087, 692 sec), 0.0865 MFLOPS for a PRIME-750 (-ints

-opt4, F77 19.4.2 and PRIMOS 19.4.2, 40.2 sec), and 0.112 MFLOPS for a

VAX-750 (VMS 4.2, FORT 4.3, 31.04 sec).  The number of integer to floating

point conversions has been ignored for this calculation of FLOPS.


   Large Memory Floating Point Speed B (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  N # Answer  # TIME   # COMMENTS

----------+-----------+-----------+----+---------+--------+---------

  Apple   #           # Absoft    #100 #.02906740# 189    #EJK 2/85

 Macintosh#  Mac-os   # Fortran   #    #         #        #

  (512k)  #           #   77      #150 #.0236384 # 620    #INTEGER

          #           #           #    #         #        #  *4

          #           #           #300 #.01532940#4808    #EJK 4/85

----------+-----------+-----------+----+---------+--------+---------

  DEC     #  RT-11    #           #    #         #        #DN 3/6/85

 LSI 11/23#  V 5.1C   #FORTRAN IV #100 #.02906745# 247    #

          #           # threaded  #    #         # 369    #ABvirtual

 (MSC     #           # vectoring #    #         #        #

  machine)# TSX 5.1B  #           #100 #         # 301    #

          #           #           #    #         #2524    #ABvirtual

          #           #           #    #         #        #

          # RSX 4.0B  # F77 V5.0  #100 #.02906745# 143    #EJK 3/85

          #           #           #    #         #1278    #ABvirtual

----------+-----------+-----------+----+---------+--------+---------

  DEC     # RSX-11M   # FORTRAN 77#    #         #        #EJK 1/85

 PDP11/34A#  V 4.0B   #  V 4.1,   #100 #.02906745#  55.43 # A,B real

          #           #  V5.0     #    #         # 846.82 #A virtual

          #           #           #    #         # 865.80 #ABvirtual

          #           #           #    #         # 862.85 #/NOTR

          #           #           #    #         # 838.43 #/NOTR,

          #           #           #    #         #        # /PR:0

          #           #           #    #         #        #

          #           #           #150 #.02363845#3612.08 #ABvirtual

----------+-----------+-----------+----+---------+--------+---------

  DEC     #  RT-11    #           #    #         #        #JG 3/1/85

 LSI 11/73#  V 5.1C   #FORTRAN IV #100 #         # 103    #

          #           #           #    #         #  96    #vectoring

(15Mhz    #           #           #    #         # 155    #AB virt.,

  J11)    #           #           #    #         #        #vectoring

----------+-----------+-----------+----+---------+--------+---------

   DEC    #           #           #100 #.02906745#  18.2  #KSP 2/85

  VAX-750 #  UNIX     #   F77     #    #         #        #

   FPA    #   bsd 4.2 #   with    #150 #.02363845#  60.8  #

          #           #  optimizer#    #         #        #

          #           #           #300 #.01532949# 588.2  #

          #           #           #    #         #        #

          # VMS 4.2   # F77 V4.3  #100 #.02906745#   9.45 # EJK 1/86

          #           #           #150 #.02363845#  31.04 #

          #           #           #300 #.01532949# 340.68 #

----------+-----------+-----------+----+---------+--------+---------

  DEC     # micro VMS #           #100 #         #   8.0  # JG

micro VAX #  v4.1M    # F77 v4.2  #150 #         #  27.32 #10/17/85

   II     #           #           #300 #         # 220.79 #

          # ELN 2.1   #VMS-F77 4.4#100 #.0290674 #   7.83 # 4/21/86

          #           #           #    #         #        #  EJK

----------+-----------+-----------+----+---------+--------+---------

Gould 9050# VTX/32    #           #    #         #        # DO

          #  2.0V01   # F77       #300 #.01532956#  86.6  # 2/4/87

----------+-----------+-----------+----+---------+--------+---------

IBM-PC/XT #           # Microsoft #100 #.02906745# 169    #BT 2/85

  8087    #  PC-DOS   #   F77     #    #         #        #$LARGE

 (640k)   #   2.1     #   V3.2    #150 #.02363845# 692    #$NOFLOAT

          #           #           #    #         #        #  CALLS

----------+-----------+-----------+----+---------+--------+---------

IBM-PC/RT #   UNIX    # FORTRAN   #300 #.01532948# 1448.6 #DR3/16/87

 old FPA  #  BSD 4.2  #   F77     #    #         #        # f77 -o

----------+-----------+-----------+----+---------+--------+---------

IBM-PC/AT #           # Microsoft #100 #.02906745#  97    #BT 2/85

  80287   #  PC-DOS   #   F77     #    #         #        #$LARGE

 (512k)   #   3.0     #   V3.2    #150 #.02363845# 343    #$NOFLOAT

          #           #           #    #         #        #  CALLS

          #           #           #    #         #        #

          #           #           #100 #.02906745#  87    #BT 2/85

          #           #           #    #         #        #$NOLARGE

          #           #           #150 #.02363845# 343    #$NOFLOAT

          #           #           #    #         #        #  CALLS

----------+-----------+-----------+----+---------+--------+---------

 PRIME    # PRIMOS    #           #    #         #        #DN 2/85

   -750   #  19.3.2   #    FTN    #100 #.02906708#  13.3  #integer*2

          #           #    FTN    #100 #  "   "  #  18.36 #integer*4

          #           #    F77    #100 #  "   "  #  24.5  #integer*4

          #           #           #    #         #        #

          #           #    FTN    #150 #.02363797#  42.4  #integer*2

          #           #    FTN    #150 #  "   "  #  58.8  #integer*4

          #           #    F77    #150 #.02363798#  80.8  #integer*4

          #           #           #    #         #        # EJK 4/85

          #           # FTN V19.3 #300 #.01532892# 388.6  # -UNCOPT

          #           #           #    #         #        # -INTS

          #           # FTN V19.3 #300 #  "   "  # 566.8  #integer*2

          #           #F77 V19.3.1#300 #.01532891# 900.6  #integer*4

          #           #           #    #         #        # EJK 9/85

          # 19.4.2    #F77 V19.4.2#150 #.02363797#  84.5  # defaluts

          #           #           #150 #  "   "  #  40.2  #ints,opt4

          #           #           #300 #.01532892# 823.9  # defaults

          #           #           #300 #  "   "  # 357.4  # -fopt

          #           #           #300 #  "   "  # 336.5  #fopt,ints

          # 20.1.1R1  #F77 V20.0.3#300 #.01532892# 361.6  # -fopt

          #           #           #    #         #        # ejk 2/87

----------+-----------+-----------+----+---------+--------+---------

 PRIME    # PRIMOS    #           #100 #.02906708#   3.115#CL 10/85

   9955   #  19.4.2   #F77 v19.4.2#150 #.02363797#  10.418#

          #           #           #300 #.01532892#  86.197#

----------+-----------+-----------+----+---------+--------+---------

 Sun 3/50 #Sun Os 3.0B#   f77     #    #         #        #DO1/29/87

 w/68881  #  12/21/85 #           #300 #.01532948#  392.4 #-f68881-o

----------+-----------+-----------+----+---------+--------+---------

 Sun 3/180#Sun Unix4.2#   f77     #    #         #        #DO1/29/87

   w/FPA  #  rel 3.2  #           #300 #.01532949#  106.4 #-ffpa -o

----------+-----------+-----------+----+---------+--------+---------


     7.1D Complex FFT Times


     One dimensional FFT execution times are tabulated for comparison to

advertised array processor speeds.  This uses the same simple radix-2

complex FFT subroutine as in chapter 5 but does a single one dimensional

FFT with a larger length (N in table below ).  There are obviously more

sophisticated FFT's that run faster but they are too long to type in on

every machine.  Some times are shown using the faster radix-8 FFT from the

IEEE Digital Signal Procesing Programs tape (routine FFT842).  Refer to

G.D.Bergland, M.T.Dolan in 'Programs for Digital Signal Processing', (IEEE

Press, 1979), edited by the Digital Signal Processing Committee, IEEE

Acoustics, Speech, and Signal Processing Society, pg. 1.2-1.  Also for

comparison some times are shown for Singleton's mixed radix FFT (renamed

here FFTS).  This program is relatively well known and a complete source

listing in FORTRAN can be found in R.C.Singleton, "An Algorithm for

Computing the Mixed Radix Fast Fourier Transform", IEEE Trans.  on Audio

and Electroacoustics Vol.17, no.2 (June 1969) p.93-103 (note that this

journal has since been renamed IEEE Trans.  on Acoutics, Speech and Signal

Processing).  Singelton's FFT is also capable of performing the

Cooley-Tukey alogorithm on an arbitrary length data set.


     M. A. Mehalic, and P. L. Rustan (IEEE Trans.  Acoustics, Speech, and

Signal Processing Vol.  ASSP-33, June 1985, pg. 684-693) have tabulated

the execution speed of five different FFT algorithms on eight different

computers, and A.J. van der Steen (Signal Processing 5, 1983, p.541-546)

also tested 6 FFT algorithms on 3 different computers.  They discovered

that even the relative performace of particular FFT algorithms may vary

from processor to processor (generally not by more the 2x) depending on

the relative compatability of the algorithm and the CPU architecture.


     NOTE:  some machines are clever enough to know that they don't have

to multiply by zero (i.e.  they do it faster) so that the previous test

using an array that was primarily zero (that was written here) produced

misleading results.  An occasional factor of 20-40 percent difference in

speed was seen.  Not all times have as yet been recomputed.  Those times

that deal with an FFT containing mainly zeros are annotated with an '*'.


   1D Complex FFT Times (hr:min:sec)

 

 COMPUTER # OP. SYS.  # LANGUAGE  #  N  # TIME    # COMMENTS

----------+-----------+-----------+-----+---------+------------

 Apple    # Mac-os    # Absoft    #     #         #EJK 2/85

 Macintosh#Finder V2.0#  F77 v2.0 #1024 #  4.35*  #integer*4

          #           #           #     #         #

          #           #           #  64 #  0.25   # EJK 3/86

          #           #           # 128 #  0.50   #

          #           #           # 256 #  1.05   #integer*4

          #           #           # 512 #  2.25   #

          #           #           #1024 #  4.65   #

----------+-----------+-----------+-----+---------+------------

 Cray 1   #           # FORTRAN   # 512 # 0.00425 # ASSP-33

          #           #           #1024 # 0.00898 # pg 75

----------+-----------+-----------+-----+---------+------------

  DEC     # RSX-11M   # FORTRAN 77#     #         #EJK 3/12/85

PDP 11/23 #  V 4.0B   #  V 5.0    #1024 #  6.77*  #

(MSC machine)         #           #     #         #

----------+-----------+-----------+-----+---------+------------

  DEC     # RSX-11M   # FORTRAN 77#     #         #EJK

 PDP11/34A#  V 4.0B   #  V 5.0    #  64 #  0.137  # w/ FP

          #           #           # 128 #  0.298  # 3/13/85

          #           #           # 256 #  0.651  # 3/13/85

          #           #           # 512 #  1.412  # 3/13/85

          #           #           #1024 #  3.055  # 3/13/85

          #           #           #     #         #

          #           #           #1024 #  2.68*  # 3/5/85

          #           #           #     #         #

          #           #           #  64 #  0.062  #EJK 3/28/85

          #           #           # 128 #  0.136  #

          #           #           # 256 #  0.285  #IEEE FFT

          #           #           # 512 #  0.623  # radix-8

          #           #           #1024 #  1.369  # FFT842

----------+-----------+-----------+-----+---------+------------

  DEC     #   VMS     # FORTRAN 77#     #         #EJK 1/13/86

VAX11/ 750#  V 4.2    #  V 4.3    #  64 #  0.016  #

 w/FPA    #           #           # 128 #  0.034  #

          #           #           # 256 #  0.073  #

          #           #           # 512 #  0.162  #

averaged  #           #           #1024 #  0.330  #

 over     #           #           #     #         #

  200     #           #           #  64 #  0.012  #EJK 1/13/86

 passes   #           #           # 128 #  0.025  #

          #           #           # 256 #  0.050  #IEEE FFT

          #           #           # 512 #  0.109  #radix-8

          #           #           #1024 #  0.257  # FFT842

          #           #           #     #         #

          #           #           #  64 #  0.011  #EJK 1/13/86

          #           #           # 128 #  0.023  #

          #           #           # 256 #  0.049  # FFTS

          #           #           # 512 #  0.109  # from

          #           #           #1024 #  0.233  # Singleton

----------+-----------+-----------+-----+---------+------------

   DEC    #           #           #  64 #  0.029  # JG 10/17/85

micro VAX #micro VMS  # F77 v4.2  # 128 #  0.034  #

    II    #  v4.1M    #           # 256 #  0.073  #

          #           #           # 512 #  0.158  #

          #           #           #1024 #  0.340  #

----------+-----------+-----------+-----+---------+------------

  Prime   # PRIMOS    #           #     #         #EJK 3/13/85

   750    #  19.3.2   #  F77      #  64 #  0.0250 #

          #           #           # 128 #  0.0542 #radix-2

          #           #           # 256 #  0.120  #FFT

          #           #           # 512 #  0.262  #

          #           #           #1024 #  0.562  #

          #           #           #     #         #

          #           #  F77      #  64 #  0.0136 #EJK 3/21/85

          #           #           # 128 #  0.0317 #

          #           #           # 256 #  0.0533 #IEEE FFT

          #           #           # 512 #  0.124  #radix-8

          #           #           #1024 #  0.276  # FFT842

----------+-----------+-----------+-----+---------+------------

  Prime   # PRIMOS    #           #     #         # CL 10/24/85

   9955   #  19.4.2   #  F77      #  64 #  0.00788#

          #           #  v19.4.2  # 128 #  0.01621#radix-2

          #           #           # 256 #  0.03485#FFT

          #           #           # 512 #  0.07424#

          #           #           #1024 #  0.15894#

          #           #           #     #         #

          #           #  F77      #  64 #  0.00546#CL 10/24/85

          #           #  v19.4.2  # 128 #  0.01106#

          #           #           # 256 #  0.02212#IEEE FFT

          #           #           # 512 #  0.04667#radix-8

          #           #           #1024 #  0.10121# FFT842

----------+-----------+-----------+-----+---------+------------

----------+-----------+-----------+-----+---------+------------

 Analogic # DEC (UNIBUS, QBUS)    #     #         # advertised

 AP-500   # DG (NOVA3/4, ECLIPSE) #1024 #  0.0047 # array proc.

9.4 MFLOP # HP-1000               #     #         # 32 bit FP

----------+-----------+-----------+-----+---------+------------

 Analogic # DEC (UNIBUS, QBUS)    #     #         # advertised

 AP-400   # DG (ECLIPSE)          #1024 #  0.0074 # array proc.

          # HP-1000               #     #         #32 bit block

----------+-----------+-----------+-----+---------+------------

  CSP Inc #  DEC (UNIBUS, QBUS)   #     #         # advertised

 Mini-MAP #                       #1024 #  0.0078 # array proc.

 7 MFLOP  #        bit            #     #         # 32 bit FP

----------+-----------+-----------+-----+---------+------------

  CSP Inc #  DEC UNIBUS, ?        #     #         # advertised

 Mini-MAP #                       #1024 #    ?    # array proc.

 5 MFLOP  #     64 bit            #     #         # 64 bit FP

----------+-----------+-----------+-----+---------+------------

 FPS      #                       #     #         # advertised

 AP-120B  #          ?            #1024 #  0.0048 # array proc.

          #                       #     #         # 38 bit FP

----------+-----------+-----------+-----+---------+------------

 FPS      #                       #     #         # advertised

 AP-5000  #          ?            #1024 #         # array proc.

 26-62 MFLOP                      #     #         # 38 bit FP

----------+-----------+-----------+-----+---------+------------

 FPS      #                       #     #         # advertised

 AP-164   #          ?            #1024 #         # array proc.

          #                       #     #         # 64 bit

----------+-----------+-----------+-----+---------+------------

 Marinco  # IBM-PC                #     #         # advertised

 3024PC   #  integer              #1024 #  0.0072 # array proc.

 3016PC   #  floating point       #     #  0.0383 #NOT COMPLEX

----------+-----------+-----------+-----+---------+------------

 Mercury  # DEC (QBUS)            #     #         # advertised

 ZIP 3216 # Multibus, VMEbus      #1024 #         # array proc.

          #                       #     #  0.0046 # 16 bit ?

          #                       #     #  0.0130 # 32 bit ?

----------+-----------+-----------+-----+---------+------------

 Numerix  #                       #     #         # advertised

 MARS-432 #        ?              #1024 #  0.0017 # array proc.

 30 MFLOP #                       #     #         # 32 bit FP

----------+-----------+-----------+-----+---------+------------

 Sky      # DEC (QBUS)            #     #  0.0531 # advertised

 SKYMNK   # Multibus              #1024 #  0.0539 # array proc.

 1 MFLOP  # Versabus              #     #  0.0536 # 32 bit FP

----------+-----------+-----------+-----+---------+------------

 Sky      #                       #     #         # advertised

 Warrior  # VMEbus                #1024 #  0.0038 # array proc.

 15 MFLOP(32 bit), 0.5(64bit)     #     #         # 32 bit FP

----------+-----------+-----------+-----+---------+------------

------------------------------------------------------------------------------
Title                  :BENCHMARKS
Keywords               :COMPUTERS
Computer               :DEC,IBM,APPLE,ATT,CDC,HP,PRIME,GOULD,SUN,COMMODORE,TI
Operating System       :Various as appropriate to above systems
Programming Language   :Fortran , BASIC, Pascal, Assembler
Hardware Requirements  :None
Author(s)              :Earl J. Kirkland
Correspondence Address :School of Applied and Engineering  Physics,
                       :Cornell University Ithaca, N.Y. 14853
Source Code:
APPENDIX I  Short Integer Benchmark Source Listing                       


        ________ _ _____ _______ _________ ______ ________
      Z APPENDIX I Short Integer Benchmark Source Listiing
      C
      C       *** SIEVE.FTN ***
      C
      C  Test integer (non-floating point) speed using
      C   prime number sieve.   23-JAN-85 E. Kirkland
      C
              INTEGER SIEVE,SIEVEM,COUNT
              REAL TIME
       
              TIME=SECNDS(0.0)
              COUNT=SIEVE(8191)
              COUNT=SIEVE(8191)
              COUNT=SIEVE(8191)
              COUNT=SIEVE(8191)
              COUNT=SIEVE(8191)
              TIME=SECNDS(TIME)/5.
              WRITE(5,*) COUNT,TIME
       
              TIME=SECNDS(0.0)
              COUNT=SIEVEM(8190)
              COUNT=SIEVEM(8190)
              COUNT=SIEVEM(8190)
              COUNT=SIEVEM(8190)
              COUNT=SIEVEM(8190)
              TIME=SECNDS(TIME)/5.
              WRITE(5,*) COUNT,TIME
       
              END
      C
      C  Prime number sieve of Eratosthenes
      C   remember to input 1+size for SIZE because the
      C   DO loop is from 1 to SIZE instead of 0 to SIZE
      C
              INTEGER FUNCTION SIEVE(SIZE)
              INTEGER I,K,PRIME,COUNT,FLAGS(10000),SIZE
       
              COUNT=0
              DO 10 I=1,SIZE
         10   FLAGS(I)=1
       
              DO 40 I=1,SIZE
              IF (FLAGS(I).EQ.0) GOTO 40
                PRIME = I + I + 1
                K = I + PRIME
       
         20     IF (K.GT.SIZE) GOTO 30
                FLAGS(K)=0
                K = K + PRIME
                GOTO 20
       
         30     COUNT=COUNT+1
       
         40   CONTINUE
      
              SIEVE=COUNT
              RETURN
              END



      ;
      ;  *** SIEVE.MAC ***
      ;
      ;  hand coded prime number sieve of Erastothenes
      ;     30-JAN-85   E. Kirkland
      ;
              .TITLE SIEVEM
       
              .PSECT CODE1
       
      FLAGS:  .BLKB   20000           ; FLAGS array
       
      SIEVEM::
              CLR     R0              ; COUNT=0
       
              MOV     @2(R5),R1       ; SIZE
              MOV     #FLAGS,R2
              MOV     #1,R3
      .10:    MOVB    R3,(R2)+        ;   DO 10 I=1,SIZE
              SOB     R1,.10          ;10 FLAGS(I)=1
       
              MOV     @2(R5),R1       ; SIZE
              CLR     R2              ; I
              MOV     #3,R5           ; R5=3
       
      .15:    TSTB    FLAGS(R2)       ; IF(FLAGS(I).EQ.0) GOTO 40
              BEQ     .40
              MOV     R2,R3           ;   PRIME=I+I+3
              ASL     R3
              ADD     R5,R3
              MOV     R2,R4           ;   K=I+PRIME
              ADD     R3,R4
       
      .20:    CMP     R4,R1           ;   IF(K.GT.SIZE) GOTO 30
              BGT     .30
              CLRB    FLAGS(R4)       ;   FLAGS(K)=0
              ADD     R3,R4           ;   K=K+PRIME
              BR      .20             ;   GOTO 20
       
      .30:    INC     R0              ; COUNT=COUNT+1
       
      .40:    INC     R2
              CMP     R2,R1           ; NEXT I
              BLE     .15
       
              RTS     PC              ;RETURN
              .END
       


APPENDIX II Short Floating Point Benchmark Source Listing            

        ________ __ _____ ________ _____ _________ ______ _______
      Z APPENDIX II Short Floating Point Benchmark Source Listing
      C
      C   *** BENCH55.FTN ***
      C
      C  Compare F77 and Macro floating point benchmark
      C
      C  E. Kirkland 27-MAR-84
      C
              REAL T1,T2,A
       5001   FORMAT(' Answer=',G18.8,' elapsed time=',F8.3,
           /    ' seconds')
              T1=SECNDS(0.)
              A=BF77(83.)
              T2=SECNDS(T1)
              WRITE(5,5001) A,T2
              T1=SECNDS(0.)
              A=BMAC(83.)
              T2=SECNDS(T1)
              WRITE(5,5001) A,T2
              END
      C
      C   Perform actual dummy calculation as a subroutine
      C
              REAL FUNCTION BF77(X)
              REAL A,B,C,D,F
              F=X
              A=0.
              B=F
         10   C=F
         20   D=F
         30   A=A+B*C/D-(B+1.)*(C+1.)/(D+1.)
              D=D-1.
              IF(D.NE.1.) GO TO 30
              C=C-1.
              IF(C.NE.1.) GO TO 20
              B=B-1.
              IF(B.NE.1.) GO TO 10
              BF77=A
              RETURN
              END
      ;
      ;   *** BENCH55.MAC ***
      ;
      ;  E. Kirkland 26-MAR-84
      ;
      ;   Hand coded machine language version of the
      ;   F77 routine to test floating point speed.
      ;
              .TITLE BMAC
       
              .PSECT CODE1
              F0=R0        ; Remember that the floating
              F1=R1        ; point registers are referred
              F2=R2        ; to as R0 - R5 by the assembler
              F3=R3        ; even though they are not
              F4=R4        ; R0 - R5
              F5=R5
      ;
      ; F=F0
      ; 1.0=F5
       
      A:      .WORD 0,0
      B:      .WORD 0,0
      C:      .WORD 0,0
      D:      .WORD 0,0
       
      BMAC::
              SETF
              LDF     @2(R5),F0       ; F=F0=X
              LDF     #^F1.0,F1
              STF     F1,F5           ; F5=1.0
              CLRF    A               ; A=0
              STF     F0,B            ; B=F
      .10:    STF     F0,C            ; C=F
      .20:    STF     F0,D            ; D=F
      .30:    LDF     B,F1
              STF     F1,F4
              ADDF    F5,F1           ; F1=B+1.
              LDF     C,F2
              ADDF    F5,F2           ; F2=C+1.
              MULF    F2,F1           ; F1= (B+1.)*(C+1.)
              LDF     D,F2
              ADDF    F5,F2           ; F2=D+1.
              DIVF    F2,F1           ; F1= (B+1.)*(C+1.)/(D+1.)
              LDF     C,F2
              MULF    F4,F2
              DIVF    D,F2            ; F2= C*B/D
              SUBF    F1,F2           ; F2= C*B/D- (B+1.)*(C+1.)/(D+1.)
              ADDF    A,F2
              STF     F2,A            ; A=F2= F2 + F1
       
              LDF     D,F1
              SUBF    F5,F1           ; D= D-1.
              STF     F1,D
              CMPF    F5,F1
              CFCC
              BNE     .30
       
              LDF     C,F1
              SUBF    F5,F1           ; C= C-1.
              STF     F1,C
              CMPF    F5,F1
              CFCC
              BNE     .20
       
              LDF     B,F1
              SUBF    F5,F1           ; B= B-1.
              STF     F1,B
              CMPF    F5,F1
              CFCC

              BNE     .10
       
              MOV     A+2,R1          ; BMAC = A
              MOV     A,R0
              RTS     PC
              .END


APPENDIX III Large Floating Point Benchmark Source Listing A            

        ________ ___ _____ ________ _____ _________ ______ _______ _
      Z APPENDIX III Large Floating Point Benchmark Source Listing A
      C
      C        *** BENCHFFT.FTN ***
      C
      C  Benchmark to test large data addressing and number crunching
      C
      C   E. Kirkland 30-JAN-85
      C
              INTEGER IX,IY,NX,NY,LNX,LNY
              REAL TIME
              COMPLEX SUM,DATA(64,64),A(64)
              DATA NX,LNX/64,6/, NY,LNY/64,6/
      C
      C  Get system time (machine dependent)
      C
              TIME=SECNDS(0.0)
      C
      C  fill array with unity
      C
              DO 10 IX=1,NX
              DO 10 IY=1,NY
         10   DATA(IX,IY)=(1.,0.)
      C
      C  transform rows
      C
              DO 30 IY=1,NY
              DO 20 IX=1,NX
         20   A(IX)=DATA(IX,IY)
              CALL FFT(A,LNX)
              DO 30 IX=1,NX
         30   DATA(IX,IY)=A(IX)
      C
      C  transform col
      C
              DO 50 IX=1,NX
              DO 40 IY=1,NY
         40   A(IY)=DATA(IX,IY)
              CALL FFT(A,LNY)
              DO 50 IY=1,NY
         50   DATA(IX,IY)=A(IY)
      C
      C  sum to get roundoff error
      C
              SUM=(0.,0.)
              DO 60 IY=1,NY
              DO 60 IX=1,NX
         60   SUM=SUM+DATA(IX,IY)
      C
      C  Get execution time (machine dependent)
      C
              TIME=SECNDS(TIME)
              WRITE(5,5001) TIME,SUM
       5001   FORMAT(' Elapsed time=',F15.7,'  integrated value=',2G15.7)
              END
      C
      C        *** FFT1D.FTN ***
      C
      C  FAST FOURIER TRANSFORM ROUTINE COPIED FROM GONZALEZ and WINTZ
      C   This is the original Cooley-Tukey Algorithm
      C
      C        E. KIRKLAND 16-FEB-80
      C
              SUBROUTINE FFT(F,LN)
              COMPLEX F(1024),U,W,T,CMPLX
              PI=3.1415927
              N=2**LN
              NV2=N/2
              NM1=N-1
              J=1
              DO 3 I=1,NM1
              IF(I.GE.J) GO TO 1
              T=F(J)
              F(J)=F(I)
              F(I)=T
          1   K=NV2
          2   IF(K.GE.J) GO TO 3
              J=J-K
              K=K/2
              GO TO 2
          3   J=J+K
              DO 5 L=1,LN
              LE=2**L
              LE1=LE/2
              U=(1.0,0.0)
              W=CMPLX(COS(PI/LE1),-SIN(PI/LE1))
              DO 5 J=1,LE1
              DO 4 I=J,N,LE
              IP=I+LE1
              T=F(IP)*U
              F(IP)=F(I)-T
          4   F(I)=F(I)+T
          5   U=U*W
              DO 6 I=1,N
          6   F(I)=F(I)/FLOAT(N)
              RETURN
              END


APPENDIX IV Large Floating Point Benchmark Source Listing B             

        ________ __ _____ ________ _____ _________ ______ _______ _
      Z APPENDIX IV Large Floating Point Benchmark Source Listing B
      C
      C        *** BENCHGAUS.FTN ***
      C
      C  Benchmark to test large data addressing and number crunching
      C   using Gauss reduction of a large matrix
      C
      C   E. Kirkland 31-JAN-85
      C
              INTEGER IX,IY,N,M,I,J,K,II,JJ,KK
              REAL TIME,A(100,100),B(100,1),SUM
              DATA N/100/, M/1/
      C
      C use below for Virtual array version:
      C        REAL TIME,SUM,A,B
      C        VIRTUAL A(100,100),B(100,1)
      C
      C  Get system time (machine dependent)
      C
              TIME=SECNDS(0.0)
      C
      C  fill array
      C
              DO 6 IX=1,N
              B(IX,1)=FLOAT(IX)
              DO 5 IY=1,N
          5   A(IX,IY)= FLOAT(IX) + FLOAT(IX)*FLOAT(IY)
          6   A(IX,IX)=45.*A(IX,IX) + FLOAT(IX)
      C
      C  Gauss elimination of augmented matrix
      C
              DO 50 I=1,N
              DO 10 J=1,M
         10   B(I,J)=B(I,J)/A(I,I)
              DO 20 JJ=I,N
              J=N-JJ+I
         20   A(I,J)=A(I,J)/A(I,I)
              DO 50 J=1,N
              IF (J .EQ. I) GO TO 50
              DO 30 K=1,M
         30   B(J,K)=B(J,K)-A(J,I)*B(I,K)
              DO 40 KK=I,N
              K=N-KK+I
         40   A(J,K)=A(J,K)-A(J,I)*A(I,K)
         50   CONTINUE
      C
      C  Sum resultant vector for fun
      C
              SUM=0.0
              DO 60 IX=1,N
         60   SUM=SUM+ B(IX,1)
      C
      C  Get execution time (machine dependent)
      C
              TIME=SECNDS(TIME)
              WRITE(5,5001) TIME,SUM
       5001   FORMAT(' Elapsed time=',F10.4,' sec, integrated value=',G15.7)
              END


APPENDIX V 1D Complex FFT, for Comparison to Array Processors          

        ________ _ __ _______ ___ _____ ________ ____
      Z APPENDIX I 1D Complex FFT (from Appendix III)
      C
      C        *** BENCHFFT1.FTN ***
      C
      C  Benchmark to time 1D complex FFT
      C
      C   E. Kirkland 30-FEB-85 modified 13-mar-85 ejk
      C
      C  uses system dependent time function SECNDS
      C
              INTEGER I,N,LN
              REAL TIME,TIME1
              COMPLEX A(1024)
      C
      C  Do many sizes at once
      C
              DO 200 LN=6,10
              N=2**LN
       
              TIME1=SECNDS(0.0)
              DO 10 I=1,20
              DO 5 J=1,N
          5   A(J)=CMPLX(FLOAT(J),FLOAT(N-J))
         10   CONTINUE
              TIME1= SECNDS(TIME1)
       
              TIME=SECNDS(0.0)
              DO 20 I=1,20
              DO 15 J=1,N
         15   A(J)=CMPLX(FLOAT(J),FLOAT(N-J))
         20   CALL FFT(A,LN)
              TIME= SECNDS(TIME) - TIME1
       
              TIME=TIME/20.
              WRITE(5,5001) TIME,N
       5001   FORMAT(' Elapsed time=',F12.7,'  for a',I5,' complex FFT')
        200   CONTINUE
              END

------------------------------------------------------------------------------