@@ -12,6 +12,8 @@ subroutine UpdateIntermediateVariablesKernel(fsdx,fsdy,p,u,v,cu,cv,h,z)
12
12
13
13
integer :: i,j
14
14
15
+ ! $acc enter data copyin(p,u,v,fsdx,fsdy,cu,cv,h,z)
16
+ ! $acc parallel loop collapse(2) present(p,u,v,fsdx,fsdy)
15
17
do j= 1 ,size (cu,2 )- 1
16
18
do i= 1 ,size (cu,1 )- 1
17
19
cu(i+1 ,j) = 0.5 * (p(i+1 ,j) + p(i,j)) * u(i+1 ,j)
@@ -22,6 +24,8 @@ subroutine UpdateIntermediateVariablesKernel(fsdx,fsdy,p,u,v,cu,cv,h,z)
22
24
v(i,j+1 ) * v(i,j+1 ) + v(i,j) * v(i,j))
23
25
end do
24
26
end do
27
+ ! $acc exit data copyout(cu,cv,z,h)
28
+
25
29
end subroutine UpdateIntermediateVariablesKernel
26
30
27
31
subroutine UpdateNewVariablesKernel (tdtsdx ,tdtsdy ,tdts8 ,pold ,uold ,vold ,cu ,cv ,h ,z ,pnew ,unew ,vnew )
@@ -32,6 +36,8 @@ subroutine UpdateNewVariablesKernel(tdtsdx,tdtsdy,tdts8,pold,uold,vold,cu,cv,h,z
32
36
33
37
integer :: i,j
34
38
39
+ ! $acc enter data copyin(tdtsdx,tdtsdy,tdts8,cu,cv,z,h,pold,uold,vold,pnew,unew,vnew)
40
+ ! $acc parallel loop collapse(2) present(tdtsdx,tdtsdy,tdts8,cu,cv,z,h,pold,uold,vold)
35
41
do j= 1 ,size (unew,2 )- 1
36
42
do i= 1 ,size (unew,1 )- 1
37
43
unew(i+1 ,j) = uold(i+1 ,j) + &
@@ -43,6 +49,8 @@ subroutine UpdateNewVariablesKernel(tdtsdx,tdtsdy,tdts8,pold,uold,vold,cu,cv,h,z
43
49
pnew(i,j) = pold(i,j) - tdtsdx * (cu(i+1 ,j) - cu(i,j)) - tdtsdy * (cv(i,j+1 ) - cv(i,j))
44
50
end do
45
51
end do
52
+ ! $acc exit data copyout(unew,vnew,pnew)
53
+
46
54
end subroutine UpdateNewVariablesKernel
47
55
48
56
subroutine UpdateOldVariablesKernel (alpha ,pnew ,unew ,vnew ,p ,u ,v ,pold ,uold ,vold )
@@ -52,14 +60,17 @@ subroutine UpdateOldVariablesKernel(alpha,pnew,unew,vnew,p,u,v,pold,uold,vold)
52
60
53
61
integer :: i,j
54
62
63
+ ! $acc enter data copyin(alpha,pold,uold,vold,p,u,v,pnew,unew,vnew)
64
+ ! $acc parallel loop collapse(2) present(alpha,p,u,v,pnew,unew,vnew)
55
65
do j= 1 ,size (uold,2 )- 1
56
66
do i= 1 ,size (uold,1 )- 1
57
67
uold(i,j) = u(i,j) + alpha* (unew(i,j) - 2 . * u(i,j) + uold(i,j))
58
68
vold(i,j) = v(i,j) + alpha* (vnew(i,j) - 2 . * v(i,j) + vold(i,j))
59
69
pold(i,j) = p(i,j) + alpha* (pnew(i,j) - 2 . * p(i,j) + pold(i,j))
60
70
end do
61
71
end do
72
+ ! $acc exit data copyout(uold,vold,pold)
62
73
63
74
end subroutine UpdateOldVariablesKernel
64
75
65
- end module SWM_Fortran_Kernels
76
+ end module SWM_Fortran_Kernels
0 commit comments