Scientific System研究会Home SMPスレッド並列WG 〜チューニング事例集〜
SMPスレッド並列WG TOPに戻る

スカラSMP計算機(共有メモリ型計算機)である富士通PRIMEPOWERシリーズ上、プログラムの性能評価作業およびチューニングを行う際のガイドです。
SMPスレッド並列WG」の成果物として作成されました。

スカラ並列プログラミング チューニング・ガイド 別冊

チューニング事例集 第一版(2006/10/30発行)
本文 guide-casekey [502KB]
【目次】
はじめに
1. スカラSMP計算機のチューニング
1.1 ハードウェア構成
1.2 キャッシュ機能
  1.2.1 キャッシュの仕組み
  1.2.2 キャッシュとキャッシュライン
  1.2.3 キャッシュアクセス
  1.2.4 キャッシュインデックス競合
1.3 プリフェッチ機能
1.4 TLB機能
1.5 ラージページ機能
1.6 性能特性とチューニングのポイント
2. メモリアクセス負荷/キャッシュ競合の削減
2.1 配列の形状は2のべき乗を避ける
2.2 参照するメモリの局所性を高める
2.3 リストアクセスしている配列を再構成する
2.4 配列を連続アクセスするようにループ交換する
2.5 FALSE SHARINGを解決する(自動並列化)
2.6 FALSE SHARINGを解決する(OpenMP)
2.7 ループ分割を変更する(OpenMP)
2.8 メモリアクセスを局所化する
2.9 TLB不足を解決する
2.10 ループの分割方法を変える(OpenMP)
2.11 配列のストライドアクセスを連続アクセスにする(1)
2.12 配列のストライドアクセスを連続アクセスにする(2)
2.13 配列のストライドアクセスを連続アクセスにする(3)
2.14 配列のストライドアクセスを連続アクセスにする(4)
3. 同期コストの削減
3.1 ループをタイル化して同期コストを削減する
4. スレッド間CPU負荷の分散
4.1 ループを一重化する
4.2 ループ分割方法を変更する(OpenMP)
5. プロセス間CPU負荷の分散
5.1 ループ分割方法を変更する(XPFortran)
6. 通信コストの改善
6.1 プロセス間通信コストの削減
7. 並列化率の向上
7.1 並列化粒度を大きくする
7.2 部分的に並列化できるループを並列化する
7.3 ループを分配する
7.4 ループをタイトリ(直列入れ子)にする
7.5 ループを細分する
7.6 ループをピーリングする
7.7 飛び出しのあるループを並列化する(OpenMP)
7.8 IF文のあるループを並列化する
7.9 配列の定義引用関係を明らかにする
7.10 配列の添字の重なりを明らかにする
7.11 ポインタを並列化する
7.12 外部手続きがあるループを並列化する
7.13 配列をプライベート化して外側ループで並列化する
7.14 総和などのリダクション演算を並列化する
7.15 メモリ参照回数を減らす
7.16 アンローリングする
7.17 並列化範囲を拡大する
7.18 粒度が十分にあるループを効率よく並列化する
7.19 粒度が小さいループは並列化を抑止する
7.20 ループ長を考慮して並列化する
7.21 PARALLEL指示のオーバヘッドを削減する(OpenMP)
8. 演算器の実行効率を高める
8.1 ループ融合
8.2 ループ変形
8.3 ループ傾斜
8.4 ループ繰り返し回数
8.5 端点IF
8.6 ループオーバヘッド削減
8.7 演算数削減
8.8 単純IF化
8.9 不変式の移動
8.10 配列代入文の融合
8.11 IF文の条件が成立する確率に偏り
8.12 多重DOループ
8.13 プリフェッチ機能を使用する
索引
SMPスレッド並列WG TOPに戻る

All Rights Reserved, Copyright©サイエンティフィック・システム研究会 2006