Oracle® Solaris Studio 12.4: OpenMP API ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

8.2.2 偽りの共有の低減

通常、偽りの共有が検出されるのは、特定の変数へのアクセスに著しくコストがかかっていると思われる場合です。アプリケーションの実行で主要な役割を果たす並列ループを綿密に分析することによって、偽りの共有によって引き起こされるパフォーマンスおよびスケーラビリティー上の問題を明らかにすることができます。

一般に、偽りの共有は次の手法を使用して減らすことができます。

  • できるだけ多くの private または threadprivate のデータを使用する。

  • コンパイラの最適化機能を使用して、メモリーのロードおよびストア命令を取り除く。

  • 各スレッドのデータが別個のキャッシュ行に配置されるようにデータ構造をパディングする。パディングのサイズはシステムによって異なり、個々のキャッシュ行にスレッドのデータをプッシュするために必要なサイズです。

  • スレッド間のデータの共有が少なくなるようにデータ構造を変更する。

偽りの共有を追跡するための技法は、アプリケーションによって大きく異なります。データの割り当て方法を変更すると、偽りの共有が減少する場合があります。スレッドの反復のマッピングを変更し、チャンクごとの各スレッドの作業量を増やす (chunk_size の値を変更する) ことで偽りの共有が減少することもあります。