先読みをサポートするアーキテクチャーで先読み命令を有効にします。
Fortran PREFETCH 指令の詳細は、「2.3.1.7 PREFETCH 指令」を参照してください。
a には次のいずれかを指定します。
先読み命令の自動生成を有効にします。
先読み命令の自動生成を無効にします。
明示的な先読みマクロを有効にします。
明示的な先読みマクロを無効にします。
(SPARC) 指定の係数により、コンパイラの先読みからロード、および先読みからストアまでの応答時間を調整します。係数には必ず正の浮動小数点または整数を指定します。
大型の SPARC マルチプロセッサで集約的なコードを実行する場合、-xprefetch=latx:factor を使用すると役立つことがあります。このオプションは、指定の係数により、先読みからロードまたはストアまでのデフォルトの応答時間を調整するようにコード生成プログラムに指示します。
先読みの応答時間とは、先読み命令を実行してから先読みされたデータがキャッシュで利用可能となるまでのハードウェアの遅延のことです。コンパイラは、先読み命令と先読みされたデータを使用するロードまたはストア命令の距離を決定する際に先読み応答時間の値を想定します。
先読みからロードまでのデフォルト応答時間は、先読みからストアまでのデフォルト応答時間と同じでない場合があります。
コンパイラは、幅広いマシンとアプリケーションで最適なパフォーマンスを得られるように先読み機構を調整します。しかし、コンパイラの調整作業が必ずしも最適であるとはかぎりません。メモリーに負担のかかるアプリケーション、特に大型のマルチプロセッサでの実行を意図したアプリケーションの場合、先読みの応答時間の値を引き上げることにより、パフォーマンスを向上できます。この値を引き上げるには、1 よりも大きい係数を使用します。.5 と 2.0 の間の値は、おそらく最高のパフォーマンスを提供します。
データセットが全体的に外部キャッシュに常駐しているアプリケーションの場合、先読みの応答時間の値を引き下げることにより、パフォーマンスを向上できます。値を引き下げるには、1 よりも小さい係数を使用します。
-xprefetch=latx:factor オプションを使用するには、1.0 に近い係数の値から始め、アプリケーションに対してパフォーマンステストを実施します。そのあと、テストの結果に応じて係数を増減し、パフォーマンステストを再実行します。係数の調整を継続し、最適なパフォーマンスに到達するまでパフォーマンステストを実行します。係数を小刻みに増減すると、しばらくはパフォーマンスに変化がなく、突然変化し、再び平常に戻ります。
-xprefetch=yes は -xprefetch=auto,explicit と同義です。
-xprefetch=no は -xprefetch=no%auto,no%explicit と同義です。
-xprefetch、-xprefetch=auto、および -xprefetch=yes を指定すると、コンパイラは生成したコードに自由に先読み命令を挿入します。その結果、先読みをサポートするアーキテクチャーでパフォーマンスが向上します。
-xprefetch を指定しないと、-xprefetch=auto,explicit が使用されます。
-xprefetch だけを指定すると、-xprefetch=auto,explicit が使用されます。
-xprefetch または -xprefetch=yes などで自動先読みを有効にしても、応答時間係数を指定しないと、-xprefetch=latx:1.0 が使用されます。
-xprefetch=explicit を指定すると、コンパイラは次の指令を認識します。
!$PRAGMA SUN_PREFETCH_READ_ONCE (name ) |
!$PRAGMA SUN_PREFETCH_READ_MANY (name ) |
!$PRAGMA SUN_PREFETCH_WRITE_ONCE (name ) |
!$PRAGMA SUN_PREFETCH_WRITE_MANY (name ) |
-xchip 設定は、想定した応答時間、つまり latx:factor 設定の結果に影響します。
latx:factor サブオプションは、SPARC プロセッサで自動先読み (auto) が実行可能な場合のみ有効です。
明示的な先読みは、測定値によってサポートされた特殊な環境でのみ使用すべきです。
コンパイラは、広範囲なマシンやアプリケーション間で最適なパフォーマンスを得るために先読み機構を調整しますが、-xprefetch=latx:factor は、パフォーマンステストで明らかに利点があることが確認された場合にかぎり使用してください。使用先読み応答時間は、リリースごとに変わる可能性があります。したがって、別のリリースに切り替えたら、その都度応答時間係数の影響を再テストすることを推奨します。