1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
! TEAMSDISTRIBUTE combined construct test
program openmp_73
use omp_lib
implicit none
integer :: array(1000), i, j, sum=0
array(1)=3
!$omp teams distribute num_teams(2) thread_limit(5)
do i = 1, 1000, 100
print*,omp_get_num_threads(), omp_get_max_threads()
!$omp parallel do
do j = i, min(i+99, 1000)
array(j) = j * 3
end do
!$omp end parallel do
end do
!$omp end teams distribute
! Sum of all elements
!$omp parallel do reduction(+:sum)
do i=1,1000
sum=sum+array(i)
end do
!$omp end parallel do
print*, sum
if(sum/=1501500) error stop
end program openmp_73
|