他の本

dead spaceなんかにはまったもんだから、眠い。爆睡してしまった。まだ眠い。
とりあえず残り書く。*1

洋書系

やっぱり話題になる本はよい本。

The Art of Multiprocessor Programming

The Art of Multiprocessor Programming

邦訳も出たそうなのでそちらを買ってもよいかも。theoreticalな部分とpragmaticalな部分が程よく共存したバランスの良い本。新しいので、数年前のIDFでも話題になったTransactional Memoryなど結構最近のトピックも載っている。基本的に共有メモリ型の密結合マシン=最近のマルチコアを対称にしているので、GPUのSPという今回の目的にはマッチしているかも。あと、次の本もそうなんだけど、この手の本はなんともJava orientedが多い。
基礎編はクリティカルセクションからBaker's lockとかのlock方式から、平行オブジェクトの振る舞いのクラスと正しさの話とか*2、メモリモデル、同期のための機構(どこまでをアトミックとするか)などなどを細かく見ていく。
実践編に進むといきなり泥臭いspinlockとかを解説した後、他のロック、そしてそれを使ってリストやキューやスタックやハッシュや、、、と実際のアルゴリズムに並列を適用していく。で、この本の中でもーすとべりー重要ポイント*3、どうやって問題を並列機構がうまく動くように分割して、それを分配するか、スケジューリングは?などを 16章でやる。その後はバリア同期やトランザクショナルメモリやら、いくつかトピックスを扱って終わり。

Concurrency: State Models and Java Programs

Concurrency: State Models and Java Programs

またJava、、、じゃあなくて、こちらは並列処理の本というよりはモデルチェッキングとかそっちの話の本なんだけど、デバッグのことを考えると一応紹介しておいたほうが良いかと思って紹介。LTS(Labeled Transition System)というペトリネットみたいな要するに状態遷移グラフをつかってシステムの健全性を半自動的に出しましょう見たいな話。実はまだちゃんと読めてない。

邦書系

ご存知結城先生のJavaデザパタのマルチスレッドパターン本。特有のふにゃふにゃイラストが好き! Guarded Suspensionとか Futureとか Worker Threadとかは上本にもあるけれど、Balking(不要になったらやめちゃう)とかTwo-Phase Terminationとかより実践的なので勉強になる。この本はまとめのパターン・ランゲージの早見ページがとてもとてもありがたい。

あとゆるい系で、、、

マルチコアCPUのための並列プログラミング

マルチコアCPUのための並列プログラミング

これはpragmatic中心で、つまりは良くあるHowToタイプ。理論は最小限に、とにかくプログラムを動かしてみて覚える、という僕たちゲーム世代にはありがたい方針になっている。前半はPCで、ということでWin32Threadとpthreadを使って解説している。この本だけで、とりあえずmutexとかsemaphoreとか並列プログラム書くため必要な機構は一通り学べるライトウェイトな感じ。そのくせ内容は結構高度で、マンデルブロとかありがちなのだけでなくレイトレースまで扱っている。
さらに、(株)フィックススターズ編、という部分でピンと来る方も多いと思うけど、CellBE編まで収録している。さすがにこの本の内容だけでMFCを使いこなせたりとかはしないけれども、実はものすごいお買い得本だと思う。
#特に今回の目的にはこの本が一番フィットしているかもです。

後何冊かあったと思うのですが良く覚えていませんごめんなさいごめんなさい

おまけ

絶版ですー。中古しかありません。たぶん

計算機設計技法―マルチプロセッサシステム論

計算機設計技法―マルチプロセッサシステム論

大雑把には3部構成で1.コンピュータアーキテクチャ全般 2.共有メモリ型 3.非共有メモリ型 となっている。
特に1部は3章までをメモリシステムで占めるという偏り気合の入れよう。置換アルゴリズムワーキングセットの基礎など揃っていて、記憶階層を一通り押さえられる。ちなみに残りはパイプラインとスーパースカラ以前のCISC,RISCの大雑把説明。
2部からはマルチプロセッサシステムのお話になる。分類方法や具体例、ネットワークトポロジなど、イカにもな内容。具体例にはビット構成SIMDとか、どっかの会社の最先端組み込みプロセッサ(エムなんとか)のようなアイディアも載っていたり。ソフト的な問題点やセマフォなどの説明もここにある。Bernstein条件とか「OSの本?」というような説明もあって、なんというか偏っている(うそうそw)。あとは結合方式として、単一バス、相互結合網と進む。ハイパーキューブだとかクロスバーだとか、CM-1とかのいわゆるスパコンの時代を回顧できそうなキーワードが並ぶ。
3部はメッセージパッシング系。普通の巨大な冷蔵庫のようなスパコンの話だけでなくトランスピュータとかの話もあって面白い。最後はデータフローマシンの話をして*4。パタヘネほど詳細ではないけれども演習問題も充実。
中古で安いので損はないと思うけど、役に立つかどうかは微妙。爺さんの解雇懐古話ネタにはいいかも。という程度です。

追記:素で間違えた!面白すぎるよことえりさん!

*1:dead spaceは最後まで行きました!グロかった

*2:いまだにquiescent consistencyとか訳わかめだったりしますが、たぶんFIFO的な実行モデルなのかな。QCDもそんな感じだと思う

*3:学生時代にこの章読んでたら人生変わってたかも。ちとオーバーかな

*4:余談ですが当初は僕も研究でMonsoonとかEM-1とか調べたような記憶があります。風化してますが