- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Link kopiert
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
>>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
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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.
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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.
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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.
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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?
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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.
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
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,

- RSS-Feed abonnieren
- Thema als neu kennzeichnen
- Thema als gelesen kennzeichnen
- Diesen Thema für aktuellen Benutzer floaten
- Lesezeichen
- Abonnieren
- Drucker-Anzeigeseite