/[no]pipeline (ia64 のみ)

構文:

/pipeline または /nopipeline

ia64 システムでは,/pipeline (または /optimize:5) オプションは,ソフトウェア・パイプライン最適化を有効にします。この最適化は,特定の種類に対する最も内側のループに命令スケジューリングを適用し,ループ内の命令を「ラップ・ラウンド」させて,ループの異なる繰り返しで実行できるようにします。これは長待ち時間操作の影響を減らし,ループの実行を高速化することができます。

ビジュアル開発環境では,「Fortran」タブの「Optimizations」カテゴリの「Apply Software Pipelining Optimizations」を指定します。

このバージョンの Visual Fortran では,ソフトウェア・パイプラインの対象として選択されるループは,つねに最も内側のループで,飛越し,手続呼び出し,または COMPLEX 浮動小数点データを含んでいないものです。

また,ソフトウェア・パイプラインはデータの先取りを有効にして,キャッシュ不足の影響を減らします。

ソフトウェア・パイプラインは,/optimize:5 によって有効になる最適化のサブセットです。/pipeline/transform_loops の両方を指定する代わりに,/optimize:5 を指定することができます。

ループ変換の最適化なしにソフトウェア・パイプラインを指定するには,次のようにします。

/pipeline が特定のプログラムにとって有利であるかどうかを判断するには,ソフトウェア・パイプラインありとなしでコンパイルした同じプログラム (または副プログラム) のプログラム実行のタイミングを比較してください。たとえば /pipeline/nopipeline でコンパイルしたプログラムを比較します。

使用可能なレジスタを使い切るループを含んでいるプログラムでは,/optimize:5 のために実行時間が長くなることがあります。この場合には /unroll:count を使ってループ展開を制限しなければなりません。/optimize:5 オプションは ia64 システムにのみ適用されます。

詳細については,「ソフトウェア・パイプライン」を参照してください。