123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- ! { dg-do run }
- ! { dg-additional-options "-fopt-info-note-omp" }
- ! { dg-additional-options "-foffload=-fopt-info-note-omp" }
- ! { dg-additional-options "--param=openacc-privatization=noisy" }
- ! { dg-additional-options "-foffload=--param=openacc-privatization=noisy" }
- ! { dg-additional-options "-Wuninitialized" }
- !TODO
- ! { dg-xfail-run-if TODO { openacc_radeon_accel_selected && { ! __OPTIMIZE__ } } }
- ! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName'
- ! passed to 'incr' may be unset, and in that case, it will be set to [...]",
- ! so to maintain compatibility with earlier Tcl releases, we manually
- ! initialize counter variables:
- ! { dg-line l_dummy[variable c_loop 0] }
- ! { dg-message "dummy" "" { target iN-VAl-Id } l_dummy } to avoid
- ! "WARNING: dg-line var l_dummy defined, but not used". */
- program main
- implicit none
- integer :: myint
- integer :: i
- real :: res(65536), tmp
- res(:) = 0.0
- myint = 3
- call gangs(myint, res)
- do i=1,65536
- tmp = i * 97
- if (res(i) .ne. tmp) stop 1
- end do
- res(:) = 0.0
- myint = 5
- call workers(myint, res)
- do i=1,65536
- tmp = i * 99
- if (res(i) .ne. tmp) stop 2
- end do
- res(:) = 0.0
- myint = 7
- call vectors(myint, res)
- do i=1,65536
- tmp = i * 101
- if (res(i) .ne. tmp) stop 3
- end do
- res(:) = 0.0
- myint = 9
- call gangs_workers_vectors(myint, res)
- do i=1,65536
- tmp = i * 103
- if (res(i) .ne. tmp) stop 4
- end do
- contains
- subroutine gangs(t1, res)
- implicit none
- integer :: t1
- integer :: i, j
- real, intent(out) :: res(:)
- !$acc parallel copyout(res) num_gangs(64)
- !$acc loop collapse(2) gang private(t1) ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 't1' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do i=0,255
- do j=1,256
- t1 = (i * 256 + j) * 97
- res(i * 256 + j) = t1
- end do
- end do
- !$acc end parallel
- end subroutine gangs
- subroutine workers(t1, res)
- implicit none
- integer :: t1
- integer :: i, j
- real, intent(out) :: res(:)
- !$acc parallel copyout(res) num_gangs(64) num_workers(64)
- ! { dg-warning "using .num_workers \\(32\\)., ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 }
- !$acc loop gang ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do i=0,255
- !$acc loop worker private(t1) ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 't1' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do j=1,256
- t1 = (i * 256 + j) * 99
- res(i * 256 + j) = t1
- end do
- end do
- !$acc end parallel
- end subroutine workers
- subroutine vectors(t1, res)
- implicit none
- integer :: t1
- integer :: i, j
- real, intent(out) :: res(:)
- !$acc parallel copyout(res) num_gangs(64) num_workers(64)
- ! { dg-warning "using .num_workers \\(32\\)., ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 }
- !$acc loop gang worker ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do i=0,255
- !$acc loop vector private(t1) ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 't1' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do j=1,256
- t1 = (i * 256 + j) * 101
- res(i * 256 + j) = t1
- end do
- end do
- !$acc end parallel
- end subroutine vectors
- subroutine gangs_workers_vectors(t1, res)
- implicit none
- integer :: t1
- integer :: i, j
- real, intent(out) :: res(:)
- !$acc parallel copyout(res) num_gangs(64) num_workers(64)
- ! { dg-warning "using .num_workers \\(32\\)., ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 }
- !$acc loop collapse(2) gang worker vector private(t1) ! { dg-line l_loop[incr c_loop] }
- ! { dg-note {variable 'i' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 'j' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- ! { dg-note {variable 't1' in 'private' clause isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } l_loop$c_loop }
- do i=0,255
- do j=1,256
- t1 = (i * 256 + j) * 103
- res(i * 256 + j) = t1
- end do
- end do
- !$acc end parallel
- end subroutine gangs_workers_vectors
- end program main
|