Sun Studio 12: Fortran ユーザーズガイド

3.4.163 -xprefetch[ =a[,a]]

先読みをサポートするアーキテクチャーで先読み命令を有効にします。

Fortran PREFETCH 指令の詳細は、「2.3.1.8 PREFETCH 指令」 を参照してください。

a には次のいずれかを指定します。

auto

先読み命令の自動生成を有効にします。

no%auto

先読み命令の自動生成を無効にします。

explicit

明示的な先読みマクロを有効にします (SPARC のみ)。

no%explicit

明示的な先読みマクロを無効にします (SPARC のみ)。

latx:factor

(SPARC) 指定の係数により、コンパイラの先読みからロード、および先読みからストアまでの応答時間を調整します。係数には必ず正の浮動小数点または整数を指定します。

大型の SPARC マルチプロセッサで集約的なコードを実行する場合、-xprefetch=latx:factor を使用すると役立つことがあります。このオプションは、指定の係数により、先読みからロードまたはストアまでのデフォルトの応答時間を調整するようにコード生成プログラムに指示します。

先読みの応答時間とは、先読み命令を実行してから先読みされたデータがキャッシュで利用可能となるまでのハードウェアの遅延のことです。コンパイラは、先読み命令と先読みされたデータを使用するロードまたはストア命令の距離を決定する際に先読み応答時間の値を想定します。


注 –

先読みからロードまでのデフォルト応答時間は、先読みからストアまでのデフォルト応答時間と同じでない場合があります。


コンパイラは、幅広いマシンとアプリケーションで最適なパフォーマンスを得られるように先読み機構を調整します。しかし、コンパイラの調整作業が必ずしも最適であるとは限りません。メモリーに負担のかかるアプリケーション、特に大型のマルチプロセッサでの実行を意図したアプリケーションの場合、先読みの応答時間の値を引き上げることにより、パフォーマンスを向上できます。この値を引き上げるには、1 よりも大きな係数を使用します。1.5 から 2.0 までの値が、パフォーマンスの最大化にもっとも効果的であると考えられます。

データセットが全体的に外部キャッシュに常駐しているアプリケーションの場合、先読みの応答時間の値を引き下げることにより、パフォーマンスを向上できます。値を引き下げるには、1 よりも小さい係数を使用します。

-xprefetch=latx:factor オプションを使用するには、1.0 に近い係数から始めて、アプリケーションに対するパフォーマンステストを実行します。そのあと、テストの結果に応じて係数を増減し、パフォーマンステストを再実行します。係数の調整を継続し、最適なパフォーマンスに到達するまでパフォーマンステストを実行します。係数を小刻みに増減すると、しばらくはパフォーマンスに変化がなく、突然変化し、再び平常に戻ります。

yes

-xprefetch=yes-xprefetch=auto,explicit と同義です。

no

-xprefetch=no-xprefetch=no%auto,no%explicit と同義です。

-xprefetch-xprefetch=auto、および -xprefetch=yes を指定すると、コンパイラは先読み命令をコンパイラで生成するコードに自由に挿入できます。その結果、先読みをサポートするアーキテクチャーでパフォーマンスが向上します。

3.4.163.1 デフォルト

-xprefetch が指定されていない場合、-xprefetch=no%auto,explicit とみなされます。

-xprefetch だけが指定されている場合、-xprefetch=auto,explicit とみなされます。

デフォルト no%auto は、-xprefetch に引数を指定しないか、または autoyes を引数にとる -xprefetch を使用して明示的に無効にするまで継続されます。たとえば、-xprefetch=explicit-xprefetch=explicit,no%auto と同義です。

デフォルト explicit は、引数に no%explicitno を指定して明示的に無効にするまで継続されます。たとえば、-xprefetch=auto-xprefetch=auto,explicit と同義です。

-xprefetch または -xprefetch=yes などで自動先読みを有効にしても、応答時間係数を指定しないと、-xprefetch=latx:1.0 が使用されます。

3.4.163.2 相互作用

-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) が実行可能な場合のみ有効です。

3.4.163.3 警告

明示的な先読みは、測定値によってサポートされた特殊な環境でのみ使用すべきです。

コンパイラは幅広いマシンやアプリケーションで最適なパフォーマンスを得られるように先読み機構を調整しているため、パフォーマンステストで明確な利点のある場合に限り、-xprefetch=latx:factor を使用すべきです。デフォルトの先読み応答時間はリリースにより変更される場合があります。そのため、新しいリリースに切り替えるたびに、応答時間の係数によるパフォーマンスの影響をテストすることをお勧めします。