Skip to content

Commit

Permalink
GET_VIEW: Add test for GET_VIEW after device syncronisation
Browse files Browse the repository at this point in the history
  • Loading branch information
mlange05 committed Dec 6, 2023
1 parent eb729dd commit 622caf0
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
1 change: 1 addition & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ list(APPEND TEST_FILES
get_view_get_device_data.F90
get_view_when_nhstfresh.F90
get_view_when_uninitialized.F90
get_view_after_transfer.F90
init_owner.F90
init_owner2.F90
init_owner_delayed.F90
Expand Down
41 changes: 41 additions & 0 deletions tests/get_view_after_transfer.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
! (C) Copyright 2022- ECMWF.
! (C) Copyright 2022- Meteo-France.
!
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
! In applying this licence, ECMWF does not waive the privileges and immunities
! granted to it by virtue of its status as an intergovernmental organisation
! nor does it submit to any jurisdiction.

PROGRAM GET_VIEW_AFTER_TRANSFER
! Test that accessing a previously uninitialised field
! on host after it has been written to on device.
USE FIELD_MODULE
USE FIELD_FACTORY_MODULE
USE PARKIND1
IMPLICIT NONE

CLASS(FIELD_2RB), POINTER :: F => NULL()
REAL(KIND=JPRB), POINTER :: PTR_D(:,:), VIEW(:)
INTEGER :: I, J

CALL FIELD_NEW(F, UBOUNDS=[10,10], PERSISTENT=.TRUE.)
CALL F%GET_DEVICE_DATA_RDWR(PTR_D)

!$ACC KERNELS PRESENT(PTR_D)
DO I=1,10
DO J=1,10
PTR_D(I,J) = 42.0
ENDDO
ENDDO
!$ACC END KERNELS

CALL F%SYNC_HOST_RDWR()
DO I=1,10
VIEW => F%GET_VIEW(I)
DO J=1,10
IF (VIEW(J) /= 42.0) STOP
ENDDO
ENDDO

END PROGRAM GET_VIEW_AFTER_TRANSFER

0 comments on commit 622caf0

Please sign in to comment.