URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 273 |
Rev 338 |
! { dg-do run }
|
! { dg-do run }
|
|
|
integer, dimension (6, 6) :: a
|
integer, dimension (6, 6) :: a
|
character (36) :: c
|
character (36) :: c
|
integer nthreads
|
integer nthreads
|
a = 9
|
a = 9
|
nthreads = -1
|
nthreads = -1
|
call foo (a (2:4, 3:5), nthreads)
|
call foo (a (2:4, 3:5), nthreads)
|
if (nthreads .eq. 3) then
|
if (nthreads .eq. 3) then
|
write (c, '(36i1)') a
|
write (c, '(36i1)') a
|
if (c .ne. '999999999999966699966699966699999999') call abort
|
if (c .ne. '999999999999966699966699966699999999') call abort
|
end if
|
end if
|
contains
|
contains
|
subroutine foo (b, nthreads)
|
subroutine foo (b, nthreads)
|
use omp_lib
|
use omp_lib
|
integer, dimension (3:, 5:) :: b
|
integer, dimension (3:, 5:) :: b
|
integer :: err, nthreads
|
integer :: err, nthreads
|
b = 0
|
b = 0
|
err = 0
|
err = 0
|
!$omp parallel num_threads (3) reduction (+:b)
|
!$omp parallel num_threads (3) reduction (+:b)
|
if (any (b .ne. 0)) then
|
if (any (b .ne. 0)) then
|
!$omp atomic
|
!$omp atomic
|
err = err + 1
|
err = err + 1
|
end if
|
end if
|
!$omp master
|
!$omp master
|
nthreads = omp_get_num_threads ()
|
nthreads = omp_get_num_threads ()
|
!$omp end master
|
!$omp end master
|
b = 2
|
b = 2
|
!$omp end parallel
|
!$omp end parallel
|
if (err .gt. 0) call abort
|
if (err .gt. 0) call abort
|
end subroutine foo
|
end subroutine foo
|
end
|
end
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.