Message Passing Interface
MPIへの取り組みは1991年夏にオーストリアの山荘での、小規模な研究者のグループのディスカッションから始まった。その議論は、翌1992年4月29-30日のバージニア州ウィリアムズバーグで、分散メモリ環境のためのメッセージパッシング規格の標準化についてのワークショップに引き継がれた。このワークショップでは標準的なメッセージパッシングインタフェースに必須となるであろう基本的な機能について議論され、標準化に向けてワーキンググループが設立された。ジャック・ドンガラ、Rolf Hempel、Tony Hey、David W. Walkerは1992年11月にドラフトを提案し、これがMPI1となった。1992年11月にはMPIワーキンググループの会議がミネアポリスで行われ、そこで標準化プロセスをより公式な仕組みに乗せることが決められた。MPIワーキンググループは1993年の最初の9ヶ月間は6週ごとにミーティングを行った。MPIのドラフトの標準規格は1993年11月のスーパーコンピューティング・カンファレンスで発表された。パブリックコメントの期間を経て、その内容がMPIに反映され、1994年6月にMPI version 1.
多くのMPIの実装では、C、C++、Fortranから直接呼ぶことのできるいくつかのルーチンを中心として構成されている。そしてC#やJava、Pythonなどの他の言語はCなどで作ったライブラリを介せばMPIを利用できる。MPIがMPI制定以前のメッセージパッシングライブラリよりも優れているのは、移植性とスピードである。MPIはほぼ全ての分散メモリ環境で実装されているので、それらの環境間ではどこへでも移植可能で、各ハードウェアに対して実装されるときに最適化されているので高速に動作する。
MPIは言語独立の仕様(Language Independent Specifications; LIS)を採用しているため、どのような言語からでも呼び出せる。最初のMPIの標準はANSI CとFortran-77とのバインディングの仕様とLISであった。ドラフトの仕様は1994年のスーパーコンピューティングのカンファレンスで公開され、その後すぐに承認された。2008年のMPI-1.3は128関数から構成され、それがMPI-1のシリーズでは最後とされている。
MPIは現在ではいくつかのバージョンがあり、1.3(通称MPI-1)は静的な環境下におけるメッセージパッシングのために使用され、MPI-2.2(通称MPI-2)は並列I/Oや動的プロセス管理、遠隔メモリ操作等の新機能を含んでおり、MPI-3.0(通称MPI-3)はグループ通信のノンブロッキング拡張やリモートメモリアクセスの片方向通信の拡張などを含む。