mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			243 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			243 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
| ! { dg-do run }
 | |
| ! { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } }
 | |
| 
 | |
| program update
 | |
|   use openacc
 | |
|   implicit none 
 | |
|   integer, parameter :: N = 8
 | |
|   integer, parameter :: NDIV2 = N / 2
 | |
|   real :: a(N), b(N)
 | |
|   integer i
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 3.0
 | |
|     b(i) = 0.0
 | |
|   end do
 | |
| 
 | |
|   !$acc enter data copyin (a, b)
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 3.0) STOP 1
 | |
|     if (b(i) .ne. 3.0) STOP 2
 | |
|   end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 3
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 4
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 5.0
 | |
|     b(i) = 1.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a, b)
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do 
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 5.0) STOP 5
 | |
|     if (b(i) .ne. 5.0) STOP 6
 | |
|  end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 7
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 8
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|   do i = 1, N
 | |
|     b(i) = a(i)
 | |
|   end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 5.0) STOP 9
 | |
|     if (b(i) .ne. 5.0) STOP 10
 | |
|   end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 11
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 12
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 6.0
 | |
|     b(i) = 0.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 9.0
 | |
|   end do
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 6.0) STOP 13
 | |
|     if (b(i) .ne. 6.0) STOP 14
 | |
|   end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 15
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 16
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 7.0
 | |
|     b(i) = 2.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 9.0
 | |
|   end do
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 7.0) STOP 17
 | |
|     if (b(i) .ne. 7.0) STOP 18
 | |
|   end do
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 9.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a)
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (a(i) .ne. 9.0) STOP 19
 | |
|     if (b(i) .ne. 9.0) STOP 20
 | |
|   end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 21
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 22
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 5.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a)
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 6.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a(1:NDIV2))
 | |
| 
 | |
|   !$acc parallel present (a, b)
 | |
|     do i = 1, N
 | |
|       b(i) = a(i)
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a, b)
 | |
| 
 | |
|   do i = 1, NDIV2
 | |
|     if (a(i) .ne. 6.0) STOP 23
 | |
|     if (b(i) .ne. 6.0) STOP 24
 | |
|   end do
 | |
| 
 | |
|   do i = NDIV2 + 1, N
 | |
|     if (a(i) .ne. 5.0) STOP 25
 | |
|     if (b(i) .ne. 5.0) STOP 26
 | |
|   end do
 | |
| 
 | |
|   if (acc_is_present (a) .neqv. .TRUE.) STOP 27
 | |
|   if (acc_is_present (b) .neqv. .TRUE.) STOP 28
 | |
| 
 | |
|   do i = 1, N
 | |
|     a(i) = 0.0
 | |
|   end do
 | |
| 
 | |
|   !$acc update device (a(1:4))
 | |
| 
 | |
|   !$acc parallel present (a)
 | |
|     do i = 1, N
 | |
|       a(i) = a(i) + 1.0
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a(5:N))
 | |
| 
 | |
|   do i = 1, NDIV2
 | |
|     if (a(i) .ne. 0.0) STOP 29
 | |
|   end do
 | |
| 
 | |
|   do i = NDIV2 + 1, N
 | |
|     if (a(i) .ne. 6.0) STOP 30
 | |
|   end do
 | |
| 
 | |
|   !$acc update host (a(1:4))
 | |
| 
 | |
|   do i = 1, NDIV2
 | |
|     if (a(i) .ne. 1.0) STOP 31
 | |
|   end do
 | |
| 
 | |
|   do i = NDIV2 + 1, N
 | |
|     if (a(i) .ne. 6.0) STOP 32
 | |
|   end do
 | |
| 
 | |
|   a(3) = 9
 | |
|   a(4) = 9
 | |
|   a(5) = 9
 | |
|   a(6) = 9
 | |
| 
 | |
|   !$acc update device (a(3:6))
 | |
| 
 | |
|   !$acc parallel present (a(1:N))
 | |
|     do i = 1, N
 | |
|       a(i) = a(i) + 1.0
 | |
|     end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc update host (a(3:6))
 | |
| 
 | |
|   do i = 1, 2
 | |
|     if (a(i) .ne. 1.0) STOP 33
 | |
|   end do
 | |
| 
 | |
|   do i = 3, 6
 | |
|     if (a(i) .ne. 10.0) STOP 34
 | |
|   end do
 | |
| 
 | |
|   do i = 7, N
 | |
|     if (a(i) .ne. 6.0) STOP 35
 | |
|   end do
 | |
| 
 | |
|   !$acc exit data delete (a, b)
 | |
| 
 | |
| end program
 | |
| 
 |