MPIの先を観る時?
Tiffany Trader

MPI …Message Passing Interfaceの頭文字の略で、まだ一部の場所ではHPCとほぼ同義である。これは数年前に真実であったが、今でもそうだろうか? 博士課程にいるAndreas Schäfer(専門:HPC、スーパーコンピューティングおよび離散最適化)の最近のブログは、この話題に取り組み、そのプロセスの中で多くの優れた質問を挙げている。
「MPIは、数十年以来、死んだと宣言されているにもかかわらず、HPCとスーパーコンピューティングで最も広く使用されている技術のひとつになっていることは特異な状況です。」と彼は書いている。「最近しかし、私の鼻は私を悩ませる幾つかの匂いを感じとっています。そして他にも。」
Schäferは、MPIが滅びる時流に乗っていないと言う。どちらかと言えば、この技術は複数のHPCの進歩を通じて継続する驚くべき粘り強さを示している。InfiniBandとマルチコア、アクセラレータはすべて、多かれ少なかれMPIに挑戦しており、そしてMPIは滅びず、次の大きなフロンティアへの全ての道としてエクサスケール・コンピューティングのためにMPIは適応し、進化する。
ここでSchäferが触れた主な点をいくつか挙げる:
- なぜこれほど多くのMPI実装が、うまくMPI_THREAD_MULTIPLEをサポートするために苦労しているのか。
- 2 GB以上のブロックの送信/受信の問題。
- Boost.MPIが多くの「失われた」機能を思い起させるにもかかわらず、 C++バインディングがMPI-3から削除された。
- 非同期進捗と各アプローチでの問題を達成する方法と、コミュニティの期待についての短い議論。Schäferは、「一般的でユーザフレンドリーな方法」で並列処理を表現する可能性について考える。
- 壊れた、メンテナンスされていないコードと失われた機能に関する問題。
彼のポイントの纏めの中でSchäferは書く:
- MPIは使い易くなっておらず、しかも難しい。大成功するために通常のユーザが終わらせなくてはならないブードゥーダンスである。例えば、完全に通常の2ソケット、 16コア・ノードは無意味である: 非同期進歩のためにMPIをポーリングし、ひとつのスレッドの中へMPI呼び出しを流し込むためにカスタムロック方式を用いて、32ビット整数の限界を回避するために任意のチャンク中へデータを詰め込む。
- 以前に使用可能で便利な機能は、削除されてしまい、時に混乱し、時にユーザを遠ざける。
- ありふれた変化(例えばsize_t型の使用)は、実装するのが不可能に近いようだ。
Schäferは、 MPIがいつでもすぐに離れて行くとは思っていないが、一般的な計算ライブラリや固有の領域の問題を解決する環境に対する傾向があると言う。彼はまた、前進可能な道筋としてHPX (High Performanc ParallelX )を示す。それは成熟していないが、Cの代わりにC++を用い、Schäferによると「複雑さを管理するための幾つかの洗練された方法」だと言う。