並行コンピューティング技法1章

2
Shinichi Tokunaga @deepneko

並行コンピューティング技法読む。

2010-01-02 15:25:16
Shinichi Tokunaga @deepneko

自動車に魔法を施す人をグリースモンキーと呼ぶのに似ており、スレッドモンキーは並行プログラミングの魔術師です。

2010-01-02 15:26:22
Shinichi Tokunaga @deepneko

コードモンキーが軽蔑の意味も含むのに対し、スレッドモンキーは尊敬の称号です。

2010-01-02 15:26:48
Shinichi Tokunaga @deepneko

性能チューニング:各スレッドに不均等に割り当てられた処理、スレッドAPIコールのオーバーヘッドなどの問題の発見。

2010-01-02 15:39:14
Shinichi Tokunaga @deepneko

目標:シングルコアでもマルチコアでも大幅に変更することなく実行可能なプログラムを開発すること。

2010-01-02 15:27:33
Shinichi Tokunaga @deepneko

スレッド化手法は分析・設計と実装・正当性・性能チューニングの4つのステップからなる。

2010-01-02 15:33:35
Shinichi Tokunaga @deepneko

分析:スレッド化可能な部分(独立した処理)をソースコードから見つけ出す

2010-01-02 15:34:49
Shinichi Tokunaga @deepneko

設計と実装:アルゴリズムをスレッド化する(後述

2010-01-02 15:35:17
Shinichi Tokunaga @deepneko

正当性の検証:データ競合やデッドロック回避だけでなく、丸め誤差エラーなどの誤り検出もしましょう。

2010-01-02 15:36:49
Shinichi Tokunaga @deepneko

まぁ他にもいろいろ。非効率なキャッシュ共有、バスのオーバーロードなどなど。

2010-01-02 15:40:23
Shinichi Tokunaga @deepneko

スクラッチ開発はおすすめしません。逐次ソースコードから始めて並列化しましょう。

2010-01-02 15:41:19
Shinichi Tokunaga @deepneko

共有メモリプログラミングと分散メモリプログラミングの違い。

2010-01-02 15:51:46
Shinichi Tokunaga @deepneko

分散メモリは送受信を行わなければなりませんが、共有メモリは文字通りメモリを共有しているのでメモリ更新ですみます。

2010-01-02 15:55:46
Shinichi Tokunaga @deepneko

キャッシュラインの共有の話が・・・なんかようわからん。

2010-01-02 15:57:32
Shinichi Tokunaga @deepneko

共有メモリプログラミングの利点をいかすためにはProducer-Consumerパターンを使いましょう。

2010-01-02 15:58:16
Shinichi Tokunaga @deepneko

参照回数が多くて更新回数が圧倒的に少ない共有変数にはリードライトロックを使いましょう。

2010-01-02 15:59:24