Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29381 Discussions

Optimization differences on different machines

van_der_merwe__ben
New Contributor II
620 Views

When we compile Fortran code on developer machines, we compile with /Od, optimizations disabled. You can see the full set of flags at the bottom of this question.

Now we have observed the following:

- On one set of machines (group A) we always get one set of numerical results.
- On another set of machines (group B) we always get another set of numerical results, slightly different.
Now you may think that poorly written code and various other issues may explain this, and to some degree it does as we have hunted down some of the differences and are working on cleaning up some noise in the code. BUT, if you take code compiled on a machine in group B and run it on a machine in group A, then you get the same numerical results as on the machines in group B...

The machines in group B are newer machines than those in group A. The compilers on both groups of machines report the exact same version and were installed from the same installation images.

So my question to you is this: What can explain this? Does compiling code on a newer machine trigger some sort of different code change or something? At this point we are working towards compiling the exact same code on two such machines so that I can do a binary comparison of the files to see if they are different somehow.

(We have a large number of commercial paid for licenses, so I could log this as a support issue with Intel Support, but I am hoping Lionel or someone else might have some useful thoughts. This forum is very effective and helpful and often what support tells you to use first. *smiles*).

Any thoughts are much appreciated. Please?

-----

/fp:source
/Od
/W1 /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /c
/Qsave
/Qzero
/nologo /warn:nofileopt /align:rec1byte
/check:bounds /traceback
/iface:mixed_str_len_arg
/include:"c:\PROGRA~2\INTELS~1\PARALL~1.041\COMPIL~1\windows\compiler\include\ia32"
/include:"c:\PROGRA~2\INTELS~1\PARALL~1.041\COMPIL~1\windows\compiler\include"
/Fomobj32d\fsim\
/module:mobj32d\fsim
/include:C:\Client1\main\psim\mobj32d\fsim\..\..\..\Pfine\includes /include:C:\Client1\main\psim\mobj32d\fsim\..\..\..\FSIM\HTRCode /include:C:\Client1\main\psim\mobj32d\fsim\..\..\..\FSIM /include:
/check:bounds /debug:full /dbglibs /compile_only /dll /threads /assume:byterecl
/libs:dll
/define:KBCIFORTRAN
0 Kudos
1 Reply
Steven_L_Intel1
Employee
620 Views

Please read the attached presentation - especially the bit about the math library taking different paths on different processor types. You can control this behavior at the cost of performance.

443546

0 Kudos
Reply