168349SobrienC******************************************************************************
268349SobrienC FILE: omp_reduction.f
3267843SdelphijC DESCRIPTION:
468349SobrienC   OpenMP Example - Combined Parallel Loop Reduction - Fortran Version
568349SobrienC   This example demonstrates a sum reduction within a combined parallel loop
668349SobrienC   construct.  Notice that default data element scoping is assumed - there
768349SobrienC   are no clauses specifying shared or private variables.  OpenMP will
868349SobrienC   automatically make loop index variables private within team threads, and
968349SobrienC   global variables shared.
1068349SobrienC AUTHOR: Blaise Barney  5/99
1168349SobrienC LAST REVISED:
1268349SobrienC******************************************************************************
1368349Sobrien
1468349Sobrien      PROGRAM REDUCTION
1568349Sobrien
1668349Sobrien      INTEGER I, N
1768349Sobrien      REAL A(100), B(100), SUM
1868349Sobrien
1968349Sobrien!     Some initializations
2068349Sobrien      N = 100
2168349Sobrien      DO I = 1, N
2268349Sobrien        A(I) = I *1.0
2368349Sobrien        B(I) = A(I)
2468349Sobrien      ENDDO
2568349Sobrien      SUM = 0.0
2668349Sobrien
2769216Sobrien!$OMP PARALLEL DO REDUCTION(+:SUM)
2869216Sobrien      DO I = 1, N
29267843Sdelphij        SUM = SUM + (A(I) * B(I))
30103373Sobrien      ENDDO
31226048Sobrien
32133359Sobrien      PRINT *, '   Sum = ', SUM
33226048Sobrien      END
34226048Sobrien