ループアンロールの利点は次のとおりです。
アンロールにより、分岐およびいくらかのコードが減ります。
変数を有効に保持するのに十分な空きレジスターがある場合は、アンロールにより、積極的にループをスケジューリング (またはパイプライン化) して、遅延を隠せます。
IA-32 アーキテクチャーをベースとしたプロセッサーでは、反復回数が予測可能で、ループ内に条件付き分岐がない場合、反復回数が 16 回以下の内部ループの終了分岐を正しく予測できます。したがって、ループ本体のサイズが大きすぎず、反復の予測回数がわかる場合、プロセッサーの内部ループを、最大 16 の反復回数までアンロールします。
考えられる制限として、過度なアンロール、または非常に大きなループアンロールにより、コードサイズが大きくなる可能性があります。
-unroll[n] オプション (Linux* および Mac OS* X) または /Qunroll:[n] (Windows*) オプションは、インテル® コンパイラーのループアンロール処理方法を制御します。
詳細は、「最適化手法の適用」を参照してください。
Linux および Mac OS X |
Windows |
説明 |
---|---|---|
-unrolln |
/Qunroll:n |
ループアンロール回数の上限を指定します。次の例では、ループを 4 回アンロールします。 ifort -unroll4 a.f90 (Linux および Mac OS X) ifort /Qunroll:4 a.f90 (Windows) (Linux および Mac OS X) (Windows)
|