Hi,
I have observed a very strange behavior when replacing two do loops with a forall statement
program strange_forall
real, dimension(3,3,3,3) :: C,dS_dFe,dS_dFe2
real, dimension(3,3) :: Fi, Fe
integer :: i, j
call random_number(C)
call random_number(Fe)
call random_number(Fi)
do i=1, 3; do j =1,3
dS_dFe(i,j,1:3,1:3) = matmul(Fe,matmul(matmul(Fi,C(i,j,1:3,1:3)),transpose(Fi)))
enddo;enddo
forall(i=1:3,j=1:3) &
dS_dFe2(i,j,1:3,1:3) = matmul(Fe,matmul(matmul(Fi,C(i,j,1:3,1:3)),transpose(Fi)))
print*, dS_dFe - dS_dFe2
end program
I don’t see what is wrong here, but I would expect to get the same results in ‘dS_dFe’ and ‘dS_dFe2’.
I am running PGI community edition 18.10 on Ubuntu 18.04