この記事は、インテル® デベロッパー・ゾーンに掲載されている「Data Alignment to Assist Vectorization」の日本語参考訳です。 はじめに データ・アライメントとは、特定のバイト境界上のメモリーにデータ・オブジェクトを生成するようにコンパイラーに指示する手法です。これは、データのロード/ストアの効率を高めるために行います。簡単に説明すると、プロセッサーの設計特性により、データが特定のバイト境界上のメモリーアドレスにある場合、そのデータを効率良く移動することができます。インテル® Xeon Phi™ コプロセッサーのようなインテル® メニー・インテグレーテッド・コア (インテル® MIC) アーキテクチャーでは、データが 64 バイト境界で始まるアドレスにあると、メモリーの移動を最適に行えます。そのため、モジュロ 64 バイトで始まるアドレス境界にデータ・オブジェクトを生成するようにコンパイラーに指示すると良いでしょう。さらに、データが 64 バイトでアライメントされていることが判明している場合、コンパイラーはさまざまな最適化を適用できます。デフォルトでは、データが現在のスコープ外で作成されると、コンパイラーはアライメント情報を得ることも、仮定することもできません。そのため、コンパイラーが最適なコードを生成できるように、プラグマ (C/C++)/指示句 (Fortran) によってコンパイラーにアライメント情報を知らせる必要があります。ただし、例外として Fortran のモジュールデータは USE 文でアライメント情報を受け取ります。 データをアライメントするには、次の 2 つのステップに従います。 データをアライメントします。 クリティカル領域内のデータが使用されている位置で、プラグマ/指示句を記述してデータがアライメントされていることをコンパイラーに知らせます。 1. データをアライメントする パフォーマンスを向上するには、データをアライメントすることが重要です。また、最適化が行われるように、クリティカル領域でアライメント情報をコンパイラーに知らせることも重要です。データをアライメントしてもコンパイラーに知らせなければ、最適化が十分に行われなかったり、コンパイル時間が長くなる恐れがあります。