I've posted this on optimization forum, but may be this is the best place to post. Sorry for this copy.
I'm using Fortran compiler from intel and I'm getting performance issues when I use global variables (arrays). Basically, I have a four dimension array, and a loop processing all of its elements. When I pass these array as a parameter for the subroutine, I have an execution time. When I use it directly inside the routine as a global variable, the execution time is the double from previous one. I'm guessing the compiler disables some optimizations when I use a global variable. Is it the case? If yes, how can I enable it again? If no, does anyone have any idea why this slow down?
The arrays are declared on a global module like this:
real, allocatable, target :: ux(:,:,:,:), uy(:,:,:,:)
And allocated with:
allocate(ux(nmin1-4:nmax1+4+u_pad, nmin2-4:nmax2+4, nmin3-4:nmax3+4,-1:3))
Any idea what is happening?