Hi, I fully understand that mixing runtimes is very delicate, but I came across this reproducible issue where the compiler ended up crashing unexpectedly.
$ cat repro-mp.F90
MODULE repro_module
IMPLICIT NONE
REAL, DIMENSION(10) :: bar_1d
CONTAINS
SUBROUTINE baz_routine(n, array_1d)
!$acc routine seq
INTEGER, INTENT(in) :: n
REAL, DIMENSION(10), INTENT(inout) :: array_1d
INTEGER :: i
DO i = 1, n
array_1d(i) = i
END DO
END SUBROUTINE baz_routine
SUBROUTINE foo(n)
INTEGER, INTENT(in) :: n
!$acc kernels
CALL baz_routine(n, bar_1d)
!$acc end kernels
END SUBROUTINE foo
END MODULE repro_module
PROGRAM dummy
END PROGRAM
$ nvfortran repro-mp.F90 -O1 -o repro-mp -Minfo=accel -acc=gpu -mp=gpu
baz_routine:
7, Generating acc routine seq
Generating NVIDIA GPU code
nvfortran-Fatal-/path/to/compilers/bin/tools/fort2 TERMINATED by signal 11
$ nvfortran --version
nvfortran 25.3-0 64-bit target on x86-64 Linux -tp sapphirerapids
For some reason, introducing the device routine creates such a conflict, since I have not seen another case where mixing runtimes causes such crashes.