53 lines
857 B
Fortran
53 lines
857 B
Fortran
! { dg-do run }
|
|
|
|
program myprog
|
|
|
|
type mytype
|
|
integer, allocatable :: myarr(:,:)
|
|
end type mytype
|
|
integer :: i
|
|
|
|
type(mytype), allocatable :: typearr(:)
|
|
|
|
allocate(typearr(1:100))
|
|
|
|
do i=1,100
|
|
allocate(typearr(i)%myarr(1:100,1:100))
|
|
end do
|
|
|
|
do i=1,100
|
|
typearr(i)%myarr(:,:) = 0
|
|
end do
|
|
|
|
!$acc enter data copyin(typearr)
|
|
|
|
do i=1,100
|
|
!$acc enter data copyin(typearr(i)%myarr)
|
|
end do
|
|
|
|
i=33
|
|
typearr(i)%myarr(:,:) = 50
|
|
|
|
!$acc update device(typearr(i)%myarr(:,:))
|
|
|
|
do i=1,100
|
|
!$acc exit data copyout(typearr(i)%myarr)
|
|
end do
|
|
|
|
!$acc exit data delete(typearr)
|
|
|
|
do i=1,100
|
|
if (i.eq.33) then
|
|
if (any(typearr(i)%myarr.ne.50)) stop 1
|
|
else
|
|
if (any(typearr(i)%myarr.ne.0)) stop 2
|
|
end if
|
|
end do
|
|
|
|
do i=1,100
|
|
deallocate(typearr(i)%myarr)
|
|
end do
|
|
|
|
deallocate(typearr)
|
|
|
|
end program myprog
|