片桐孝洋「スパコンプログラミング入門 並列処理とMPIの学習」東京大学出版

[ Amazon ] ISBN 978-4-13-062453-4, \3200

introduction_of_parallel_programming_with_MPI.jpeg

 まず最初に,本書はワシが自腹で(研究費でなしに私費で)買ったものであることを宣言しておくのである。そんなこと何の関係があるかといぶかる向きもあろうが,実は本書,著者から紹介メールを頂いていたのである。教科書として使う予定があるなら献本してくれるとのことであった。しかしどー考えても,うちの職場においては教科書として使うことは難しい(理由は後述)。参考書としてならもちろん筆頭に挙げられるのであるが。・・・ということを返信メールでいちいち書いていては先方も困る(つか,嫌がらせである)であろうということで,まずはここで「いちいち書いて」おき,メールではここの記事へのリンクを書いておき,これを短くまとめたものを添えておこうと考えた次第なのである。

 まず,著者はHPC(高性能計算)に携わって長い第一人者であり,本書はその研究経験と,学部・大学院,そして外部向けのセミナーにおける数多くの教育経験に基づいた有用な記述に富んでいることを,「自腹で買った」ワシは断言するのである。いやほら,献本してもらっちゃうとどーしても手加減してしまう可能性もあるし,自らの懐から取り出した3200円+税で買ったって事実は,前言が嘘偽りない正直な感想であることの証左なのである。
 実は最初,本書は通り一遍の「MPI入門書」だと思っていた。実際,入門書として使えるようになっているし,網羅的なハンドブックではなく,必要最小限のMPI関数だけ紹介している点,初学者には優しい作りにはなっている。
 しかし,「優しい」ということと「易しい」ということは発音は同じでも意味が全然違うのである。その意味で,本書はうちの職場ではちと教科書としては「難しい」内容を多く含んでいる。

 「難しい」という意味は二つあり,一つは内容,もう一つが環境の問題である。

 内容に関しては,線型計算,行列ベクトル積,行列積,LU分解の並列化という実践的で,理工系初年度の数学知識と,アルゴリズムを考える能力の二つを要求していることが挙げられる。いや,それが本筋であることは当たり前なのだが,噛み応えがある内容だけに,半期でLU分解の並列化まで辿り着くのはちと難しいかな,とワシには思えるのだ。ことにMPI以前に線型代数の基礎知識が怪しい学生を相手にする場合,ドロップアウトを極力避けるためにまずサンプルプログラムから提示し,動かしながらデータの動きを具体的に追っていくという手順が必要になる。ということで,ワシは自分でテキストを書いてしまっている。大体このやり方を取らないとうちではちと厳しいかな,というのがワシの教育的経験からくる判断なのである。本書の場合,オーソドックスに並列化方針を概念的に説明した後,それを実装する課題が来る。そのやり方,当然ワシもやっているのだけれど,このあたりで躓く学生が多数出る,という場合はフォローをせねばならない。この辺のさじ加減を踏まえたうえでテキストを書かねばならないので,正統的な本書はうちではちと厳しいかな,と。

 もう一つは環境の問題。今のうちの職場のPCクラスタでは,ぜいぜいGbE程度で結線するぐらいが関の山で,InfinibandとかDIMMnetとか10GbEで結合したマシンなんて用意できない。10年前ならCPUの能力も低く,シングルコアが普通であったので,GbEでつないでも,いや100BASE-Tでもそこそこ性能は出たのだが,今のようにマルチコアCPUがふつーで,マルチGPUも珍しくない,という計算ノード能力の向上が達成されてしまったら,GbEなんてNFSぐらいでしか使いようがない。とても本書でぶん回しているような線型計算の通信負荷には耐えられないどころかボトルネックになってしまう。そうなると,MPIを使って並列化したところで性能向上どころか性能低下の実験にしかならないのである。まぁ東大のFX10クラスのマシンがぶん回せる環境が提供できるなら,本書の有難味も体験できるのだが,うちの職場では現状ムリ,ということになる。せいぜいマルチコアCPUマシン1台内部で模擬的にMPIを触ってみる,というぐらいが関の山だ。Linuxが使えるならOpenMPIはタダでyumなりaptなりで引っ張ってこれるので,お好きな向きはコンシューマデスクトップマシンでMPIクラスタを組んでみるのもいい経験になるかもしれない。但し,通信性能が如何に重要かを身をもって経験することになるのだが(ワシみたいに)。

 しかし,本書には,MPIのみならずプログラムの並列化を行うに際して常に当てはまる経験的記述が豊富であり,環境的には厳しくても,噛み応えのある内容をしっかり身に着けたい向きには有用な教科書となることは間違いない。付録CDに,本書で解説されているプログラムが収録されているのもgoodだ。CDじゃなくてWeb配布にして販売価格を安くしてくれたらbestだったが。

 是非ともビンボくさいGbEクラスタでドンくらいの性能が出るのか,PCに囲まれたオタクにはチャレンジしてもらいたいものである。ちなみにワシは本書のLU分解の並列化を卒研ネタにしようと考えている。