Sun Studio 12 Update 1: C++ ユーザーズガイド

A.2.167.1 デフォルト

デフォルトは -xprefetch=auto,explicit です。基本的に非線形のメモリーアクセスパターンを持つアプリケーションには、このデフォルトが良くない影響をもたらします。デフォルトを無効にするには、-xprefetch=no%auto,no%explicit を指定します。

no%autono の引数で明示的にオーバーライドされない限り、デフォルト auto が想定されます。たとえば、-xprefetch=explicit-xprefetch=explicit,auto と同じことです。

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

-xprefetch だけを指定すると、-xprefetch=auto,explicit が使用されます。

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

相互の関連性

このオプションは、置き換えられる代わりに蓄積されます。

sun_prefetch.h ヘッダーファイルには、明示的な先読み命令を指定するためのマクロが含まれています。先読み命令は、実行コード中のマクロの位置にほぼ相当するところに挿入されます。

明示的な先読み命令を使用するには、使用するアーキテクチャーが適切なもので、sun_prefetch.h をインクルードし、かつコンパイラコマンドに -xprefetch が 指定されていないか、-xprefetch-xprefetch=auto,explicit、あるいは -xprefetch=explicit が指定されていなければいけません。

マクロが呼び出され、sun_prefetch.h ヘッダーファイルがインクルードされていても、-xprefetch=no%explicit が指定されていると、明示的な先読み命令は実行コードに組み込まれません。

latx:factor の使用は、自動先読みが有効になっている場合にかぎり有効です。つまり、latx:factor は、-xprefetch=auto,latx:factor とともに使用しないかぎり無視されます。

警告

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

コンパイラは、広範囲なマシンやアプリケーション間で最適なパフォーマンスを得るために先読み機構を調整しますが、-xprefetch=latx:factor は、パフォーマンステストで明らかに利点があることが確認された場合にかぎり使用してください。使用先読み応答時間は、リリースごとに変わる可能性があります。したがって、別のリリースに切り替えたら、その都度応答時間係数の影響を再テストすることを推奨します。