[flang-commits] [flang] [flang][openacc] Ignore bare acc routine in module subprogram part instead of erroring out (PR #205450)
Ron Green [NVIDIA] via flang-commits
flang-commits at lists.llvm.org
Wed Jun 24 11:47:09 PDT 2026
ronGreenNV wrote:
Valentin, what happens if there are more than 1 module procedures? In NV the ROUTINE directive seems to create acc routines for all CONTAINed procedures:
`$ nvfortran -acc=gpu -Minfo=accel -g -fast test2.f90
acc_routine1:
4, Generating implicit acc routine seq
Generating implicit acc routine seq
Generating NVIDIA GPU code
acc_routine2:
8, Generating implicit acc routine seq
Generating implicit acc routine seq
Generating NVIDIA GPU code
testem:
19, Generating copyout(arg) [if not already present]
Generating NVIDIA GPU code
20, !$acc loop gang ! blockidx%x
rogreen at sky6:~/quad/llvm205450$
rogreen at sky6:~/quad/llvm205450$
rogreen at sky6:~/quad/llvm205450$ cat test2.f90
module acc_routine_bad
contains
!$acc routine
subroutine acc_routine1(arg)
integer, intent(inout) :: arg
arg = 1
end subroutine
subroutine acc_routine2(arg)
integer, intent(inout) :: arg
arg = 2
end subroutine
end module
program testem
use acc_routine_bad
implicit none
integer :: i,arg
!$acc parallel loop copyout(arg)
do i=1,2
call acc_routine1(arg)
call acc_routine2(arg)
end do
print*, "arg ", arg
end program testem
rogreen at sky6:~/quad/llvm205450$ nvfortran -acc=gpu -Minfo=accel -g -fast test2.f90
acc_routine1:
4, Generating implicit acc routine seq
Generating implicit acc routine seq
Generating NVIDIA GPU code
acc_routine2:
8, Generating implicit acc routine seq
Generating implicit acc routine seq
Generating NVIDIA GPU code
testem:
19, Generating copyout(arg) [if not already present]
Generating NVIDIA GPU code
20, !$acc loop gang ! blockidx%x
rogreen at sky6:~/quad/llvm205450$ ./a.out
arg 2
`
https://github.com/llvm/llvm-project/pull/205450
More information about the flang-commits
mailing list