構文:
/pipeline または /nopipeline
ia64 システムでは,/pipeline (または /optimize:5) オプションは,ソフトウェア・パイプライン最適化を有効にします。この最適化は,特定の種類に対する最も内側のループに命令スケジューリングを適用し,ループ内の命令を「ラップ・ラウンド」させて,ループの異なる繰り返しで実行できるようにします。これは長待ち時間操作の影響を減らし,ループの実行を高速化することができます。
ビジュアル開発環境では,「Fortran」タブの「Optimizations」カテゴリの「Apply Software Pipelining Optimizations」を指定します。
このバージョンの Visual Fortran では,ソフトウェア・パイプラインの対象として選択されるループは,つねに最も内側のループで,飛越し,手続呼び出し,または COMPLEX 浮動小数点データを含んでいないものです。
また,ソフトウェア・パイプラインはデータの先取りを有効にして,キャッシュ不足の影響を減らします。
ソフトウェア・パイプラインは,/optimize:5 によって有効になる最適化のサブセットです。/pipeline と /transform_loops の両方を指定する代わりに,/optimize:5 を指定することができます。
ループ変換の最適化なしにソフトウェア・パイプラインを指定するには,次のようにします。
/optimize:5 を /notransform_loops とともに指定します。
/pipeline を /optimize:4,/optimize:3,または /optimize:2 とともに指定します。この最適化は,/optimize:2 よりも低い最適化レベルでは実行されません。
/pipeline が特定のプログラムにとって有利であるかどうかを判断するには,ソフトウェア・パイプラインありとなしでコンパイルした同じプログラム (または副プログラム) のプログラム実行のタイミングを比較してください。たとえば /pipeline と /nopipeline でコンパイルしたプログラムを比較します。
使用可能なレジスタを使い切るループを含んでいるプログラムでは,/optimize:5 のために実行時間が長くなることがあります。この場合には /unroll:count を使ってループ展開を制限しなければなりません。/optimize:5 オプションは ia64 システムにのみ適用されます。
詳細については,「ソフトウェア・パイプライン」を参照してください。