2011-03-22 8 views

答えて

0

ランクは、プロセスに番号を付ける論理的な方法です。たとえば、16の並列プロセスを実行しているとします。現在のプロセスのランクをMPI_Comm_rankで照会すると、0-15となります。

ランクは、プロセスを互いに区別するために使用されます。基本的なアプリケーションでは、ランク1〜15の "スレーブ"アプリケーションにメッセージを送信するrank = 0の "master"プロセスがあるでしょう。より高度なアプリケーションでは、ランクを使用して作業負荷をさらに分割することができます(つまり、ランク0のマスタプロセス、1-7は機能Aを実行、8-15は機能Bを実行します)。

1

Hereは私がMPIをすべて学んだリソースです。役に立つと思うかもしれません。

プロセスは実行中のプログラムの実際のインスタンスです。 MPIでは論理的なのグループのプロセスを作成することができ、各グループでは、プロセスはのランクで識別されます。これは[0、N-1]の範囲の整数で、Nはグループのサイズです。 コミュニケータは、プロセス間の通信を処理するオブジェクトです。 内部コミュニケータは、単一グループ内のプロセスを処理し、インターコミュニケータは、2つの異なるグループ間の通信を処理します。

デフォルトでは、すべてのプロセスを含む単一のグループと、それらの間の通信を処理するイントラコミュニケータのMPI_COMM_WORLDがあります。これはほとんどのアプリケーションには十分であり、プロセスとランクの区別がぼやけます。覚えておくべき重要なことは、プロセスのランクは常にグループに関連していることです。プロセスを2つのグループに分けた場合(たとえば、入力を読み取るグループとデータを処理するグループ)、各プロセスは2つのランクを持つようになりました。最初はMPI_COMM_WORLDにあり、新しいグループに1つあります。

0

コミュニケータに属するすべてのプロセスは、そのランクによって一意に識別されます。プロセスのランクは、ゼロからコミュニケータのサイズ-1までの整数です。プロセスは、2つの引数を取るMPI_Comm_rank関数を使用して通信中にその順位を決定することができる:コミュニケータと整数変数ランク:

int MPI_Comm_rank(MPI_Comm comm, int *rank) 

パラメータrankは、プロセスのランクを格納します。

これらのいずれかの関数を呼び出す各プロセスは、指定されたコミュニケータに属していなければなりません。そうでない場合、エラーが発生します。

関連する問題