プログラムの内側のループをアンロールする。これにより、プログラムのパフォーマンスを向上させることができます。
ここで、
-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 コンパイラー・オプションの設定がオーバーライドされます。
xlc++ -qnounroll file.C xlc++ -qunroll=no file.C
xlc++ -qunroll file.C xlc++ -qunroll=yes file.C xlc++ -qunroll=auto file.C