1C******************************************************************************
2C FILE: omp_reduction.f
3C DESCRIPTION:
4C   OpenMP Example - Combined Parallel Loop Reduction - Fortran Version
5C   This example demonstrates a sum reduction within a combined parallel loop
6C   construct.  Notice that default data element scoping is assumed - there
7C   are no clauses specifying shared or private variables.  OpenMP will
8C   automatically make loop index variables private within team threads, and
9C   global variables shared.
10C AUTHOR: Blaise Barney  5/99
11C LAST REVISED:
12C******************************************************************************
13
14      PROGRAM REDUCTION
15
16      INTEGER I, N
17      REAL A(100), B(100), SUM
18
19!     Some initializations
20      N = 100
21      DO I = 1, N
22        A(I) = I *1.0
23        B(I) = A(I)
24      ENDDO
25      SUM = 0.0
26
27!$OMP PARALLEL DO REDUCTION(+:SUM)
28      DO I = 1, N
29        SUM = SUM + (A(I) * B(I))
30      ENDDO
31
32      PRINT *, '   Sum = ', SUM
33      END
34