<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic I have asked the developers in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096505#M125645</link>
    <description>&lt;P&gt;I have asked the developers for an update - hadn't seen anything yet.&lt;/P&gt;</description>
    <pubDate>Mon, 11 Apr 2016 14:55:07 GMT</pubDate>
    <dc:creator>Steven_L_Intel1</dc:creator>
    <dc:date>2016-04-11T14:55:07Z</dc:date>
    <item>
      <title>Unusually long -O3 optimized compile time on specific code</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096498#M125638</link>
      <description>&lt;P&gt;Dear Intel community,&lt;/P&gt;

&lt;P&gt;below is an example program which takes unusually long time to be compiled with "-O3" optimization (up to -O2 is fine), tested with ifort versions 14.0.3 and 15.0.3. This might be a compiler issue.&amp;nbsp;&lt;BR /&gt;
	(But I don't know what is going on. Mabye the compiler is really doing something very sophisticated and the long compile-time is justified).&lt;/P&gt;

&lt;P&gt;[fortran]&lt;BR /&gt;
	program p&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Compound type with alloc. components&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type :: a_type&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end type&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type :: b_type&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! The more fields, the longer takes -O3 compiling.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer, allocatable :: &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i00,i01,i02,i03,i04,i05,i06,i07,i08,i09, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i10,i11,i12,i13,i14,i15,i16,i17,i18,i19, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i20,i21,i22,i23,i24,i25,i26,i27,i28,i29, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i30,i31,i32,i33,i34,i35,i36,i37,i38,i39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; class(a_type), allocatable :: &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a00,a01,a02,a03,a04,a05,a06,a07,a08,a09, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a10,a11,a12,a13,a14,a15,a16,a17,a18,a19, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a20,a21,a22,a23,a24,a25,a26,a27,a28,a29, &amp;amp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a30,a31,a32,a33,a34,a35,a36,a37,a38,a39&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end type&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type(b_type), allocatable :: b&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Switch, undetermined at compile-time&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logical :: switch&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Allocate anything (doesn't have to, but can, be b)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer, allocatable :: i&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; allocate(i)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Deallocate compound type&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; deallocate(b)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Specific repeated conditional loop structure&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read (*,*) switch&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (switch) then&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! any do-loop&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (switch) then&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! any do-loop&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end do&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if&lt;/P&gt;

&lt;P&gt;end program&lt;BR /&gt;
	[/fortran]&lt;/P&gt;

&lt;P&gt;Usually, changing the order of statements does not change the compile-time delay. However, after changing the code in any other way the reported delay is gone (e.g. removing one loop, removing the switch, removing the allocation, removing the allocatable-attribute, changing the class keyword to type, or removing entirely one of the fields in b_type) .&lt;/P&gt;

&lt;P&gt;I post this issue only out of curiosity and for your information. For me, it is sufficient to use -O2 optimization on the affected code.&lt;/P&gt;

&lt;P&gt;With regards&lt;BR /&gt;
	Ferdinand&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 11:39:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096498#M125638</guid>
      <dc:creator>Ferdinand_T_</dc:creator>
      <dc:date>2016-03-03T11:39:36Z</dc:date>
    </item>
    <item>
      <title>I suspect the compiler is</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096499#M125639</link>
      <description>&lt;P&gt;I suspect the compiler is caught in a quandary of if it is safe to remove the dead code referring to b. b is declared, but not allocated, and the only reference is deallocate(b).&lt;/P&gt;

&lt;P&gt;Did you see this behavior with real code?&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 13:58:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096499#M125639</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2016-03-03T13:58:19Z</dc:date>
    </item>
    <item>
      <title>I can reproduce an extended</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096500#M125640</link>
      <description>&lt;P&gt;I can reproduce an extended compile time with 16.0.2, and will look into this some more.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 15:57:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096500#M125640</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-03-03T15:57:25Z</dc:date>
    </item>
    <item>
      <title>Escalated as issue</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096501#M125641</link>
      <description>&lt;P&gt;Escalated as issue&amp;nbsp;DPD200407723. Looking at some output from a debug compiler build, it doesn't look to me as if the delay is in an actual optimization step but rather some setup for it. I will let you know what the developers tell me.&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 16:21:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096501#M125641</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-03-03T16:21:05Z</dc:date>
    </item>
    <item>
      <title>@Steve Lionel</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096502#M125642</link>
      <description>&lt;P&gt;@Steve Lionel&lt;BR /&gt;
	Thank you. I am always interested in what is going on behind the scenes!&lt;/P&gt;

&lt;P&gt;@Jim Dempsey&lt;BR /&gt;
	&lt;/P&gt;&lt;BLOCKQUOTE&gt;jimdempseyatthecove wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;Did you see this behavior with real code?&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;Yes. The compilation-time jumped from several minutes to beyond hours (I terminated it and first thought the compiler crashed entirely) when I added a command-line argument (the undetermined "switch") to optionally skip certain computations (the do-loops). The allocations where hidden in unrelated modules. It took me a while to boil the code down to the example given, bringing all these specific ingredients together in just the right combination. Which is also why your question made me wonder how else - if not by pure accident in actual code - one could come up with such an uncommon program triggering such unexpected behaviour?&lt;/P&gt;

&lt;P&gt;Ferdinand&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 18:07:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096502#M125642</guid>
      <dc:creator>Ferdinand_T_</dc:creator>
      <dc:date>2016-03-03T18:07:00Z</dc:date>
    </item>
    <item>
      <title>Quote:jimdempseyatthecove</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096503#M125643</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;jimdempseyatthecove wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;I suspect the compiler is caught in a quandary of if it is safe to remove the dead code referring to b. b is declared, but not allocated, and the only reference is deallocate(b).&lt;/P&gt;

&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;

&lt;P&gt;I might add that the delay occurs also on a single allocation (no deallocations at all) using a structure constructor&lt;/P&gt;

&lt;P&gt;[fortran]&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! ...&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Allocate anything (doesn't have to, but can, be b)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; allocate(b, source=b_type())&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Specific repeated conditional loop structure&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! ...&lt;/P&gt;

&lt;P&gt;[/fortran]&lt;/P&gt;</description>
      <pubDate>Thu, 03 Mar 2016 18:19:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096503#M125643</guid>
      <dc:creator>Ferdinand_T_</dc:creator>
      <dc:date>2016-03-03T18:19:18Z</dc:date>
    </item>
    <item>
      <title>Hi all,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096504#M125644</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;

&lt;P&gt;Is there any update on the the unusual long compilation ?&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I have my Fortran application compiled with Version 14.0.230.144 and Version 16.0.0.109, where in the latter case I have aborted the compilation after 30 min! (suspected it could go for hours ...).&lt;/P&gt;

&lt;P&gt;Thank you,&lt;/P&gt;

&lt;P&gt;Jack.&lt;/P&gt;</description>
      <pubDate>Sat, 09 Apr 2016 11:35:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096504#M125644</guid>
      <dc:creator>Jack_S_</dc:creator>
      <dc:date>2016-04-09T11:35:17Z</dc:date>
    </item>
    <item>
      <title>I have asked the developers</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096505#M125645</link>
      <description>&lt;P&gt;I have asked the developers for an update - hadn't seen anything yet.&lt;/P&gt;</description>
      <pubDate>Mon, 11 Apr 2016 14:55:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096505#M125645</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-04-11T14:55:07Z</dc:date>
    </item>
    <item>
      <title>Hi Steve,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096506#M125646</link>
      <description>&lt;P&gt;Hi Steve,&lt;/P&gt;

&lt;P&gt;Thanks for the note.&lt;/P&gt;

&lt;P&gt;BTW - I can verify that the long compilation I experience using (a real code) is also with Version 16.0.2.181 (update 2) -- a compilation with the following set of flags increases from ~1 minute of compilation to unbounded time (I have stopped the compilation after 30 minutes, it was still in the linking process).&lt;/P&gt;

&lt;P&gt;Using Version 16.0.2.181 (update 2) the code compiles successfully only using -O2.&lt;/P&gt;

&lt;P&gt;The compilation flags :&lt;/P&gt;

&lt;PRE class="brush:bash;"&gt;ifort -g -O3 -openmp -xHost -ipo -fpconstant -fp-model precise -fpe0 -traceback -ftrapuv -gen-interfaces -warn interfaces&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Thanks in advance for any update in this issue,&lt;/P&gt;

&lt;P&gt;Jack.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 10:18:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096506#M125646</guid>
      <dc:creator>Jack_S_</dc:creator>
      <dc:date>2016-04-12T10:18:40Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;it was still in the linking</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096507#M125647</link>
      <description>&lt;P&gt;&amp;gt;&amp;gt;it was still in the linking process&lt;/P&gt;

&lt;P&gt;As a work around, disable multi-file inter-procedural optimizations -ipo-&amp;nbsp;(for the problem file).&lt;BR /&gt;
	-O3 (I think) implies -ipo&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 12:20:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096507#M125647</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2016-04-12T12:20:44Z</dc:date>
    </item>
    <item>
      <title>Hi Jim,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096508#M125648</link>
      <description>&lt;P&gt;Hi Jim,&lt;/P&gt;

&lt;P&gt;Your suggested workaround works -- the compilation is comparable to previous versions.&lt;/P&gt;

&lt;P&gt;The question is then what is the relative importance of -ipo, as in the user &amp;amp; reference guide the -fast flag implies (separately) -O3 and -ipo.&lt;/P&gt;

&lt;P&gt;Thank you,&lt;/P&gt;

&lt;P&gt;Jack.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 12:55:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096508#M125648</guid>
      <dc:creator>Jack_S_</dc:creator>
      <dc:date>2016-04-12T12:55:34Z</dc:date>
    </item>
    <item>
      <title>You should read the</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096509#M125649</link>
      <description>&lt;P&gt;You should read the documentation on Inter-procedural Optimizations. It is really not as comprehensive as it should be.&lt;/P&gt;

&lt;P&gt;IPO is (can be) performed in two passes:&lt;/P&gt;

&lt;P&gt;Compilation with -O3 (or -ipo) generates a special form intermediary object file (files when compiling multiple sources). When these intermediary files are passed to the linker, the linker will consult the intermediary files together, and when necessary... call back the compiler to perform inter-file optimizations to produce yet another intermediary object file. It is not clear (documented) as to if this process is recursive, but I suspect it is, and in your case, it seems to be caught in an infinite recursion loop (the loop could be iterative as well to avoid stack overflow).&lt;/P&gt;

&lt;P&gt;The compiler has an -ipo-c option which you may or may not wish to investigate using.&lt;/P&gt;

&lt;P&gt;Not documented, but assumed by me, is I assume -ipo and -ipo- affect the files following the option such that you can perform&lt;/P&gt;

&lt;P&gt;ifort -g -O3 ... a.f90 b.f90 c.f90 -ipo- d.f90&lt;/P&gt;

&lt;P&gt;Where a, b and c are ipo'd but d is not&lt;/P&gt;

&lt;P&gt;(you'd probably incorporate the options into your make file, one group as objs: and the other as objs_no_ipo:)&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 17:23:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096509#M125649</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2016-04-12T17:23:49Z</dc:date>
    </item>
    <item>
      <title>Jim is mostly correct.</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096510#M125650</link>
      <description>&lt;P&gt;Jim is mostly correct.&lt;/P&gt;

&lt;P&gt;Using -O3 or -ipo does provoke the compiler to generate intermediate language in the .o files rather than (COFF) object code.&lt;/P&gt;

&lt;P&gt;At link time, you use either "ifort" or "xild" to pull all these .o files into an executable.&amp;nbsp; The list of .o files is passed - once - to the compiler again, where interprocess optimizations happen, and a real object file is created.&amp;nbsp;&amp;nbsp; Then, control is returned to either "ifort" or "xild", and the linker is called to create the executable.&lt;/P&gt;

&lt;P&gt;There are no callbacks from "ld" and no interation, other than inside the compiler itself. (where the infinite loop is happening)&lt;/P&gt;

&lt;P&gt;Finally, no, the "-ipo" switch is not positional.&amp;nbsp; That is, if "ifort" detects -ipo anywhere on the line, it applies it to all compilations.&amp;nbsp; To compile some with -ipo and some without, you'd need separate compilation lines.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --Lorri&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 20:30:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096510#M125650</guid>
      <dc:creator>Lorri_M_Intel</dc:creator>
      <dc:date>2016-04-12T20:30:23Z</dc:date>
    </item>
    <item>
      <title>A modest correction. -ipo is</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096511#M125651</link>
      <description>&lt;P&gt;A modest correction. -ipo is the only option that puts intermediate code in the .o files. -O3 does not do this on its own. -fast is a "group option" which sets both -O3 and -ipo (and -xHost and some more.)&lt;/P&gt;</description>
      <pubDate>Tue, 12 Apr 2016 23:48:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096511#M125651</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-04-12T23:48:08Z</dc:date>
    </item>
    <item>
      <title>@Jim, Lorri and Steve --</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096512#M125652</link>
      <description>&lt;P&gt;@Jim, Lorri and Steve -- thank you all very much for answering and for sharing your experience.&lt;/P&gt;

&lt;P&gt;Jack.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 13 Apr 2016 00:31:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096512#M125652</guid>
      <dc:creator>Jack_S_</dc:creator>
      <dc:date>2016-04-13T00:31:06Z</dc:date>
    </item>
    <item>
      <title>The developers have found and</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096513#M125653</link>
      <description>&lt;P&gt;The developers have found and fixed the problem - an order N-cubed sort algorithm in part of the optimizer. We're hoping to get the fix in for the 17.0 release later this year.&lt;/P&gt;</description>
      <pubDate>Mon, 18 Apr 2016 14:21:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Unusually-long-O3-optimized-compile-time-on-specific-code/m-p/1096513#M125653</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2016-04-18T14:21:26Z</dc:date>
    </item>
  </channel>
</rss>

