Copyright Vladimir Galouchko Home page http://field.hypermart.net
Fortran bencmarks 

OS : Windows 98 SE
Compilator : Intel Fortran 5.0 (-O3 -QaxW)
Benchmark : Full source code

IMPLICIT REAL*8 (A-H,O-Z)
REAL *8, ALLOCATABLE, TARGET ::
* A3(:,:,:), B3(:,:,:), C3(:,:,:)
REAL *8, ALLOCATABLE, TARGET ::
* A1(:), B1(:), C1(:)

Pentium 4 1400,
Intel D850GB Motherboard, 128 RAM

Test blocks of FORTRAN Copyright 2001 Vladimir Galouchko
Dynamic arrays
NX 200 NY 200 NZ 10 N 400000
Number of test iterations 100

TEST 1 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.157768E+01 sec 0.394420E-07 one action
Version 2 :
DO I = 1, N
A1(I) = 1.D0
END DO
Run time of version 2 0.400769E+00 sec 0.100192E-07 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.772282E+00 sec 0.193070E-07 one action
Version 4 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
CALL SetValueArray(A3, I, J, K, 1.D0)
END DO
END DO
END DO
Run time of version 4 0.171485E+01 sec 0.428713E-07 one action
Version 5 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K)
END DO
END DO
END DO
Run time of version 5 0.285499E+01 sec 0.713747E-07 one action
Version 6 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = VALUEARRAY(B3, I, J, K)
END DO
END DO
END DO
Run time of version 6 0.367433E+01 sec 0.918583E-07 one action
TEST 1 :
Time version 1 0.157768E+01 sec
Time version 2 0.400769E+00 sec
Time version 3 0.772282E+00 sec
Time version 4 0.171485E+01 sec
Time version 5 0.285499E+01 sec
Time version 6 0.367433E+01 sec

TEST 2 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = 1.D0
B3(I, J, K) = 1.D0
C3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.157768E+01 sec 0.394420E-07 one action
Version 2 :
DO I = 1, N
A1(I) = 1.D0
B1(I) = 1.D0
C1(I) = 1.D0
END DO
Run time of version 2 0.448370E+01 sec 0.112093E-06 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
B1(IN) = 1.D0
C1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.446491E+01 sec 0.111623E-06 one action
TEST 2 :
Time version 1 0.157768E+01 sec
Time version 2 0.448370E+01 sec
Time version 3 0.446491E+01 sec

TEST 3 :
Version 1 :
DO K = NZ, 1, -1
DO J = NY, 1, -1
DO I = NX, 1, -1
A3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.102050E+01 sec 0.255125E-07 one action
Version 2 :
DO I = N, 1, -1
A1(I) = 1.D0
END DO
Run time of version 2 0.458366E+00 sec 0.114591E-07 one action
Version 3 :
DO K = NZ, 1, -1
DO J = NY, 1, -1
DO I = NX, 1, -1
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.738824E+00 sec 0.184706E-07 one action
TEST 3 :
Time version 1 0.102050E+01 sec
Time version 2 0.458366E+00 sec
Time version 3 0.738824E+00 sec

TEST 4 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) + C3(I, J, K)
END DO
END DO
END DO
Run time of version 1 0.158507E+02 sec 0.396268E-06 one action
Version 2 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) * C3(I, J, K)
END DO
END DO
END DO
Run time of version 2 0.154046E+02 sec 0.385114E-06 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) / C3(I, J, K)
END DO
END DO
END DO
Run time of version 3 0.217721E+02 sec 0.544303E-06 one action
Version 4 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IF (B3(I, J, K) .LT. C3(I, J, K)) THEN
A3(I, J, K) = 2.D0
ELSE
A3(I, J, K) = 1.D0
END IF
END DO
END DO
END DO
Run time of version 4 0.151447E+02 sec 0.378617E-06 one action
Version 5 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
CALL ADD(A3(I, J, K), B3(I, J, K), 
C3(I, J, K))
END DO
END DO
END DO
Run time of version 4 0.157265E+02 sec 
TEST 4 :
Time version 1 0.158507E+02 sec
Time version 2 0.154046E+02 sec
Time version 3 0.217721E+02 sec
Time version 4 0.151447E+02 sec
Time version 5 0.157265E+02 sec
Operations rate :
+ 1.000000
* 0.971853
/ 1.373573
IF 0.955457
CALL 0.992162

TEST 5 :
Matrix * vector
Run time of test 5 0.798432E+02 sec 0.199608E-05 one point

TEST 6 :
Solver Ax = b (A - 3 diagonal matrix)
Version 1 with division
Run time of version 1 0.778237E+02 sec 0.194559E-05 one action
Version 2 without division
Run time of version 2 0.564194E+02 sec 0.141049E-05 one action
TEST 6 :
Time version 1 0.778237E+02 sec
Time version 2 0.564194E+02 sec

Pentium 4 1400,
Intel D850GB Motherboard, 128 RAM

Pentium !!! 900,
Abit BE-6 II Motherboard, 128 RAM

Test blocks of FORTRAN Copyright 2001 Vladimir Galouchko
Dynamic arrays
NX 200 NY 200 NZ 10 N 400000
Number of test iterations 100

TEST 1 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.282893E+01 sec 0.707233E-07 one action
Version 2 :
DO I = 1, N
A1(I) = 1.D0
END DO
Run time of version 2 0.233594E+01 sec 0.583984E-07 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.233906E+01 sec 0.584766E-07 one action
Version 4 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
CALL SetValueArray(A3, I, J, K, 1.D0)
END DO
END DO
END DO
Run time of version 4 0.275293E+01 sec 0.688233E-07 one action
Version 5 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K)
END DO
END DO
END DO
Run time of version 5 0.372979E+01 sec 0.932447E-07 one action
Version 6 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = VALUEARRAY(B3, I, J, K)
END DO
END DO
END DO
Run time of version 6 0.502980E+01 sec 0.125745E-06 one action
TEST 1 :
Time version 1 0.282893E+01 sec
Time version 2 0.233594E+01 sec
Time version 3 0.233906E+01 sec
Time version 4 0.275293E+01 sec
Time version 5 0.372979E+01 sec
Time version 6 0.502980E+01 sec

TEST 2 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = 1.D0
B3(I, J, K) = 1.D0
C3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.282893E+01 sec 0.707233E-07 one action
Version 2 :
DO I = 1, N
A1(I) = 1.D0
B1(I) = 1.D0
C1(I) = 1.D0
END DO
Run time of version 2 0.632922E+01 sec 0.158231E-06 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
B1(IN) = 1.D0
C1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.629516E+01 sec 0.157379E-06 one action
TEST 2 :
Time version 1 0.282893E+01 sec
Time version 2 0.632922E+01 sec
Time version 3 0.629516E+01 sec

TEST 3 :
Version 1 :
DO K = NZ, 1, -1
DO J = NY, 1, -1
DO I = NX, 1, -1
A3(I, J, K) = 1.D0
END DO
END DO
END DO
Run time of version 1 0.236402E+01 sec 0.591005E-07 one action
Version 2 :
DO I = N, 1, -1
A1(I) = 1.D0
END DO
Run time of version 2 0.233502E+01 sec 0.583755E-07 one action
Version 3 :
DO K = NZ, 1, -1
DO J = NY, 1, -1
DO I = NX, 1, -1
IN = (K - 1) * IPXY + (J - 1) * IPX + I
A1(IN) = 1.D0
END DO
END DO
END DO
Run time of version 3 0.233778E+01 sec 0.584445E-07 one action
TEST 3 :
Time version 1 0.236402E+01 sec
Time version 2 0.233502E+01 sec
Time version 3 0.233778E+01 sec

TEST 4 :
Version 1 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) + C3(I, J, K)
END DO
END DO
END DO
Run time of version 1 0.572746E+01 sec 0.143187E-06 one action
Version 2 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) * C3(I, J, K)
END DO
END DO
END DO
Run time of version 2 0.573217E+01 sec 0.143304E-06 one action
Version 3 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
A3(I, J, K) = B3(I, J, K) / C3(I, J, K)
END DO
END DO
END DO
Run time of version 3 0.573212E+01 sec 0.143303E-06 one action
Version 4 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
IF (B3(I, J, K) .LT. C3(I, J, K)) THEN
A3(I, J, K) = 2.D0
ELSE
A3(I, J, K) = 1.D0
END IF
END DO
END DO
END DO
Run time of version 4 0.586477E+01 sec 0.146619E-06 one action
Version 5 :
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
CALL ADD(A3(I, J, K), B3(I, J, K), 
C3(I, J, K))
END DO
END DO
END DO
Run time of version 4 0.583731E+01 sec 
TEST 4 :
Time version 1 0.572746E+01 sec
Time version 2 0.573217E+01 sec
Time version 3 0.573212E+01 sec
Time version 4 0.586477E+01 sec
Time version 5 0.583731E+01 sec
Operations rate :
+ 1.000000
* 1.000823
/ 1.000813
IF 1.023974
CALL 1.019179

TEST 5 :
Matrix * vector
Run time of test 5 0.134262E+02 sec 0.335656E-06 one point

TEST 6 :
Solver Ax = b (A - 3 diagonal matrix)
Version 1 with division
Run time of version 1 0.159659E+02 sec 0.399148E-06 one action
Version 2 without division
Run time of version 2 0.880039E+01 sec 0.220010E-06 one action
TEST 6 :
Time version 1 0.159659E+02 sec
Time version 2 0.880039E+01 sec

Pentium !!! 900,
Abit BE-6 II Motherboard, 128 RAM