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

Compatibility of objects created in different versions of Intel Fortran

igeorgei
Beginner
920 Views
Hello All

Background

Our product has been using Intel Fortran for years now from version 9 till now version 12.1. We use the Intel Compiler to compile Fortran code into objects that are linked together by Visual Studio to create an executable. This executable is then run as a mathematical simulation.

Situation

We have customers who have old Fortran compiled objects from Intel Fortran 9/VS 2003, Intel 10/VS 2005, Intel 11/VS 2008.

Customers with new Intel and old objects

From our experince, objects compiled with older versions of Intel are compatible when linked together with objects created with newer versions of Intel.

Customers with old Intel and new objects

We have also seen newer objects shared with customers who link them with older versions of Intel and objects created with older Intel versions.


The Question

Is cross version compatbility guaranteed

Are objects created in older versions of Intel Fortran-VisualStudio XX guaranteed to link with newer versions of Intel Fortran-VisualStudio XX and visa versa


Thanks in advance for your help

George

www.pscad.com
0 Kudos
3 Replies
Steven_L_Intel1
Employee
920 Views
What we try to maintain is that old objects can be linked with new code and libraries, as long as the linking is done in the newer environment. The reverse, linking newer-version objects with an older version product, is not supported and may fail in unpredictable ways.

I would stop short of saying "guarantee", but in the absence of compiler bugs that sometimes force us to make incompatible changes, old objects linking with a newer compiler is supposed to work. When we know of exceptions these are listed in the release notes.
0 Kudos
jimdempseyatthecove
Honored Contributor III
920 Views
If you did not use SEQUENCE in your user defined types you may have a potential for incompatible binary data (should your data files be stored in binary), as you upgrade your compiler. While this has always been an uncertainty, you may have not experienced this, thus (mis)assume binary layout is always compatible.

In the event you have such an issue, you will need to write a data file converter program.

Jim Dempsey
0 Kudos
Steven_L_Intel1
Employee
920 Views
I can't imagine we would ever change the layout of non-SEQUENCE types. While you are correct that this is a possibility, the number of applications it would break is just too horrible to imagine. The usual compatibility issues relate to:
  • Bugs in external name decoration (should not be any more of these)
  • Changes in descriptor layout (happened for CLASS objects once, should not happen again)
  • Upward-compatible changes in interfaces to run-time library routines (happens occasionally)

Perhaps of more interest is that compiled module (.mod) files are also upward but not downward compatible. While we don't change the format of these often, sometimes we do. The compiler should complain if it sees an incompatible .mod file.

0 Kudos
Reply