pgprof and Mpfi/Mpfo Confusion

I’m trying to profile some code I’ve been relooping into one giant outer loop using pgcollect. Following the benchADM example, I first compiled with (showing first file, driver.f90 and link stage use same options):

pgfortran -fast -Kieee -r4 -Mextend -Mpreprocess -Ktrap=fp -Minfo=ccff -Mpfi -c src/sorad.allreloop.f
...

I then ran the code which generated pgfi.out, and I then compiled with:

pgfortran -fast -Kieee -r4 -Mextend -Mpreprocess -Ktrap=fp -Minfo=ccff -Mpfo -c src/sorad.allreloop.f
...

and finally ran the code under pgcollect. After doing so, I go in and I see with the first main, big loop (that surrounds all the code):

4.  Intensity = [symbolic], and not printable, try the -Mpfi -Mpfo options

So, I’m guessing I didn’t use the Mpfi/Mpfo options correctly. What is the correct sequence of running, the correct flags, &c., that I should use? Or, will profiling always “skip” the first, overarching loop like this? I do see compute intensity for the interior loops, I was just hoping to get a number for the big loop.

Hi Matt,

I think you’re doing everything correct. The profiling may not always determine the intensity. Most likely in your case, the intensity formula may be too complex or if one of the variable’s value could not be determined. While I don’t think it’s relevant here, but I also see this when the code in question was never executed.

  • Mat