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