Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Ankündigungen
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.

16.0.1 ICE with -standard-semantics -QxAVX -Qopt-report

TimP
Geehrter Beitragender III
1.237Aufrufe

Correction to my previous comment on this subject.  I had been using a hidden setting of -standard-semantics for recent versions of ifort.  Now with 16.0.1 the combination of options  -standard-semantics -Qxhost -Qopt-report produces internal compiler error while processing maxloc.  If I remove opt-report it runs, but optimization of maxloc is disabled.   Setting -assume:old_maxminloc fixes the ICE and restores optimization.  I assume this makes the 0-length operand case non-conformant with f2003 but didn't test that.  Setting -arch:SSE4.1 also avoids the ICE.

0 Kudos
9 Antworten
Steven_L_Intel1
Mitarbeiter
1.237Aufrufe

C'mon, Tim, you know the drill. Please provide a source so that we can investigate.

TimP
Geehrter Beitragender III
1.237Aufrufe

$ ifort -O3 -standard-semantics -Qopenmp -QxAVX  -fpp  -Qopt-report -debug:inline-debug-info  -c loopsfv.F

All those options are needed to provoke this ICE.  Tried only with Intel64, happens with VS2013 and 2015 environments.

mecej4
Geehrter Beitragender III
1.237Aufrufe

Need lcd_mod.mod or the source file to generate the module file.

TimP
Geehrter Beitragender III
1.237Aufrufe

added module source

Steven_L_Intel1
Mitarbeiter
1.237Aufrufe

Thanks - I can reproduce this and will escalate to development. Issue ID is DPD200379011.

Steven_L_Intel1
Mitarbeiter
1.237Aufrufe

The developers tell me that this is a bug they recently fixed and that the fix will appear in Update 2.

TimP
Geehrter Beitragender III
1.237Aufrufe

Good to see that it will be fixed.  It has been difficult to understand why complying with f2003 causes so much trouble.

ifort may be unrolling the inner loop excessively.  It doesn't perform as well as Intel C, which has only a single AVX2 parallel comparison in the inner loop of function s3110 (where the ifort bug appears to be).  That's only a nit pick, as ifort performs much better on this case than any non-Intel compiler I've been able to test.

The unrolling in this case doesn't appear to be affected by /Qunroll or unroll directive.

VTune doesn't seem to show excessive remainder loop time.

Steven_L_Intel1
Mitarbeiter
1.237Aufrufe

It's not "complying with F2003", but the 2003-compatible operations exposed a bug in the optimizer.

TimP
Geehrter Beitragender III
1.237Aufrufe

16.0.2 seems to support full optimization without old_maxminloc.

Antworten