高性能プログラミング

ここでは、「高性能プログラミング」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
「高性能プログラミング」という観点で調べてみた。

まずは、
高性能プログラミング(名古屋大学 須田礼仁先生) (2011/11/08追記左はリンク切れの模様.)→高性能プログラミング
高性能プログラミング

May9.gzに含まれているpptの出来に感動。キャッシュ、キャッシュライン、TLB、パイプライン等をここまで考慮してプログラムを書ける人ってほとんどいないと思う。プログラマ必読。この資料を使った昨日の須田先生の授業は今まで受けた授業で一番面白かった。




高性能並列プログラミング環境 建部修見先生

1対1通信の注意点(1)
•メッセージ到着順
 –(2者間では)メッセージは追い越されない
 –3者間以上では追い越される可能性がある

1対1通信の注意点(2)
•公平性
 –通信処理において公平性は保証されない
 –P1とP2がP0にメッセージ送信
 –P0は送信元を指定しないで受信を複数発行
  •P0はP2からのメッセージばかり受信し,P1からのメッセージがstarvationを引き起こす可能性がある

MPIとOpenMPの混在プログラミング
•分散メモリはMPIで、中のSMPはOpenMPで
•MPI+OpenMP
 –はじめにMPIのプログラムを作る
 –並列にできるループを並列実行指示文を入れる
  •並列部分はSMP上で並列に実行される。
•OpenMP+MPI
 –OpenMPによるマルチスレッドプログラム
 –single構文・master構文・critical構文内で、メッセージ通信を行う。
  •Thread-safeなMPIが必要
•いくつかの点で、動作の定義が不明な点がある
 –マルチスレッド環境でのMPI
 –OpenMPのthreadprivate変数の定義?
•SMP内でデータを共用することができるときに効果がある。
 –必ずしもそうならないことがある(メモリバス容量の問題?)



高性能Linuxクラスタリング、第1回:クラスタリングの基本

http://www.ueda.info.waseda.ac.jp/~kei/koukyuu/

高性能プログラミング(I) 入門編 片桐孝洋 先生 必読
高性能プログラミング(II) 上級編 黒田久泰 先生 レイテンシの隠蔽の話あり


並列数値処理の基本演算 片桐孝洋 先生

実装上の注意
  “MPI_SEND”と全部大文字で書くと、Fortranのサブルーチンが呼ばれる。
  引数エラーとなり、コンパイルできない
  C言語のMPI関数名は、“MPI”の後の最初の1文字のみ大文字であることに注意する。

ベクトル同士、行列ベクトルの積、リダクション演算。

1.7 リダクション演算
  性能について
   リダクション演算は、1対1通信に比べ遅い
    プログラム中で多用すべきでない!
  MPI_Allreduce はMPI_Reduce に比べ遅い
   MPI_Allreduce は、放送処理が入る。
   なるべく、MPI_Reduce を使う。

参考文献(1)
1. BLAS http://www.netlib.org/blas/
2. LAPACK http://www.netlib.org/lapack/
3. ScaLAPACK http://www.netlib.org/scalapack/
4. スパースBLAS http://math.nist.gov/spblas/

参考文献(2)
1. MPI並列プログラミングMPI並列プログラミング、P.パチェコ著/ 秋葉博訳
2. 並列プログラミング虎の巻MPI版、青山幸也著、
理化学研究所情報基盤センタ ( http://accc.riken.jp/HPC/training/text.html
3. Message Passing Interface Forum ( http://www.mpi-forum.org/
4. MPI-Jメーリングリスト (http://phase.hpcc.jp/phase/mpi-j/ml/
5. 並列コンピュータ工学、富田眞治著、昭晃堂(1996)




高性能プログラミング技法の基礎(1) 片桐孝洋 先生 これはうらやましい。

講義の流れ
1. 階層キャッシュメモリ
2. 演算パイプライン
3. ループアンローリング
4. 配列連続アクセス
5. 演習課題
6. レポート課題
3 スパコンプログラミング(1)、(Ⅰ)

演算パイプラインのまとめ
  演算器をフル稼働させるため(=高性能計算するため)に必要な概念
  メインメモリからデータを取ってくる時間はとても大きい。演算パイプラインをうまく組めば、メモリからデータを取ってくる時間を<隠ぺい>できる(=毎単位時間、演算器が稼働した状態にできる)
  実際は以下の要因があるので、そう簡単ではない
  1. 計算機アーキテクチャの構成による遅延(レジスタ数の制約、メモリ→CPU・CPU→メモリへのデータ供給量制限、など)。
  ※HA8000のCPUは<AMD 64>ベースである。
  2. ループに必要な処理(ループ導入変数(i, j)の初期化と加算処理、ループ終了判定処理)
  3. 配列データを参照するためのメモリアドレスの計算処理
  4. コンパイラが正しくパイプライン化される命令を生成するか

キャッシュライン衝突への対応
  キャッシュライン衝突が生じた場合防ぐ方法は以下(このサイズの計算を避けるという自明な解以外)
  1. パディング法: 配列に(2冪でない)余分な領域を確保し確保配列の一部の領域を使う。
  余分な領域を確保したうえで、(&A)++;など
  コンパイラによるオプション在り
  2. データ圧縮法: 計算に必要なデータのみ、新しい配列をキャッシュライン衝突しないように確保し、必要なデータを移す。
  3. 予測計算法: キャッシュライン衝突が起こる回数を予測するルーチンを埋め込み、そのルーチンを配列確保時に呼ぶことで対応。

参考文献(最適化全体)
 1. 寒川光、「RISC超高速化プログラミング技法」、共立出版、ISBN4-320-02750-7、3,500円
 2. Kevin Dowd著、久良知真子訳、ハイ・パフォーマンス・コンピューティング:RISCワークステーションで最高の性能を引き出すための方法」、インターナショナル・トムソン・パブリッシング・ジャパン、ISBN4-900718-03-3、4,400円

参考文献(T2K & AMD 64 )
 1. 黒田久泰、高性能プログラミング(Ⅱ)上級編、東京大学情報基盤センタースーパーコンピューティングニュース、pp.12~25、Vol.10、No.5 (2008.9)
 2. Software Optimization Guide for AMD64 Processors,Advanced Micro Devices, Inc., Publication #25112,Revision:3.06, September 2005
 3. AMD64 Architecture Programmer's Manual Volume1:Application Programming, Advanced Micro Devices, Inc.,Publication #24592, Revision:3.14, September 2007



その他の高速化技術 片桐孝洋 先生

参考文献
  寒川光、「RISC超高速化プログラミング技法」、共立出版、ISBN4-320-02750-7、3,500円
  Kevin Dowd著、久良知真子訳、「ハイ・パフォーマンス・コンピューティング:RISCワークステーションで最高の性能を引き出すための方法」、インターナショナル・トムソン・パブリッシング・ジャパン、ISBN4-900718-03-3、4,400円





ハイ・パフォーマンス・コンピューティング―RISCワークステーションで最高のパフォーマンスを引き出すための方法ハイ・パフォーマンス・コンピューティング―RISCワークステーションで最高のパフォーマンスを引き出すための方法
(1994/07)
ケビン ダウド

商品詳細を見る


RISC超高速化プログラミング技法RISC超高速化プログラミング技法
(1995/08)
寒川 光

商品詳細を見る


MPI並列プログラミングMPI並列プログラミング
(2001/07)
P. パチェコ

商品詳細を見る


実践MPI‐2―メッセージパッシング・インタフェースの上級者向け機能実践MPI‐2―メッセージパッシング・インタフェースの上級者向け機能
(2002/09)
ウイリアム グロップラジーブ タークル

商品詳細を見る


並列コンピュータ工学並列コンピュータ工学
(1996/08)
富田 真治

商品詳細を見る


スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/148-b4c2f9a5
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。