unroll

C に適用 C++ に適用

目的

プログラムの内側のループをアンロールする。これにより、プログラムのパフォーマンスを向上させることができます。

構文


構文図

ここで、


-qunroll=auto ループをアンロールする決定をコンパイラーに任せます。これはコンパイラーのデフォルトです。
-qunroll または -qunroll=yes コンパイラーにループのアンロールを提案します。
-qnounroll または -qunroll=no ループをアンロールしないようにコンパイラーに指示します。

#pragma unrollおよび #pragma optionsも参照してください。

このオプションのコンパイラー・デフォルトは、コマンド行で特に明示的に指定されない限り、-qunroll=auto です。

サブオプションなしで -qunroll を指定するのは、-qunroll=yes を指定するのと同等です。

-qunroll-qunroll=yes、または -qunroll=auto が指定されていると、最適化プログラムにより、内部ループ本体がアンロールされるか、または複製されます。最適化プログラムは、ループごとに最適なアンロール係数を判別して適用します。場合によっては、不要な分岐を避けるようにループ制御が変更される場合もあります。

unroll オプションによって、特定のアプリケーションのパフォーマンスが改善されるかどうかを確認するには、まず、通常オプションでプログラムをコンパイルしてから、それを代表的なワークロードで実行してください。次に、コマンド行 -qunroll オプションを指定するか、unroll プラグマを使用可能にして (あるいはその両方を行って)、プログラムを再コンパイルしてから、同じ条件下で再実行して、パフォーマンスが改善されたかどうか確認してください。

#pragma unroll ディレクティブを使用して、アンロールに関してさらに細かく制御することができます。このプラグマを設定すると、-qunroll コンパイラー・オプションの設定がオーバーライドされます。

  1. 以下の例では、アンロールは使用できません。
    xlc++ -qnounroll file.C
     
    xlc++ -qunroll=no file.C
    
  2. 以下の例では、アンロールを使用できます。
    xlc++ -qunroll file.C
     
    xlc++ -qunroll=yes file.C
     
    xlc++ -qunroll=auto file.C
    
  3. プログラム・コードがコンパイラーによってどのようにアンロールされるのかの例は、#pragma unrollを参照してください。

関連参照

コンパイラーのコマンド行オプション
#pragma options
#pragma unroll IBM Copyright 2003