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

Module files and the Cascading Compilation Intel Fortran 11.x

William_Jones
New Contributor I
586 Views
In trying to combat the Fortran "Cascading Compilation" problem, I have been successfully using the scripts provided by Daniel Grimwood (http://www.nicdan.id.au/computers/compiling/recompile.html) to manage dependencies between different modules.  The problem results when a module file is regenerated.  Even without interface changes the module file from the same source will be different due to compiler specific information (timestamps, etc).

The fault evidently lies in an inadequate Fortran standard for module files, however this was managable with Intel Fortran up to version 10 by using a binary comparison (`cmp`) and allowing differences of selected bytes.  The differences were consistently confined to a few bytes (e.g. bytes 49, 50, 51, and 52 for version 9.x and 10.x).  Unfortunately, with Intel Fortran 11, this no longer practicle as there are typically in excess of 1000 different bytes which change with each source file.  These do appear to be in 2 to 3 byte increments, but are scattered throughout the *.mod file.

Is there a way to revert the *.mod file format back to that of version 10.x?

Are there other ways to determine when there is only a change to the body of a routine without modifying any of the interfaces of a module and hence important parts of the module file?

Thanks in advance,
0 Kudos
4 Replies
Steven_L_Intel1
Employee
586 Views
William,

There is no way to revert the behavior. I have asked the developers why the .mod files are not the same (ignoring the header with the compilation date). It may be a while before I get an answer but I will be sure to let you know when I do.
0 Kudos
William_Jones
New Contributor I
586 Views
Is there any movement on this item?
0 Kudos
Steven_L_Intel1
Employee
586 Views
This was fixed in the 12.1 compiler. The compiler was not initializing unused fields in its data structures to zero.
0 Kudos
lcoul
Beginner
586 Views
I come back with that subject which has also been treated in another thread (title : .mod files and compilation cascade). In that last thread, the solution was not at all convenient because it was necessary to split modules in two parts and to use interface block which are very error prone. In the current thread, Steve has explained that a missing initialization was solve in the version 12.1 Unfortunately, I meet a similar trouble with ifort-13.0. My build program skips (elegantly) the 150 first bytes of a Intel Fortran module file (for GCC, only the first line is skipped) when computing the file signature : this should avoid the problem of the timestamp recorded in each module. Anyway, from time to time, this is not enough : few bytes are modified in the middle of module files for a reason I don't understand. Is it possible that the correction done in the version 12.1 was finally not included in the version 13.0 ?
0 Kudos
Reply