Entry

かなり前に買った本 - 『マルチコアのためのIntelスレッディング・ビルディング・ブロック入門』

2009年08月18日

ここしばらくずっと思っているんですけど,これからの C/C++ プログラマはマルチスレッドでプログラミングできないとダメだわ……とか云々。あ,遅いっすか。

マルチコアのためのIntelスレッディング・ビルディング・ブロック入門―マルチコアCPUの能力を引き出すプログラミング技法
日向 俊二
カットシステム
売り上げランキング: 249580

というのも,ここ数年のハードウェア環境が,マルチコアな CPU を当たり前のように使うようになっているから。今さらな話だけれども。近頃は CPU の性能が上がったといっても,コア単体の動作速度はそれほど変わりません。これまでは,CPU の性能(端的に言えばクロック数)が上がれば,自動的にソフトウェアの実行速度が上がったわけだけれども,今後そういうことは望めません(「フリーランチ(ただ飯)の時代は終わった」とか言われる)。まともに CPU の力を引き出すには,すべてのコアを効率よく使ったマルチスレッドなプログラミングが必須になります。

特に,C/C++ プログラマにとってマルチスレッドプログラミングの技術を意識的に身に付ける必要があると思うのには,理由があります。それは,Java にしても Perl にしても C# にしても,使いやすいスレッディングライブラリがすでに整っているから。Java や C# からは,簡単にマルチコアを生かしたプログラムを書けてしまう(Java の VM は微妙に怪しいんだけれども)。一方,C/C++ のプログラミングでスレッドを扱うのは,本質的に低レベルな作業で難しいわけで,ぼやぼやしているとスケーラビリティの点で Perl にも負けるようなプログラムが簡単に量産されることになってしまいます。「C/C++ のプログラムは速い」とか,しばらく言われてきたわけだけれども,これからは,へっぽこが書いた C/C++ プログラムと比べたら,Java プログラムの性能の方が1桁違う(高い)とかいうことが,普通にありうるんじゃないかと思います。

昔は,スレッドをゴリゴリ使ったプログラムなんて,ゲームとか一部のプログラムにしか使わなかったんですけどね。今や必須技術。

ということで,前置きが長くなってしまったけれども Intel TBB です。

Intel TBB(Threading Building Block)は,Intel が無償/有償で提供しているスレッディングライブラリです。あたしゃ有償版を持っているんですけれど,これは本当に使いやすい。マルチスレッドのプログラムに必要な,スレッドの生成,制御,同期を特に意識しなくても,簡単にマルチスレッドのプログラムを書くことができます。プログラマがやるべきことは,並列化できる処理を探して,TBB に置き換えるだけ。

で,本書はその TBB の入門書なんですけれど,並列プログラミングの基礎からライブラリの使い方まで簡単に説明している書籍です。「簡単に」というところがポイント。ライブラリの全体をまんべんなく扱っているので,本書を読んでおけばとりあえず使えるようになるはずです。ただ,それだけでも,TBB の威力は実感できるはず。

一方で,マルチスレッドのプログラミングは API なりライブラリなりの使い方を知るだけではダメで,使い方の勘所を踏まえておく必要があります。並列化すれば速くなるところを,速くなるやり方で並列化しないと速くならない(当たり前だけど)。この点で,TBB の使い方ではなく,イディオム等も含めた利用方法を扱った解説書はあまりありません。強いてあげれば,本書のほかにはオライリーのごっついのがあるくらい。オライリーにしては薄い方なので,これでもまだ概説書の類なんでしょうけど。マルチスレッドプログラミングにある程度なじみがあって,本格的にライブラリを使いたくなったら,こっちを選ぶ方がいいのかも。

インテル スレッディング・ビルディング・ブロック
James Reinders
オライリー・ジャパン
売り上げランキング: 101639
おすすめ度の平均: 4.5
5 メニイコア時代を迎えるための必読本
4 内容そのものは良いが、訳がいまいち

この頃は,エクセルソフトが Intel を担いで,並列化関連の書籍がたくさん出版されるようになりました。TBB を使わない場合は,OpenMP の選択肢もあるわけだけれども,これについても解説書が用意されるようになりました。

C/C++プログラマーのためのOpenMP並列プログラミング
菅原 清文
カットシステム
売り上げランキング: 42227

そろそろ,本格的にマルチコア CPU に対応したプログラムを書けるようにならないと,C/C++ 使ってる意味ねんじゃね?とか言われそう。脅迫観念を伴いつつ,しばらくマルチコアの日々を送ろうと思ったのでした。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN