| ! REQUIRES: flang, amdgpu |
| |
| ! RUN: %libomptarget-compile-fortran-generic |
| ! RUN: env LIBOMPTARGET_INFO=16 %libomptarget-run-generic 2>&1 | %fcheck-generic |
| module test |
| implicit none |
| |
| TYPE field_type |
| REAL, DIMENSION(:,:), ALLOCATABLE :: density0, density1 |
| END TYPE field_type |
| |
| TYPE tile_type |
| TYPE(field_type) :: field |
| INTEGER :: tile_neighbours(4) |
| END TYPE tile_type |
| |
| TYPE chunk_type |
| INTEGER :: filler |
| TYPE(tile_type), DIMENSION(:), ALLOCATABLE :: tiles |
| END TYPE chunk_type |
| |
| end module test |
| |
| program reproducer |
| use test |
| implicit none |
| integer :: i, j |
| TYPE(chunk_type) :: chunk |
| |
| allocate(chunk%tiles(2)) |
| do i = 1, 2 |
| allocate(chunk%tiles(i)%field%density0(2, 2)) |
| allocate(chunk%tiles(i)%field%density1(2, 2)) |
| do j = 1, 4 |
| chunk%tiles(i)%tile_neighbours(j) = j * 10 |
| end do |
| end do |
| |
| !$omp target enter data map(alloc: & |
| !$omp chunk%tiles(2)%field%density0) |
| |
| !$omp target |
| chunk%tiles(2)%field%density0(1,1) = 25 |
| chunk%tiles(2)%field%density0(1,2) = 50 |
| chunk%tiles(2)%field%density0(2,1) = 75 |
| chunk%tiles(2)%field%density0(2,2) = 100 |
| !$omp end target |
| |
| !$omp target exit data map(from: & |
| !$omp chunk%tiles(2)%field%density0) |
| |
| if (chunk%tiles(2)%field%density0(1,1) /= 25) then |
| print*, "======= Test Failed! =======" |
| stop 1 |
| end if |
| |
| if (chunk%tiles(2)%field%density0(1,2) /= 50) then |
| print*, "======= Test Failed! =======" |
| stop 1 |
| end if |
| |
| if (chunk%tiles(2)%field%density0(2,1) /= 75) then |
| print*, "======= Test Failed! =======" |
| stop 1 |
| end if |
| |
| if (chunk%tiles(2)%field%density0(2,2) /= 100) then |
| print*, "======= Test Failed! =======" |
| stop 1 |
| end if |
| |
| do j = 1, 4 |
| if (chunk%tiles(2)%tile_neighbours(j) /= j * 10) then |
| print*, "======= Test Failed! =======" |
| stop 1 |
| end if |
| end do |
| |
| print *, "======= Test Passed! =======" |
| end program reproducer |
| |
| ! CHECK: "PluginInterface" device {{[0-9]+}} info: Launching kernel {{.*}} |
| ! CHECK: ======= Test Passed! ======= |