Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28457 Discussions

Why aren't libmmd.pdb and libmmdd.pdb part of the intel64 redistributables?

Mark_Lewy
Valued Contributor I
583 Views

The question is in the subject.  It seems this is deliberate because while there are ia32 versions of these pdb files in the redistributable folders for the compiler and in fredist.txt, the intel64 versions are missing.  This seems a bit perverse to me, as if I want to profile a program and find out which math library procedures are in hotspots, I have to profile a win32 build.

0 Kudos
8 Replies
Kevin_D_Intel
Employee
583 Views

What you found is deliberate. To summarize information from a (Feature Request) tracking id associated with providing only the PDBs for Win32, it says: Amplifier performs a stack walk to collect performance data. On Win32 this requires the PDB as unwinding information is encoded inside the PDB on Win32 only. For intel64 the unwind information required for profiling is available within the executable as defined by the standardized “X64 Software Conventions”.

For the intel64 executable, the unwind information can be viewed with:

dumpbin.exe /UNWINDINFO <executable>

0 Kudos
Mark_Lewy
Valued Contributor I
583 Views

Thanks Kevin,

I suppose the follow up then is why can't VTune Amplifier XE 2015 resolve a function name (from libmmd.lib) in a x64 build? I'll attach a couple of screenshots to demonstrate.

0 Kudos
Kevin_D_Intel
Employee
583 Views

Good question. Thank you for the screenshots. Let me see what I can find out.

0 Kudos
Mark_Lewy
Valued Contributor I
583 Views

Thanks again Kevin,

Just as a bit of a follow-up, I copy the redistributable files into my build output folder, so a clean removes any pdb files (like libiomp5md.pdb, the OpenMP library pdb).  So, profiling a program after a clean and build results in this:

Without libiomp5md.pdb:

Top Hotspots
Function    CPU Time
func@0x180053fb0    322.467s
SECTION_DATA_mp_SECTION_GET_K_AND_DKDH_CW    67.627s
CUBIC_EQUATION_mp_GEO_CUBIC_INTERPOLATE    57.419s
BS_LINK_ip_SET_INTERIOR    44.528s
_kmpc_barrier    37.731s
[Others]    592.879s

After re-resolving with libiomp5md.pdb copied back in:

Top Hotspots
Function    CPU Time
__kmp_fork_barrier    321.450s
SECTION_DATA_mp_SECTION_GET_K_AND_DKDH_CW    67.627s
CUBIC_EQUATION_mp_GEO_CUBIC_INTERPOLATE    57.419s
BS_LINK_ip_SET_INTERIOR    44.528s
_kmpc_barrier    37.731s
[Others]    593.896s

So, VTune can resolve some symbols (i.e _kmpc_barrier) from the unwinding information, but not all (i.e. __kmp_fork_barrier).  I've also noticed that some symbols in libmmd.dll are resolved (in my case, log, pow, sin, & acos).

Hope this helps,

Mark

0 Kudos
Kevin_D_Intel
Employee
583 Views

Thank you for the additional information, Mark. That's interesting and helpful. I created a reproducer this morning replicating your earlier findings also. I will keep you posted on what else I learn.

0 Kudos
Kevin_D_Intel
Employee
583 Views

I submitted the issue to our Math libraries Development team (see internal tracking id below) initially and will keep you updated about what I back regarding this.

(Internal tracking id: DPD200363624)

(Resolution Update on 02/27/2016): This defect is fixed in the Intel® Parallel Studio XE 2016 Update 2 Release (PSXE 2016.2.055/ CnL 2016.2.180 - Windows)

0 Kudos
Kevin_D_Intel
Employee
583 Views

The Math library Developers believe they can address this issue in the next IPS XE 2015 Update which tentatively scheduled for around February 2015. I will update again when I know more.

0 Kudos
Kevin_D_Intel
Employee
583 Views

Unfortunately the changes required to resolve the underlying issues were unable to be promoted to the PSXE 2015 release. Development was able to promote them to PSXE 2016 release and these are now included in the latest PSXE 2016 Update 2 release (PSXE 2016.2.055/ CnL 2016.2.180 - Windows)

0 Kudos
Reply