- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>no interprocedural optimization for Fortran, interprocedural optimization for the Linker
Isn't this an oxymoron?
Meaning, in order for the Linker to perform interprocedural optimizations, the object modules must have the interprocedural annotations (meaning the Fortran file must have been compiled with multi-file IPO). The linker can still do IPO with library files also build with IPO. Possibly you are seeing this.
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'd like to see your .vfproj file as I think you are a bit confused as to what is being set. Whole program optimization (IPO) has two steps. First, it needs to be enabled on the compile step to generate intermediate code rather than object code. Then it has to also be enabled on the link step, so that the compiler runs again across all the intermediate code. In project settings, this is done in the Fortran property Optimization > Interprocedural Optimization > Whole Program (/Qipo). This tells the Fortran build system in VS to add /Qipo to the compile phase and then to run xilink (the Intel wrapper around link) to do the actual optimization. (In reality, xilink is always used.)
My guess is that one of your sources is still being built with /Qipo and the others are not, defeating the general usefulness of the option.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Most Fortrans offer inter-procedural optimizations within a single source file (or even a group of files in a single compilation), as well as link-time inter-procedural optimizations (which are meant sometimes by "whole-program"). The single file IP may be set by default to more aggressive in X64 as there may be less chance of running out of memory.
Aggressiveness of IP default settings varies also with compiler release and with certain other optimization settings.
single-file IP may be partial in-lining. If you can persuade ifort to do the symbols right with -debug:inline-debug-info, you can see how it is working in VTune.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's because the default project option is to disable optimization reports, but in the x64 configuration, that one file has /Qopt-report specified under "Additional Options" on the Fortran Command Line property page.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
nvaneck wrote:
...The original project settings I used set whole program, no interproc under Fortran...
Doesn't that mean you are asking "please may I have interprocedural optimisation" at the same time as asking "please don't do interprocedural optimisation"? Who wins?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Editing the project file is problematic.
In the Solution Explorer, Right-Click on the first project of interests (you may have multiple projects in your solution) and select Properties. Then select the configuration of interest (usually Debug is not IPO'd). On the Platform, select the platform of interest (Win32, x64, some other, All Platforms). Then pick the options you want. This will set the default options for all the files within the Project.
If you have special requirements for individual files, you can then subsequently modify the properties for that file alone (Solution Explorer, right-click on file, properties, enter properties for file). It is not unusual to compile Release build with full optimizations on all files except for the one file you wish to debug. When a file has options selected that differ from the Project settings, the VS Solution Explorer places a check mark on the file (indicating something differs from the default). And when you browse the properties of a file, the options that differ from the project default are highlighted with bold typeface.
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Don't use notepad! This was manually entered as a project property in VS. Right click on USTATS.F90 in Solution Explorer, select Properties. Go to Fortran > Command Line. Select the Release x64 configuration. Delete the text in the Additional Options field and click OK.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
This reminds me of wanting to look further into improvements in optimization reports in Compiler 15 (and 14). Can you please provide a quick primer on how to setup the "Optimization Diagnostics" section under Diagnostics under Fortran for projects in Visual Studio? Specifically, what are the suggested settings if one wants to output the report to a specific file for the whole project (say proja.optrept for project A). And when one wants file-specific reports (e.g., foo.optrep for foo.90 file, etc.). Last tried I didn't get very far and was running into problems, but then I didn't play around enough.
Thanks,
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page