#pragma unroll

説明

#pragma unroll ディレクティブは、プログラム内の最内部または最外部の for ループをアンロールするために使用され、プログラムのパフォーマンス改善を支援します。

構文

構文図を読む構文図をスキップする>>-#--pragma--+-nounroll------------+--------------------------><
              '-unroll--(--+---+--)-'
                           '-n-'
 

ここで、n は、ループのアンロール係数です。 C プログラムでは、n の値は正の整数定数式です。C++ プログラムでは、n の値は正のスカラー整数またはコンパイル時の定数初期化式です。 アンロール係数 1 はアンロールを使用不可にします。n が指定されておらず、 -qhot-qsmp または -O4 以上が指定されている場合、 最適化プログラムはそれぞれネストされたループごとに適切なアンロール係数を判別します。

#pragma unroll および #pragma nounroll ディレクティブは、for ループまたは block_loop ディレクティブでのみ使用できます。これは do while および while ループには適用できません。

#pragma unroll および #pragma nounroll ディレクティブは、ループまたは影響を受ける block_loop ディレクティブの直前に現れなければなりません。

1 つの特定のループには、これらのディレクティブの 1 つだけを指定することができます。 ループ構造体は、以下の条件を満たしている必要があります。

ループに #pragma nounroll を指定すると、 コンパイラーにそのループをアンロールしないよう命令します。 #pragma unroll(1) を指定しても同じ結果になります。

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

関連情報