ベクトル化は、IA-32 固有の機能で、次の表は、ベクトル化に関するコマンドライン・オプションについてまとめたものです。ベクトル化は、メモリ参照を一義化するコンパイラの機能に依存します。ある種のオプションを使用すると、コンパイラによるベクトル化を改善できます。これらのオプションによって、ベクトル化だけでなく、それ以外の最適化も有効になります。-x{K|W|N|B|P} または -ax{K|W|N|B|P} オプションを使用する場合、-O2 (デフォルトではオン) も有効であると、ベクトライザは有効になります。-x{K|W|N|B|P} または -ax{K|W|N|B|P} オプションの場合は、-O1 および -O3 オプションでも、ベクトライザが有効になります。
-x{K|W|N|B|P} |
{K|W|N|B|P} で指定された拡張命令をサポートするプロセッサでのみ動作する専用コードを生成します。詳細は、「プロセッサ固有の自動最適化 (IA-32 のみ)」を参照してください。 |
-ax{K|W|N|B|P} |
{K|W|N|B|P} で指定される拡張命令専用のコードを 1 つのバイナリ上に生成し、汎用の IA-32 コードも生成します。通常は、汎用コードの方が実行速度が遅くなります。詳細は、「プロセッサ固有の自動最適化 (IA-32 のみ)」を参照してください。 |
-vec_report |
ベクトライザの診断メッセージを制御します。詳細は、表の次のサブセクションを参照してください。 |
-vec_report{0|1|2|3|4|5} オプションは、異なる情報のレベルでベクトル化レポートを生成するようにコンパイラに指示します:
-vec_report0: 診断情報を表示しません。
-vec_report1: ループが正常にベクトル化されたことを示す診断情報を表示します (デフォルト)。
-vec_report2: -vec_report1 のメッセージに加えて、ループのベクトル化が失敗したことを示す診断情報も表示します。
-vec_report3: -vec_report2 のメッセージに加えて、判明した依存関係または想定される依存関係についての補足情報も表示します。
-vec_report4: 非ベクトル化ループを示します。
-vec_report5: 非ベクトル化ループを示し、ベクトル化されない理由を示します。
数字の指定なしで -vec_report を指定すると、-vec_report1 のデフォルトが使用されます。
ベクトル化レポートは、実行ファイルの作成時の最終コンパイル・フェーズで生成されます。そのため、コマンドラインで -c オプションおよび -vec_report{n} オプションを使用すると、レポートは作成されません。
-c、-ipo と、-x{ K|W|N| B|P} または -ax{ K|W|N| B|P} と -vec_report{n} を使用すると、コンパイラは警告メッセージを表示し、レポートを生成しません。
前述のオプションを使用してレポートを生成するには、-ipo_obj オプションを追加する必要があります。-c および -ipo_obj の組み合わせで 1 つのファイルをコンパイルし、それが、オブジェクト・コードを生成し、最終的にレポートが生成されます。
次のコマンドで、ベクトル化のレポートが生成されます。
ifort -x{K|W| N| B|P } -vec_report3 file.f
ifort -x{K|W| N| B|P } -ipo -ipo_obj -vec_report3 file.f
ifort -c -x{K|W| N| B|P } -ipo -ipo_obj -vec_report3 file.f