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