https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95150
Chinoune <mehdi.chinoune at hotmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |WONTFIX --- Comment #8 from Chinoune <mehdi.chinoune at hotmail dot com> --- Adding "parallel do" to openmp directive solves the problem. The crash reappears with "collapse(2)" with both OpenMP and OpenACC. program main implicit none integer, parameter :: sp = selected_real_kind(6,37) real(sp), allocatable :: a(:,:), b(:,:), c(:,:) character( len=5 ) :: val integer :: n, l, m integer :: i, j, k integer :: t1, t2 real(sp) :: tic ! call get_command_argument( 1, val ) read( val, *) n l = n m = n ! call system_clock( t1, tic) ! allocate( a(l,m), b(m,n), c(l,n) ) ! call random_number(a) call random_number(b) c = 0._sp ! !$acc data copyin(a,b) copy(c) !$acc parallel loop collapse(3) !$omp target teams distribute parallel do collapse(3) map( to:a,b ) map( tofrom:c ) do j = 1, n do k = 1, m do i = 1, l c(i,j) = a(i,k)*b(k,j) + c(i,j) end do end do end do !$acc end data ! call system_clock(t2) print*, n, (t2-t1)/tic, sum(c) ! end program main $ gfortran -O3 -fopenmp -foffload=nvptx-none matmul.f90 -o test.x $ for i in {1..5}; do ./test.x $((512*2**$i)); done 1024 0.287999988 268377424. 2048 7.40000010E-02 0.00000000 4096 0.170000002 0.00000000 8192 0.574000001 0.00000000 16384 2.10400009 0.00000000