メモリとプロシージャ間の最適化を試してみることにより、インテル® Fortran コンパイラの最適化機能をアプリケーションに合わせて調整できます。
特定のインライン展開およびループ最適化を選択するには、適切なキーワードを用いて -Qoption オプションを入力します。このオプションを入力する場合は、次の例に示すように、-ip または -ipo を指定しなければなりません。
-ip[-Qoption,tool,opts]
tool が Fortran (f) で、opts は -Qoption 指定子です (下記参照)。これらの指定子がコンパイラのインライン手法に与える影響については、「関数のインライン展開の基準」 を参照してください。
他のツールへのオプションの受け渡しに関する詳細は、「/Qoption,tool,opts」を参照してください。
-Qoption なしで -ip または -ipo を指定すると、コンパイラは次のことを行います:
関数のインライン展開
定数の引数伝播
レジスタ内の引数の受け渡し
モジュール・レベルでの静的変数の監視
次の -Qoption 指定子を使用して、プロシージャ間の最適化を設定できます。これを有効にするには、例に示すように、-Qoption オプションとともに -ip または -ipo を入力しなければなりません:
-ip -Qoption,f,ip_specifier
ここで、ip_specifier は、次の表にある -Qoption 指定子の 1 つです。
-ip_args_in_regs=0 |
レジスタ内での引数の受け渡しを無効にするオプションです。デフォルトでは、ローカルに呼び出された外部関数はレジスタ内で引数の受け渡しができます。通常、スタティック関数のみはレジスタ内での引数の受け渡しができますが、それには条件が 2 つあり、1 つはその関数のアドレスが取得されないこと、もう 1 つは個数の定まらない引数をその関数が使用しないことです。 |
-ip_ninl_max_stats=n |
インライン展開される関数内の中間言語文の有効な数を設定します。n は正の整数です。通常は、中間言語の文の個数は、ソース言語の文の実際の個数を超えます。n のデフォルト値は 230 です。 |
-ip_ninl_min_stats=n |
インライン展開する関数 1 個について、中間言語の文を最小何個まで許容させるかを設定するオプションです。n は正の整数です。ip_ninl_min_statsのデフォルト値は、次のとおりです。 |
-ip_ninl_max_total_stats=n |
インライン化のために、中間言語文で、関数のサイズに展開できる最大数を設定します。n は正の整数です。n のデフォルト値は 2000 です。 |
次のコマンドは source.f でプロシージャおよびプロシージャ間の最適化を有効にし、各関数に対して中間言語の文の数の最大増加数を 5 に設定します。
ifort -ip -Qoption,f,-ip_ninl_max_stats=5 source.f