mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			989 B
		
	
	
	
		
			Fortran
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			989 B
		
	
	
	
		
			Fortran
		
	
	
	
| ! { dg-do run }
 | |
| 
 | |
| program asyncwait
 | |
|   integer, parameter :: N = 64
 | |
|   real, allocatable :: a(:), b(:), c(:)
 | |
|   integer i
 | |
| 
 | |
|   allocate (a(N))
 | |
|   allocate (b(N))
 | |
|   allocate (c(N))
 | |
| 
 | |
|   !$acc parallel async (0)
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     a(i) = 1
 | |
|   end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc parallel async (1)
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     b(i) = 1
 | |
|   end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   !$acc wait (0, 1)
 | |
| 
 | |
|   !$acc parallel
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     c(i) = a(i) + b(i)
 | |
|   end do
 | |
|   !$acc end parallel
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (c(i) .ne. 2.0) call abort
 | |
|   end do
 | |
| 
 | |
|   !$acc kernels async (0)
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     a(i) = 1
 | |
|   end do
 | |
|   !$acc end kernels
 | |
| 
 | |
|   !$acc kernels async (1)
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     b(i) = 1
 | |
|   end do
 | |
|   !$acc end kernels
 | |
| 
 | |
|   !$acc wait (0, 1)
 | |
| 
 | |
|   !$acc kernels
 | |
|   !$acc loop
 | |
|   do i = 1, N
 | |
|     c(i) = a(i) + b(i)
 | |
|   end do
 | |
|   !$acc end kernels
 | |
| 
 | |
|   do i = 1, N
 | |
|     if (c(i) .ne. 2.0) call abort
 | |
|   end do
 | |
|   
 | |
|   deallocate (a)
 | |
|   deallocate (b)
 | |
|   deallocate (c)
 | |
| end program asyncwait
 |