[論文レビュー] 300x Faster Matlab using MatlabMPI
この論文では、標準的なファイル I/O を使用して、Matlab で高性能並列計算を可能にする、軽量で純粋な Matlab 実装である MatlabMPI を提示している。Matlab の組み込みファイル操作を活用することで、わずか 70 行のコードで 304 コアで最大 300 倍の高速化を達成し、ソフトウェアの価格性能(1 SLOC 当たり 0.85 GFLOPS)において前例のない水準に到達した。
The true costs of high performance computing are currently dominated by software. Addressing these costs requires shifting to high productivity languages such as Matlab. MatlabMPI is a Matlab implementation of the Message Passing Interface (MPI) standard and allows any Matlab program to exploit multiple processors. MatlabMPI currently implements the basic six functions that are the core of the MPI point-to-point communications standard. The key technical innovation of MatlabMPI is that it implements the widely used MPI ``look and feel'' on top of standard Matlab file I/O, resulting in an extremely compact (~250 lines of code) and ``pure'' implementation which runs anywhere Matlab runs, and on any heterogeneous combination of computers. The performance has been tested on both shared and distributed memory parallel computers (e.g. Sun, SGI, HP, IBM and Linux). MatlabMPI can match the bandwidth of C based MPI at large message sizes. A test image filtering application using MatlabMPI achieved a speedup of ~300 using 304 CPUs and ~15% of the theoretical peak (450 Gigaflops) on an IBM SP2 at the Maui High Performance Computing Center. In addition, this entire parallel benchmark application was implemented in 70 software-lines-of-code (SLOC) yielding 0.85 Gigaflop/SLOC or 4.4 CPUs/SLOC, which are the highest values of these software price performance metrics ever achieved for any application. The MatlabMPI software will be available for download.
研究の動機と目的
- 高性能コンピューティングにおける高いソフトウェアコストを低減し、生産性の高い Matlab コードを並列システムで効率的に実行可能にする。
- Matlab における広く採用され、ポータブルでパフォーマンスに優れた並列化ソリューションの不足を克服する。
- Matlab が利用可能なすべてのシステムで動作する、最小限でポータブルかつ高性能な MPI インターフェースを設計する。
- 高レベル言語である Matlab を用いても、最小限のコードで高性能並列計算を達成できることを示す。
提案手法
- 低レベルの C/Fortran 依存を回避するため、標準的な Matlab ファイル I/O を用いて MPI のポイントツーポイント通信を実装する。
- ファイルロックメカニズムを用いて、プロセス間のメッセージ送信と受信を同期する。
- メッセージ識別用のメタデータを含めたファイル書き込み/読み込み操作に、MPI 関数(例:MPI_Send、MPI_Recv)をマッピングする。
- MPI_Run コマンドを用いて分散実行を可能にし、複数のマシン上で並列 Matlab スクリプトを起動する。
- Matlab が利用可能な任意の異種クラスタで動作する、約 250 行のコンactな実装を設計する。
- 画像フィルタリングベンチマークで、隣接プロセス間のデータ交換を効率的に行うためにリングベースの通信パターンを採用する。
実験結果
リサーチクエスチョン
- RQ1大容量メッセージに対して、純粋な Matlab 実装の MPI が C に基づく MPI と同等のパフォーマンスを達成できるか?
- RQ2最小限でポータブルな Matlab 用 MPI インターフェースが、大規模並列システムで顕著な高速化を達成できるか?
- RQ3高レベル言語である Matlab を、軽量な並列レイヤーと組み合わせて使用した場合の、実現可能なソフトウェアの価格性能(例:SLOC 当たり GFLOPS)はどの程度か?
- RQ4MatlabMPI のパフォーマンスは、実際の HPC 環境における多数のプロセッサにスケーリングするか?
- RQ5生産性の高い言語としての Matlab が、効率的な通信レイヤーと組み合わせることで、スーパーコンピュータでピーク性能に近い性能を達成できるか?
主な発見
- MatlabMPI は、IBM SP2 で 304 コアを使用して 300 倍の高速化を達成し、理論ピーク性能(450 GFLOPS)の 15% を達成した。
- 画像フィルタリングベンチマークでは、SLOC 当たり 0.85 GFLOPS を達成し、当時報告された中で最高の値であった。
- MatlabMPI は大容量メッセージに対して C に基づく MPI と同等の帯域幅を示し、強力なパフォーマンスのポータビリティを実証した。
- 並列アプリケーション全体がたったの 70 行のコードで実装され、シングルスレッド版の 35 行から 100% 増加したが、依然として非常にコンactであった。
- 実装は完全にポータブルであり、外部ライブラリを一切使用せず、標準的なファイル I/O のみで、Matlab が利用可能なすべてのシステムで動作する。
- このアプローチにより、最小限のコーディングオーバーヘッドで生産性の高い並列計算が可能となり、ソフトウェアの価格性能の新たな基準を確立した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。