program reduction implicit none real(8), dimension(:), allocatable :: T integer :: Nx1 = 4096+4096, i, j, tnot, Total=0 integer,parameter :: seed = 86456 call srand(seed) ! initialize random number allocate(T(1:Nx1)) do i=1,Nx1 T(i) = rand() end do !$OMP PARALLEL SHARED(T,Nx1) PRIVATE(i,j) DEFAULT(SHARED) !$OMP DO SCHEDULE(RUNTIME) REDUCTION(+:Total) do i=1,Nx1 do j=1,Nx1 T(i) = T(i) + dsqrt(dabs((dcos(T(i))+dsin(T(j)))))/T(j) end do Total = Total + T(i) end do !$OMP END DO !$OMP END PARALLEL deallocate(T) print *, "Total=", Total end program reduction