Alignment change in new version?

Alignment change in new version?

Portrait de ereisch

Did the array padding or alignment semantics change in version 12.1 of the compiler?  While seeing if the new version fixes an issue I had with the old version we're using (12.0.4), I compiled half our code using the new version until it hit a file it couldn't compile (separate thread re: compiler segfault).  I built the rest of the files using the old version to get us back up and running, and we encountered dozens of issues of COMMON area variables being set in one routine and magically having a different value several routines later.  Without debugging, my suspicion is that the alignment algorithm was tweaked in the newer version in a way that makes it not backwards-compatible with older versions of the compiler.  I tried looking in the documentation that comes with the compiler for the release notes, but was unable to find any.

Somewhat related enhancement request: can the release notes / changelog be included in with the documentation that is on the compiler/debugger RPM?  Having to go to the Intel site for this information isn't always convenient.

4 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.
Portrait de Steve Lionel (Intel)

Nothing regarding alignment of COMMON variables should have changed. Alignment of local arrays may well have changed. Please do some more investigation to see what the problem is.

The release notes are in the rpm, but the change log is not as it is generated separately.

Steve
Portrait de Tim Prince

There is a new option which should increase the alignment of the start of a COMMON, but you would have had to specify that (same in each compilation unit).
If you constructed your common such that misalignments are implied, you would need the identical compile options regarding padding and alignment for all compilation units using it, and all the data types would need to match for padding to work. By default, there would be no padding, but you may get warnings of misalignments.

Setting options such as auto-double could create inconsistencies among uses of the COMMON.

Portrait de jimdempseyatthecove

>>we encountered dozens of issues of COMMON area variables being set in one routine and magically having a different value several routines later. Without debugging, my suspicion is that the alignment ...

It may also be the size of a particular object differing due to compile time differences.

Jim Dempsey

www.quickthreadprogramming.com

Connectez-vous pour laisser un commentaire.