Hi Tom! On 2022-04-01T13:24:40+0200, Tom de Vries <tdevr...@suse.de> wrote: > When running testcases libgomp.fortran/examples-4/declare_target-{1,2}.f90 on > an RTX A2000 (sm_86) with driver 510.60.02 and with GOMP_NVPTX_JIT=-O0 I run > into: > ... > FAIL: libgomp.fortran/examples-4/declare_target-1.f90 -O0 \ > -DGOMP_NVPTX_JIT=-O0 execution test > FAIL: libgomp.fortran/examples-4/declare_target-2.f90 -O0 \ > -DGOMP_NVPTX_JIT=-O0 execution test > ... > > Fix this by further limiting recursion depth in the test-cases for nvptx. > > Furthermore, make the recursion depth limiting nvptx-specific.
Careful: > --- a/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90 > +++ b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90 > @@ -1,4 +1,16 @@ > ! { dg-do run } > +! { dg-additional-options "-cpp" } > +! Reduced from 25 to 23, otherwise execution runs out of thread stack on > +! Nvidia Titan V. > +! Reduced from 23 to 22, otherwise execution runs out of thread stack on > +! Nvidia T400 (2GB variant), when run with GOMP_NVPTX_JIT=-O0. > +! Reduced from 22 to 20, otherwise execution runs out of thread stack on > +! Nvidia RTX A2000 (6GB variant), when run with GOMP_NVPTX_JIT=-O0. > +! { dg-additional-options "-DREC_DEPTH=20" { target { offload_target_nvptx } > } } */ 'offload_target_nvptx' doesn't mean that offloading execution is done on nvptx, but rather that we're "*compiling* for offload target nvptx" (emphasis mine). That means, with such a change we're now getting different behavior in a system with an AMD GPU, when using a toolchain that only has GCN offloading configured vs. a toolchain that has GCN and nvptx offloading configured. This isn't going to cause any real problems, of course, but it's confusing, and a bad example of 'offload_target_nvptx'. 'offload_device_nvptx' ought to work: "using nvptx offload device". But again, to keep things simple, I again suggest to unconditionally reduce the recursion depth for all configurations, unless there exists an actual rationale for the original value. Grüße Thomas > + > +#ifndef REC_DEPTH > +#define REC_DEPTH 25 > +#endif > > module e_53_1_mod > integer :: THRESHOLD = 20 > @@ -27,9 +39,5 @@ end module > program e_53_1 > use e_53_1_mod, only : fib, fib_wrapper > if (fib (15) /= fib_wrapper (15)) stop 1 > - ! Reduced from 25 to 23, otherwise execution runs out of thread stack on > - ! Nvidia Titan V. > - ! Reduced from 23 to 22, otherwise execution runs out of thread stack on > - ! Nvidia T400 (2GB variant), when run with GOMP_NVPTX_JIT=-O0. > - if (fib (22) /= fib_wrapper (22)) stop 2 > + if (fib (REC_DEPTH) /= fib_wrapper (REC_DEPTH)) stop 2 > end program > --- a/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90 > +++ b/libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90 > @@ -1,16 +1,24 @@ > ! { dg-do run } > +! { dg-additional-options "-cpp" } > +! Reduced from 25 to 23, otherwise execution runs out of thread stack on > +! Nvidia Titan V. > +! Reduced from 23 to 22, otherwise execution runs out of thread stack on > +! Nvidia T400 (2GB variant), when run with GOMP_NVPTX_JIT=-O0. > +! Reduced from 22 to 18, otherwise execution runs out of thread stack on > +! Nvidia RTX A2000 (6GB variant), when run with GOMP_NVPTX_JIT=-O0. > +! { dg-additional-options "-DREC_DEPTH=18" { target { offload_target_nvptx } > } } */ > + > +#ifndef REC_DEPTH > +#define REC_DEPTH 25 > +#endif > > program e_53_2 > !$omp declare target (fib) > integer :: x, fib > !$omp target map(from: x) > - ! Reduced from 25 to 23, otherwise execution runs out of thread stack on > - ! Nvidia Titan V. > - ! Reduced from 23 to 22, otherwise execution runs out of thread stack on > - ! Nvidia T400 (2GB variant), when run with GOMP_NVPTX_JIT=-O0. > - x = fib (22) > + x = fib (REC_DEPTH) > !$omp end target > - if (x /= fib (22)) stop 1 > + if (x /= fib (REC_DEPTH)) stop 1 > end program > > integer recursive function fib (n) result (f) ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955