-qunroll

説明

プログラムの内部ループをアンロールする。 これによりプログラムのパフォーマンスを改善することができます。

構文

構文図を読む構文図をスキップする        .-unroll--=--auto---------.
>>- -q--+-unroll--+-------------+-+----------------------------><
        |         |    .-yes--. | |
        |         '-=--+-auto-+-' |
        |              '-no---'   |
        '-nounroll----------------'
 

ここで、

-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を参照してください。

関連情報