PR:この記事にはアフィリエイトリンクが含まれます。
MPIの本は、通信の基礎から大規模計算の性能評価まで範囲が広く、目次だけでは自分に合う一冊を見極めにくいですよね。CとC++のどちらで書くのか、基礎を固めたいのか応用へ進みたいのかによって候補も変わります。
今回はMPIの基礎を扱う書籍や、C++で実装を学ぶ本を紹介します。複数の並列化方式や性能分析まで学べる本も含めて、5冊を並べました。
MPIの役割
MPIは、複数のプロセスがメッセージを送り合い、ひとつの処理を分担する仕組みです。各プロセスが別々のメモリを使う分散メモリ型計算で、データの受け渡しを組み立てる際に使います。
たとえば配列をプロセスごとに分けて計算し、結果を集める処理にはscatterやreduceなどの集団通信を使えます。全プロセスに同じ値を届けるbroadcastも基本機能のひとつです。
C++からMPIを使う場合も、通信関数を呼び出して処理を組みます。MPI-3では従来のC++言語バインディングが削除されたため、C++の文法とMPIのC APIを別々に理解するとすっきりしますよ。
5冊の早見表
最初に5冊の対象と主な内容を見比べます。出版年やページ数も載せたので、学びたい分野と本のボリュームをつかみやすいでしょう。
| 書籍 | 仕様 | 主な内容 | 向いている人 |
|---|---|---|---|
Introduction to HPC with MPI for Data Science | 2016年・282ページ | C++、通信、並列ソート、線形代数 | C++で実装を始めたい人 |
Using MPI: Portable Parallel Programming with the Message-Passing Interface | 第3版・2014年・336ページ | MPI-3.0、基礎、集団通信、性能測定 | MPIの標準的な考え方を学びたい人 |
Using Advanced MPI: Modern Features of the Message-Passing Interface | 2014年・392ページ | MPI-3の高度な機能、並列入出力、RMA | 基礎の次に進みたい人 |
An Introduction to Parallel Programming | 第2版・2021年・496ページ | MPI、Pthreads、OpenMP、CUDA | 並列化方式を広く知りたい人 |
Lectures on Parallel Computing | 2026年・305ページ | MPI、OpenMP、pthreads、性能分析 | 演習で並列計算を学びたい人 |
MPIを順序立てて学びたい人には、Using MPIを読んでからUsing Advanced MPIへ進む流れがおすすめです。C++の実例を早めに動かしたい場合はIntroduction to HPC with MPI for Data Scienceから始められます。
紙版の価格は販売先や在庫、時期によって変動します。購入時の表示額を確かめてください。価格とあわせてページ数や扱う内容も見れば、読みたい範囲に合う本を見つけやすくなります。
C++で始める
C++でMPIプログラムを書きながら学びたい人には、Frank Nielsen著のIntroduction to HPC with MPI for Data Scienceがおすすめです。2016年刊で282ページあり、基本的なプログラミング知識を持つ学部生を対象としています。
点対点通信の章ではブロッキングとノンブロッキングを扱います。broadcast、scatter、reduceなどの集団通信も学べます。また、コミュニケーターを分割したりプロセスを削除したりする例があり、プロセスのグループ化を具体的に理解できます。
並列ソートや線形代数に加えて、クラスター上のデータ分析も題材です。章末演習とC++とMPIのソースコードを使い、手を動かしながら通信の流れを確かめられます。実装例を読みつつMPIを学びたい人におすすめです。
MPIの基本を固める
William Gropp・Ewing Lusk・Anthony Skjellum著のUsing MPI: Portable Parallel Programming with the Message-Passing Interfaceは第3版です。2014年刊の336ページで、MPI-3.0を扱います。内容はMPIの基礎から中級までです。
CとFortranの例を使い、コミュニケーターやデータ型、トポロジーと集団通信などを説明します。関数を覚えるだけでは見えにくい、どのプロセス同士が何をやり取りするのかも整理しやすいでしょう。
非ブロッキング通信や並列ライブラリに加えて、性能測定やエラー例も収録。プログラムを動かすだけでなく、通信待ちや実行時間にも目を向けたい人におすすめです。MPIの基本を固める本として手元に置きやすい内容です。
MPIを深く学ぶ
基本的な送受信と集団通信を学んだ後に読みたいのがUsing Advanced MPI: Modern Features of the Message-Passing Interfaceです。William Gropp・Torsten Hoefler・Rajeev Thakur・Ewing Luskの共著で、2014年刊の392ページ。MPI-3の高度な機能を扱います。
非ブロッキング集団通信と近傍集団通信を扱うほか、コミュニケーターの生成や動的なプロセス管理も取り上げます。リモートメモリアクセスと並列入出力も解説し、複数ノードを使う計算で使える機能を学べます。
性能情報インターフェースやMPIデバッガーインターフェースも扱います。これらを通してコードの挙動を調べる方法を学べます。MPIの基礎を終え、MPI-3の機能を設計に取り入れたい人におすすめです。
並列方式を広く学ぶ
MPI以外の並列化方式もまとめて知りたい人には、PachecoとMalensekのAn Introduction to Parallel Programmingがおすすめです。第2版は2021年刊の496ページで、並列プログラミング経験が少ない学生や専門職を対象としています。
MPIに加えてPthreads、OpenMP、CUDAも取り上げています。小さな例から始まり、設計やデバッグを経て性能評価まで学べる構成です。
分散メモリのMPIと共有メモリ型やGPUを使う方式を一冊で学べる点が特徴です。MPIを中心に掘り下げたい人には範囲が広めですが、並列プログラミング全体を学び始める人にはおすすめです。
演習で学ぶ
並列計算の基礎とMPIを合わせて学びたい人には、Jesper Larsson Träff著のLectures on Parallel Computingが合います。2026年刊の305ページで、学部生や大学院生、並列計算に携わる実務者を対象としています。
171〜287ページのMPI章では、コミュニケーターや点対点通信に加えて、ノンブロッキング通信と集団通信を扱います。C風のコード例を使っており、C系の言語で実装を考える人にも読みやすい構成です。
通信の計算量や性能を扱う演習もあります。実装後に処理時間のかかる場所を考える練習になり、性能の見積もりまで手を動かしたい人におすすめです。
結論
C++でMPIプログラムを書きながら学びたいなら、Introduction to HPC with MPI for Data Scienceを選ぶのがおすすめです。通信の基礎から並列ソートまで、演習とソースコードを使って実装を学べます。
Using MPIならMPIの考え方を基礎から体系的に学べます。MPI-3の高度な機能を学ぶ人にはUsing Advanced MPIがおすすめです。MPI以外も含めて並列化方式を広く知りたい場合はAn Introduction to Parallel Programmingが合います。
通信と性能分析を演習で学びたい人には、Lectures on Parallel Computingがおすすめです。実装する題材に近い章を参照できるため、読み終えた後も使い続けやすいでしょう。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。






