インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、インテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーをターゲットとする場合にのみ適用されます。
IA-32 アーキテクチャーやインテル® 64 アーキテクチャーと異なり、インテル® MIC アーキテクチャーでは、すべてのデータアクセスがサイズに従って適切にアライメントされている必要があります。適切にアライメントされていない場合、予測しない動作を引き起こすことがあります。
例えば、整数変数 (4 バイトで格納) は 4 の倍数のアドレスに割り当てなければなりません。同様に、倍精度浮動小数点変数 (8 バイトで格納) は 8 の倍数のアドレスに割り当てなければなりません。
次の方法でデータをアライメントすることができます。
align コンパイラー・オプションは、ローカルおよびグローバルデータ、配列、スカラー、定義型のフィールド、プロシージャーの仮引数、ALLOCATABLE 属性や POINTER 属性が指定されたデータ、共通ブロック要素、SEQUENCE 派生型のフィールドのアライメントを強制できます。通常、デフォルトはデータがサイズに応じて適切な境界でアライメントされる、自然なアライメントです。
共通ブロック内の位置や EQUIVALENCE 文、または SEQUENCE 派生型のフィールドであることが原因で、データ・オブジェクトが正しくアライメントされないことがあります。定義型のすべてのフィールドが自然にアライメントされていても、定義型のオブジェクトのサイズが最も大きいフィールドのアライメントの倍数でない場合、この定義型の配列要素は正しくアライメントされないことがあります。
共通ブロック要素は、align *common コンパイラー・オプションを指定してアライメントされたアドレスに配置することができます。SEQUENCE 派生型は、align sequence コンパイラー・オプションを指定してアライメントされたアドレスに配置することができます。これらのコンパイラー・オプションは、アライメントされるデータを参照するすべてのプログラムユニットに一貫して適用しない限り、プログラムの正当性に影響する可能性があります。
warn alignments コンパイラー・オプションがデフォルトで、データ・オブジェクトが正しくアライメントされていない場合、警告が表示されます。
ATTRIBUTES ALIGN、ASSUME_ALIGNED、および ASSUME ディレクティブによりデータをアライメントし、コンパイラーにデータがアライメントされていると見なして処理するように指示できます。
インテル® MIC アーキテクチャーではデータのアライメントが非常に重要なため、アライメントに関する警告はエラーとなり、コンパイルに失敗します。このようなアライメントのエラーは、プログラムをコンパイルする前に修正する必要があります。