Hi! On 2025-05-12T17:03:29+0200, I wrote: > "Add effective-target 'offload_device_usm', > 'libgomp.c-c++-common/target-usm-1.c'"
On top, we could then add the attached "libgomp: Add a few more OpenMP/USM test cases"? These all PASS for GCN gfx90a with 'HSA_XNACK=1'. Grüße Thomas
>From 8c0404527575fc4fae81190376b6b6ef748fc6a5 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge <tschwi...@baylibre.com> Date: Fri, 9 May 2025 15:09:51 +0200 Subject: [PATCH] libgomp: Add a few more OpenMP/USM test cases ... where there are already clear differences in havior for USM run-time configurations. libgomp/ * testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c: New. * testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c: Likewise. * testsuite/libgomp.c-c++-common/struct-elem-5-usm.c: Likewise. * testsuite/libgomp.c-c++-common/target-present-1-usm.c: Likewise. * testsuite/libgomp.c-c++-common/target-present-2-usm.c: Likewise. * testsuite/libgomp.c-c++-common/target-present-3-usm.c: Likewise. * testsuite/libgomp.fortran/map-subarray-5-usm.f90: Likewise. * testsuite/libgomp.fortran/map-subarray-6-usm.f90: Likewise. * testsuite/libgomp.fortran/map-subarray-7-usm.f90: Likewise. * testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90: Likewise. * testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90: Likewise. * testsuite/libgomp.fortran/target-enter-data-2-usm.F90: Likewise. * testsuite/libgomp.fortran/target-present-1-usm.f90: Likewise. * testsuite/libgomp.fortran/target-present-2-usm.f90: Likewise. * testsuite/libgomp.fortran/target-present-3-usm.f90: Likewise. * testsuite/libgomp.fortran/target-allocatable-1-1.f90: Adjust. * testsuite/libgomp.fortran/target-allocatable-1-2.f90: Likewise. * testsuite/libgomp.fortran/target-present-1.f90: Likewise. * testsuite/libgomp.fortran/target-present-2.f90: Likewise. * testsuite/libgomp.fortran/target-present-3.f90: Likewise. --- .../libgomp.c-c++-common/map-arrayofstruct-2-usm.c | 7 +++++++ .../libgomp.c-c++-common/map-arrayofstruct-3-usm.c | 7 +++++++ libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c | 7 +++++++ .../testsuite/libgomp.c-c++-common/target-present-1-usm.c | 7 +++++++ .../testsuite/libgomp.c-c++-common/target-present-2-usm.c | 7 +++++++ .../testsuite/libgomp.c-c++-common/target-present-3-usm.c | 7 +++++++ libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 | 7 +++++++ libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 | 7 +++++++ libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 | 7 +++++++ .../libgomp.fortran/target-allocatable-1-1-usm.f90 | 6 ++++++ .../testsuite/libgomp.fortran/target-allocatable-1-1.f90 | 4 ++++ .../libgomp.fortran/target-allocatable-1-2-usm.f90 | 6 ++++++ .../testsuite/libgomp.fortran/target-allocatable-1-2.f90 | 4 ++++ .../testsuite/libgomp.fortran/target-enter-data-2-usm.F90 | 6 ++++++ libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 | 7 +++++++ libgomp/testsuite/libgomp.fortran/target-present-1.f90 | 6 ++++++ libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 | 7 +++++++ libgomp/testsuite/libgomp.fortran/target-present-2.f90 | 6 ++++++ libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 | 7 +++++++ libgomp/testsuite/libgomp.fortran/target-present-3.f90 | 6 ++++++ 20 files changed, 128 insertions(+) create mode 100644 libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c create mode 100644 libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 create mode 100644 libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c new file mode 100644 index 00000000000..e0ee5712d93 --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-2-usm.c @@ -0,0 +1,7 @@ +/* { dg-skip-if {} { ! offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "map-arrayofstruct-2.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c new file mode 100644 index 00000000000..c6f33f009b6 --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/map-arrayofstruct-3-usm.c @@ -0,0 +1,7 @@ +/* { dg-skip-if {} { ! offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "map-arrayofstruct-3.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c new file mode 100644 index 00000000000..7a124e438c3 --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/struct-elem-5-usm.c @@ -0,0 +1,7 @@ +/* { dg-do run { target offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "struct-elem-5.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c new file mode 100644 index 00000000000..68ff786e8ae --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-1-usm.c @@ -0,0 +1,7 @@ +/* { dg-skip-if {} { ! offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "target-present-1.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c new file mode 100644 index 00000000000..f600289dc03 --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-2-usm.c @@ -0,0 +1,7 @@ +/* { dg-skip-if {} { ! offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "target-present-2.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c new file mode 100644 index 00000000000..df672d92b7d --- /dev/null +++ b/libgomp/testsuite/libgomp.c-c++-common/target-present-3-usm.c @@ -0,0 +1,7 @@ +/* { dg-skip-if {} { ! offload_device_usm } } */ + +#pragma omp requires unified_shared_memory + +#include "target-present-3.c" + +/* No 'dg-shouldfail'. */ diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 new file mode 100644 index 00000000000..841abd126c0 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/map-subarray-5-usm.f90 @@ -0,0 +1,7 @@ +! { dg-do run { target offload_device_usm } } + +!$omp requires unified_shared_memory + +include 'map-subarray-5.f90' + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 new file mode 100644 index 00000000000..a1ae027f585 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/map-subarray-6-usm.f90 @@ -0,0 +1,7 @@ +! { dg-do run { target offload_device_usm } } + +!$omp requires unified_shared_memory + +include 'map-subarray-6.f90' + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 new file mode 100644 index 00000000000..537684e47ff --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/map-subarray-7-usm.f90 @@ -0,0 +1,7 @@ +! { dg-skip-if {} { ! offload_device_usm } } + +!$omp requires unified_shared_memory + +include 'map-subarray-7.f90' + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90 new file mode 100644 index 00000000000..5a59ec65feb --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1-usm.f90 @@ -0,0 +1,6 @@ +! { dg-do run { target offload_device_usm } } +! { dg-additional-options "-cpp" } +! { dg-additional-options "-DOMP_R_USM" } +! { dg-additional-options "-DMEM_SHARED" } + +#include "target-allocatable-1-1.f90" diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90 index 429a855a20b..631259402d7 100644 --- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90 +++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90 @@ -8,6 +8,10 @@ program main implicit none +#ifdef OMP_R_USM + !$omp requires unified_shared_memory +#endif + integer, allocatable :: a, b, c, d, e allocate (a) diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90 new file mode 100644 index 00000000000..a8fb54f440e --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2-usm.f90 @@ -0,0 +1,6 @@ +! { dg-do run { target offload_device_usm } } +! { dg-additional-options "-cpp" } +! { dg-additional-options "-DOMP_R_USM" } +! { dg-additional-options "-DMEM_SHARED" } + +#include "target-allocatable-1-2.f90" diff --git a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90 b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90 index 5301c8eeffb..be8fb4f4d90 100644 --- a/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90 +++ b/libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90 @@ -8,6 +8,10 @@ ! { dg-additional-options "-DMEM_SHARED" { target offload_device_shared_as } } module m +#ifdef OMP_R_USM + !$omp requires unified_shared_memory +#endif + contains subroutine r (a, b, c, d, e) implicit none diff --git a/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90 b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90 new file mode 100644 index 00000000000..53daf3736e4 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-enter-data-2-usm.F90 @@ -0,0 +1,6 @@ +! { dg-additional-options "-DMEM_SHARED" } +! { dg-do run { target offload_device_usm } } + +!$omp requires unified_shared_memory + +#include "target-enter-data-2.F90" diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 new file mode 100644 index 00000000000..d3f54b7f2d9 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-present-1-usm.f90 @@ -0,0 +1,7 @@ +! { dg-skip-if {} { ! offload_device_usm } } +! { dg-additional-options -cpp } +! { dg-additional-options -DOMP_R_USM } + +#include "target-present-1.f90" + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/target-present-1.f90 b/libgomp/testsuite/libgomp.fortran/target-present-1.f90 index fc13609d528..d09861b7019 100644 --- a/libgomp/testsuite/libgomp.fortran/target-present-1.f90 +++ b/libgomp/testsuite/libgomp.fortran/target-present-1.f90 @@ -1,5 +1,11 @@ +! { dg-additional-options -cpp } + program main implicit none +#ifdef OMP_R_USM + !$omp requires unified_shared_memory +#endif + integer, parameter :: N = 100 integer :: a(N), b(N), c(N), i diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 new file mode 100644 index 00000000000..9d36a6bab4d --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-present-2-usm.f90 @@ -0,0 +1,7 @@ +! { dg-skip-if {} { ! offload_device_usm } } +! { dg-additional-options -cpp } +! { dg-additional-options -DOMP_R_USM } + +#include "target-present-2.f90" + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/target-present-2.f90 b/libgomp/testsuite/libgomp.fortran/target-present-2.f90 index 524d01d9465..e8f0a12ee82 100644 --- a/libgomp/testsuite/libgomp.fortran/target-present-2.f90 +++ b/libgomp/testsuite/libgomp.fortran/target-present-2.f90 @@ -1,5 +1,11 @@ +! { dg-additional-options -cpp } + program main implicit none +#ifdef OMP_R_USM + !$omp requires unified_shared_memory +#endif + integer, parameter :: N = 100 integer :: a(N), b(N), c(N), i diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 new file mode 100644 index 00000000000..4015f974556 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/target-present-3-usm.f90 @@ -0,0 +1,7 @@ +! { dg-skip-if {} { ! offload_device_usm } } +! { dg-additional-options -cpp } +! { dg-additional-options -DOMP_R_USM } + +#include "target-present-3.f90" + +! No 'dg-shouldfail'. diff --git a/libgomp/testsuite/libgomp.fortran/target-present-3.f90 b/libgomp/testsuite/libgomp.fortran/target-present-3.f90 index dd4af4c1651..1c48a4ca1f6 100644 --- a/libgomp/testsuite/libgomp.fortran/target-present-3.f90 +++ b/libgomp/testsuite/libgomp.fortran/target-present-3.f90 @@ -1,5 +1,11 @@ +! { dg-additional-options -cpp } + program main implicit none +#ifdef OMP_R_USM + !$omp requires unified_shared_memory +#endif + integer, parameter :: N = 100 integer :: a(N), b(N), c(N), i -- 2.34.1