Fortran pgi: How can I remove uploads and downloads of compiler generated variables tmp$?
I’ll need to ask for more information to better help.
I’m assuming by “uploads and downloads”, you’re meaning data transfers between the host and device when using OpenACC, OpenMP or CUDA Fortran?
Also, are the “tmp” variables array descriptors? The compiler does need to update these in some cases, especially when passing global assumed-shape arrays to subroutines.
If not, can you please provide a reproducing example of the behavior you’re seeing?
Yes, I mean data transfers between the host and device when using Fortran OpenACC.
I don’t know if the “tmp” are variables array descriptors. From the following output using “setenv PGI_ACC_NOTIFY 3” can you tell?
Here is one of many lines output:
upload CUDA data file=/scratch2/BMC/gsd-hpcs/Jacques.Middlecoff/SENAphysics/SENA-gf/ref/src/cu_gf_deep.F90 function=cup_up_moisture line=4417 device=0 threadid=1 variable=tmp$r$sd1635 bytes=128
“$sd” stands for “section descriptor”, so yes, it’s an array descriptor. The compiler does try to minimize updating descriptors, but it may need to if they may have changed.