I am compiling a code which has the following lines.
!$acc parallel loop &
!$acc present(ugrad_sol_tmp, mesh%xr, mesh%xs, mesh%yr, mesh%ys)
do k = 1, chunksize
do i = 1, Nvar
do j = 1, Np
ur_solution(j, i) = ugrad_sol_tmp(j, (k-1)*Nvar+i)
us_solution(j, i) = ugrad_sol_tmp(Np+j, (k-1)*Nvar+i)
end do
end do
do i = 1, Np
Js(i) = ONE/( mesh%xr(i, (index-1)*chunksize+k)*mesh%ys(i, (index-1)*chunksize+k) &
- mesh%xs(i, (index-1)*chunksize+k)*mesh%yr(i, (index-1)*chunksize+k) )
rx_solution(i) = mesh%ys(i, (index-1)*chunksize+k)*Js(i)
ry_solution(i) = -mesh%xs(i, (index-1)*chunksize+k)*Js(i)
sx_solution(i) = -mesh%yr(i, (index-1)*chunksize+k)*Js(i)
sy_solution(i) = mesh%xr(i, (index-1)*chunksize+k)*Js(i)
end do
do var = 1, Nvar
do i = 1, Np
mesh%ux(i, var, (index-1)*chunksize+k) = rx_solution(i)*ur_solution(i, var) &
+ sx_solution(i)*us_solution(i, var)
mesh%uy(i, var, (index-1)*chunksize+k) = ry_solution(i)*ur_solution(i, var) &
+ sy_solution(i)*us_solution(i, var)
end do
end do
end do
!$acc end parallel loop
This compiles and runs. Now all I do is take the last loop out and put in a separate loop.
!$acc parallel loop &
!$acc present(ugrad_sol_tmp, mesh%xr, mesh%xs, mesh%yr, mesh%ys)
do k = 1, chunksize
do i = 1, Nvar
do j = 1, Np
ur_solution(j, i) = ugrad_sol_tmp(j, (k-1)*Nvar+i)
us_solution(j, i) = ugrad_sol_tmp(Np+j, (k-1)*Nvar+i)
end do
end do
do i = 1, Np
Js(i) = ONE/( mesh%xr(i, (index-1)*chunksize+k)*mesh%ys(i, (index-1)*chunksize+k) &
- mesh%xs(i, (index-1)*chunksize+k)*mesh%yr(i, (index-1)*chunksize+k) )
rx_solution(i) = mesh%ys(i, (index-1)*chunksize+k)*Js(i)
ry_solution(i) = -mesh%xs(i, (index-1)*chunksize+k)*Js(i)
sx_solution(i) = -mesh%yr(i, (index-1)*chunksize+k)*Js(i)
sy_solution(i) = mesh%xr(i, (index-1)*chunksize+k)*Js(i)
end do
end do
!$acc end parallel loop
!$acc parallel loop
do k = 1, chunksize
do var = 1, Nvar
do i = 1, Np
mesh%ux(i, var, (index-1)*chunksize+k) = rx_solution(i)*ur_solution(i, var) &
+ sx_solution(i)*us_solution(i, var)
mesh%uy(i, var, (index-1)*chunksize+k) = ry_solution(i)*ur_solution(i, var) &
+ sy_solution(i)*us_solution(i, var)
end do
end do
end do
!$acc end parallel
and I get the following error message.
pgfortran-Fatal-/usr/local/pgi/linux86-64/15.10/bin/pgf902 TERMINATED by signal 11
Arguments to /usr/local/pgi/linux86-64/15.10/bin/pgf902
/usr/local/pgi/linux86-64/15.10/bin/pgf902 /tmp/pgfortranoBTQNPQHRY4.ilm -fn /examples/CNS/shocktube/../../..//src/libfr.f90 -debug -x 120 0x200 -x 123 0x400 -opt 2 -terse 1 -inform warn -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -x 117 0x1000 -quad -vect 56 -y 34 16 -x 34 0x8 -x 32 8388608 -y 19 8 -y 35 0 -x 42 0x30 -x 39 0x40 -x 199 10 -x 39 0x80 -x 34 0x400000 -x 149 1 -x 150 1 -x 59 4 -tp haswell -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -x 120 0x200 -astype 0 -x 121 1 -x 70 0x40000000 -x 124 1 -accel tesla -x 186 0x80000 -x 180 0x400 -x 180 0x4000000 -x 121 0xc00 -x 194 0x40000 -x 163 0x1 -x 186 0x80000 -x 180 0x400 -x 180 0x4000000 -cudaver 7.5 -x 121 0xc00 -x 194 0x40000 -x 176 0x100 -cudacap 30 -x 189 0x8000 -y 163 0xc0000000 -x 163 0x800000 -x 189 0x10 -y 189 0x4000000 -x 198 0x40000 -x 9 1 -x 42 0x14200000 -x 72 0x1 -x 136 0x11 -quad -x 119 0x10000000 -x 129 0x40000000 -x 129 2 -x 164 0x1000 -x 9 1 -x 72 0x1 -x 136 0x11 -quad -x 119 0x10000000 -x 129 0x40000000 -x 164 0x1000 -x 0 0x1000000 -x 2 0x100000 -x 0 0x2000000 -x 161 16384 -x 162 16384 -cmdline '+pgfortran /examples/CNS/shocktube/../../..//src/libfr.f90 -module t/Linux.pgi.atlas/m -It/Linux.pgi.atlas/m -fast -Mvect=sse -Mcache_align -Mflushz -Mpre -gopt -O2 -Mvect=sse -Mcache_align -Mpre -acc -Minfo=accel -ta=tesla:cc30 -I/usr/local/SILO/include -I/usr/local/hdf5-pgi/include -Mpreprocess -DNOCUDA -c -o t/Linux.pgi.atlas/o/libfr.o' -asm /tmp/pgfortranoBTQyQW8yXE.sm
I don’t understand it.