アイスランドクローネ日記帳

音楽のこと、旅行のこと、ふと思ったこと、全く思っていないこと等を書きます。

マルチコアCPUのための並列プログラミング[安田 絹子、他(著)] (秀和システム)

並列プログラミングの基礎を勉強できる本です。


タイトルに「マルチコア」とありますが、シングルコアにも共通の話題も多いです。
結局一番気をつけないといけないのは同期のところなので、そこはシングルコアマルチスレッドと同じです。

マルチコアで計算時間を短縮化する方法としてデータ並列化とタスク並列化は素直ですが、
パイプラインは少なくともこの本の例ではなかなか厳しそうでした。
パイプラインは2個や4個のコアには並列化できそうだけど、
10個を越えると同期を取るだけでかなり時間をくいそうです。
画像処理まわりで実際に使われているとのことなので、読んでみたいです。

テクニカルな内容のみの本かと思っていたら、設計手法の話もあったのが少し意外でした。
並列化の前に既存のシングルスレッドプログラムのプロファイルを取って、
並列化後の計算時間をアムダールの法則で見積もりましょうというとのこと。
アムダールの法則は当たり前すぎて法則って名前つけるものじゃないだろ、と常々思ってましたが、
こうやって名前が付いていると重要性もはっきりするし、いいことなんだろうなと思います。
ムーアの法則みたいに根拠がいい加減ではないし。

プロセスやスレッドとコアの対応はOSが握っているので、
マルチコアのつもりで書いても全部同じコアで実行されたらどうするのかな、と思っていたんですが、
コアを指定する方法が載っていたので疑問が解決しました。
でもそんなことをやったら同時に起動中の他のアプリケーションに影響が出そうだけどどうなんでしょうか。

あとGPU関連の本と違って、共有メモリに惜しみなくアクセスするので気が楽です。
入門書だからなのか、そもそもマルチコアではあんまり気にしないものなのかわかりませんが。

最後に付録っぽい感じでOpenMPとCellの話題が載っていて楽しかったです。
OpenMPは既存のシングルスレッドのコードを構造そのままで並列化するっていう方針がいいですね。
でも実際の動きがどうしても見えにくくなるので、変なことやってないか不安になりそうです。
自分でスレッド分割をゴリゴリ書くのと最適化の具合はどっちがどうなんだろう。

CellはPS3で話題になってたころから名前だけしか知らなくてやっと概要を知ることが出来ました。
計算専用の小さいコア達がGPUみたいで、CPUとGPUの中間くらいのコンセプトなんですね。
使いこなすのが大変そうで気が遠くなります。

図書館でパラパラめくっていたら個人的に好きなマンデルブロー集合の絵があったので
思わず借りて来てしまったのですが、マンデルブロー集合そのものの説明が全くなくてびっくりしました。
知らないヤツは自分で調べろということなんでしょう。
アーサー・C・クラークのSF小説「グランドバンクスの幻影」に出てくる
マンデルブロー集合の形の湖が忘れられません。

  1. 2017/02/18(土) 23:28:41|
  2. | トラックバック:0
  3. | コメント:0
<<ユーザーズディジタル信号処理[江原義郎(著)](東京電機大学出版局) | ホーム | 実践テスト駆動開発 [Steve Freeman, Nat Pryce(著), 和智右桂, 高木正弘(訳)] (翔泳社)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://myumbrella.blog42.fc2.com/tb.php/349-eadb3384
この記事にトラックバックする(FC2ブログユーザー)