@@ -788,19 +788,6 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
788
788
end if
789
789
end do
790
790
791
- do i = 1 , group % nFields
792
- if (group % fields(i) % fieldType == MPAS_HALO_REAL) then
793
- select case (group % fields(i) % nDims)
794
- case (1 )
795
- !$acc exit data delete(group % fields(i) % r1arr(:))
796
- case (2 )
797
- !$acc exit data delete(group % fields(i) % r2arr(:,:))
798
- case (3 )
799
- !$acc exit data delete(group % fields(i) % r3arr(:,:,:))
800
- end select
801
- end if
802
- end do
803
-
804
791
!
805
792
! Initiate non- blocking sends to all neighbors
806
793
!
@@ -872,9 +859,9 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
872
859
!
873
860
! Unpack recv buffer from all neighbors for current field
874
861
!
875
- !$acc update host(group % recvBuf(:))
876
- !$acc wait
877
- !! $acc kernels default(present)
862
+ !! $acc update host(group % recvBuf(:))
863
+ !! $acc wait
864
+ !$acc kernels default(present)
878
865
do iHalo = 1 , nHalos
879
866
do j = 1 , maxNRecvList
880
867
if (j <= nRecvLists(iHalo,iEndp)) then
@@ -884,7 +871,7 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
884
871
end if
885
872
end do
886
873
end do
887
- !! $acc end kernels
874
+ !$acc end kernels
888
875
!!$acc exit data copyout(group % fields(i) % r1arr(:))
889
876
890
877
!
@@ -894,9 +881,9 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
894
881
!
895
882
! Unpack recv buffer from all neighbors for current field
896
883
!
897
- !$acc update host(group % recvBuf(:))
898
- !$acc wait
899
- !! $acc kernels default(present)
884
+ !! $acc update host(group % recvBuf(:))
885
+ !! $acc wait
886
+ !$acc kernels default(present)
900
887
do iHalo = 1 , nHalos
901
888
do j = 1 , maxNRecvList
902
889
do i1 = 1 , dim1
@@ -908,7 +895,7 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
908
895
end do
909
896
end do
910
897
end do
911
- !! $acc end kernels
898
+ !$acc end kernels
912
899
!!$acc exit data copyout(group % fields(i) % r2arr(:,:))
913
900
914
901
!
@@ -918,9 +905,9 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
918
905
!
919
906
! Unpack recv buffer from all neighbors for current field
920
907
!
921
- !$acc update host(group % recvBuf(:))
922
- !$acc wait
923
- !! $acc kernels default(present)
908
+ !! $acc update host(group % recvBuf(:))
909
+ !! $acc wait
910
+ !$acc kernels default(present)
924
911
do iHalo = 1 , nHalos
925
912
do j = 1 , maxNRecvList
926
913
do i2 = 1 , dim2
@@ -935,17 +922,43 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
935
922
end do
936
923
end do
937
924
end do
938
- !! $acc end kernels
925
+ !$acc end kernels
939
926
!!$acc exit data copyout(group % fields(i) % r3arr(:,:,:))
940
927
941
928
end select
942
929
end if
943
930
end do
944
931
end do
945
932
933
+ do i = 1 , group % nFields
934
+ if (group % fields(i) % fieldType == MPAS_HALO_REAL) then
935
+ select case (group % fields(i) % nDims)
936
+ case (1 )
937
+ !$acc update self(group % fields(i) % r1arr(:))
938
+ case (2 )
939
+ !$acc update self(group % fields(i) % r2arr(:,:))
940
+ case (3 )
941
+ !$acc update self(group % fields(i) % r3arr(:,:,:))
942
+ end select
943
+ end if
944
+ end do
945
+
946
+ do i = 1 , group % nFields
947
+ if (group % fields(i) % fieldType == MPAS_HALO_REAL) then
948
+ select case (group % fields(i) % nDims)
949
+ case (1 )
950
+ !$acc exit data delete(group % fields(i) % r1arr(:))
951
+ case (2 )
952
+ !$acc exit data delete(group % fields(i) % r2arr(:,:))
953
+ case (3 )
954
+ !$acc exit data delete(group % fields(i) % r3arr(:,:,:))
955
+ end select
956
+ end if
957
+ end do
958
+
946
959
! For the present (group % recvBuf(:), group % sendBuf(:))
947
960
!$acc end data
948
-
961
+ ! !$acc wait
949
962
! do i = 1 , group % nFields
950
963
! if (group % fields(i) % fieldType == MPAS_HALO_REAL) then
951
964
! select case (group % fields(i) % nDims)
@@ -958,7 +971,7 @@ subroutine mpas_halo_exch_group_full_halo_exch(domain, groupName, iErr)
958
971
! end select
959
972
! end if
960
973
! end do
961
-
974
+ ! !$acc wait
962
975
963
976
!
964
977
! Nullify array pointers - not necessary for correctness, but helpful when debugging
0 commit comments