- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have been making a practice of setting -debug:inline-debug-info when building for Advisor. Today I noticed a case where Advisor 17 update 2 misses a vectorized loop in a C function called from Fortran (with all the events linked to the C prolog). This appears to be cured by building with /Qipo-. I don't expect any benefit from ipo (as opposed to ip), so this is a satisfactory method, if only it can be remembered. Qipo- appears to help with analysis of pure Fortran as well.
There are still some odd reports in Advisor summary, such as one which claims under-utilization of FMA but will not show me the assembly code so that I can see whether there is in fact a hot loop version without FMA. It is source code set up so as to keep FMA off the critical reduction path for the benefit of gfortran. The .asm file generated by ifort shows the expected pattern vmulpd vfmadd231pd vaddpd (for 2 steps of vectorized dot product), with riffling by 4, so it does accomplish my intent of reconciling some difference between ifort (typical riffle by 8) and gfortran (no riffle).
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Interesting. I put together a simple program with Fortran calling C, and even with IPO disabled I can't get information from the C function. I'll report this to engineering.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How long does your code run? Is it possible that the loop is being missed due to very little time in the loop?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As mentioned above, the sampling interval has to be reduced on account of short run time. Insufficient samples due to long sampling interval relative to run time are certainly likely to cause a function to be overlooked, possibly not repeatably.
The effect of attributing all events to the function preamble or caller has appeared in the past to be associated with interprocedural, including /Qip -debug without the :inline-debug-info qualifier. If you think it may appear also on account of insufficient samples, I'll take notice of that opinion.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page