Intel® Fortran Compiler 17.0 Developer Guide and Reference
This topic only applies when targeting Intel® Many Integrated Core Architecture (Intel® MIC Architecture).
Unlike the IA-32 and Intel® 64 architectures, the Intel® MIC Architecture requires all data accesses to be properly aligned according to their size, otherwise the program may behave unpredictably.
For example, an integer variable, which requires four bytes of storage, has to be allocated on an address that is a multiple of four. Likewise, a double-precsion floating point variable, which requires eight bytes of storage, has to be allocated on an address that is a multiple of eight.
You can align data in the following ways:
The compiler option align can force the alignment of local and global data, arrays, scalars, and fields of defined types, dummy arguments of procedures, data with the ALLOCATABLE or POINTER attribute, common block entities, and fields in SEQUENCE derived types. Natural alignment, where the data is properly aligned according to its size, is usually the default
Data objects may be misaligned because of their position in common blocks, because of EQUIVALENCE statements, or because they are fields in SEQUENCE derived types. Even if all of the fields of a defined type are naturally aligned, if the size of the object of defined type is not a multiple of the alignment of the largest field, arrays elements of this defined type would sometimes be misaligned.
Entities in common blocks can be forced onto aligned addresses with the align *common compiler options. Fields of a SEQUENCE derived type can be forced onto aligned addresses with the align sequence compiler option. Use of these compiler options may affect the correctness of your program unless you apply them consistently to all program units that reference the data being aligned.
The compiler option warn alignments is the default and displays a warning if a data object is misaligned.
You can use the directives ATTRIBUTES ALIGN, ASSUME_ALIGNED, and ASSUME to align data or tell the compiler that the data should be treated as if aligned.
On the Intel® MIC Architecture, data alignment is so important that alignment warnings are turned into errors so the compilation will fail. Those alignment errors must be corrected before the program will compile.