Code
fortran
program parallel
use omp_lib
implicit none
integer, parameter :: n = 1000000
real :: a(n), b(n), c(n)
integer :: i
real :: start, finish
! Initialize
a = 1.0; b = 2.0
call cpu_time(start)
! Parallel loop
!$omp parallel do
do i = 1, n
c(i) = a(i) + b(i) * sqrt(real(i))
end do
!$omp end parallel do
call cpu_time(finish)
print *, 'Time:', finish - start
print *, 'c(1), c(n):', c(1), c(n)
! Reduction
real :: total
total = 0.0
!$omp parallel do reduction(+:total)
do i = 1, n
total = total + c(i)
end do
!$omp end parallel do
print *, 'Sum:', total
end program