2016-11-26 4 views
0

は、私は現在、クラスのインストラクターとしてMPIを説明し、並列コンピューティング、上の入門コース取っています: -MPIはパラダイムかライブラリのセットですか?

  1. さらに別のマルチプロセッシングのパラダイムライブラリの
  2. セット
  3. APIを

私はMPIが正確に何であるか理解していません。ライブラリやAPIのセットであれば、なぜそれはまだパラダイムと呼ばれていますか?どの3つの用語のどれがMPIが最も正確に説明されていますか?

答えて

2

MPIは、データ(通常はintやdoubleなどのプレーンタイプの配列)を処理する方法です。これは、計算ノードのセット(潜在的には別々のマシン)の中の特定の「パターン」でデータを送受信するために使用できる関数を記述したAPIです(ライブラリではなくインターフェイスです)。

また、上記の操作をサポートする何らかの方法で互いに接続されているプログラムを起動する方法、および起動された各プロセスが所有しているピアの数を知る方法についても説明します。

OpenMPIやMPICHなど、複数の競合するの実装があります。のMPIがあります。 MPI仕様に準拠してプログラムを作成する場合は、MPIの実装をコンピューティングプラットフォームで使用することができます。しかし、1つのジョブ内のすべてのプロセスは、APIのみであり、実行時の実装間の相互運用性を保証しないため、同じ実装のMPIを使用する必要があります。

MPIがパラダイムと呼ばれる理由は、ほとんどのプログラマーにはよく知られていない特定の方法で分散コンピューティングを考える必要があるということです。ひとつの "本当の"プログラムでもそれを使ってしまえば、ソケットやメッセージキューを使ったプログラミングとは異なるデータ構造やアルゴリズムについての考え方が求められます。

1

純粋にMPIは、メッセージの受け渡しによる並列計算のモデル(実際には「パラダイム」)を概説するstandardです。この標準では、特定の言語(歴史的な理由から、CおよびFortran)のAPIも定義しています。サードパーティは自由に、標準に矛盾しない限り、それらが好きな実装の詳細を使用して、好きな言語でこの標準を実装するライブラリを書くことができます。

これは、C++言語とC++コンパイラの区別と少し似ています。言語は、プログラムの動作に特定の入力が与えられるべきものを指定する一連の規則です。コンパイラは、入力を受け取り、言語仕様に必要なすべての結果を生成するすべてのプログラムです。同様に、MPI実装は、プロジェクトにリンクし、MPI標準が規定するすべての結果を生成するために使用できるライブラリです。

0

API

これはMPIに最適です。最も重要なのは、MPIは、インターフェイス標準に合格するメッセージです。 MPIの大部分は、(アプリケーションプログラミング)インタフェースの定義であり、セマンティクスです。しかし、MPIは純粋なAPIを超えています。たとえば、MPIアプリケーションの起動も指定します。

マルチプロセッシングのパラダイム

MPIに関連付けられているパラダイムがいくつかあります。 メッセージは、通信の形態としてに渡されます。SPMD最も一般的に使用される実行計画として、単一のプログラム、複数のデータ。 MPIは、MPMD(複数のプログラム、複数のデータ)もサポートしますが。

ライブラリ

MPI 実装、などOpenMPIのとMPICHのセットは、ライブラリーです。しかし、それらは単純なライブラリを超えています。たとえば、コンパイルとリンク、および複雑なスタートアップインフラストラクチャを簡素化するコンパイララッパーを提供します。

関連する問題