3

アプリケーションでは、MPIfloat の分散配列と整数の 2 つの「並列」配列があります。float 値ごとに、対応する値を表す 2 つの関連する整数があります。キャッシュ効率のために、これらを 3 つの異なる配列、つまり構造体の配列ではなく、配列の構造体として扱いたいと考えています。

ここで、これらすべての値を最初のノードに集める必要があります。MPI1 つの float と 2 つの整数を使用して、構造体に対応する型を定義することにより、1 つの通信命令でこれを行うことができます。しかし、これにより、配列の構造ではなく、構造の配列パターンを使用する必要があります。

したがって、次のいずれかを選択できます。

  • アレイごとに 1 つずつ、3 つの異なる通信を実行し、アレイ配置の効率的な構造を維持します。
  • 型を定義しMPI、単一の通信を実行し、アルゴリズムを調整したりデータを再配置したりして、結果として得られる構造体の配列を処理する

両方の長所を活かすことができる 3 番目のオプションをご存知ですか。つまり、単一の通信を行い、キャッシュ効率の高い構成を維持することです。

4

2 に答える 2

0

You take take a look at Packing and Unpacking.

http://www.mpi-forum.org/docs/mpi-11-html/node62.html

However, I think if you want to pass a same "structure" often you should define you own MPI derivate type.

于 2013-05-20T08:19:12.957 に答える