2

スーパー編集:

ブロードキャスト ステップを追加するとncols、マスター ノードによって 2 つのプロセスによって出力されるようになります (そこから出力を確認できます)。しかし、なぜ?つまり、ブロードキャストされるすべての変数には、宣言の行にすでに値があります!!! (トピック外の画像)。


この例に基づいたコードがいくつかあります。

この単純なプログラムを使用して、クラスター構成が問題ないことを確認しました。このプログラムは、実行されるマシンの IPも出力しました。

int main (int argc, char *argv[])
{
  int rank, size;

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
  printf( "Hello world from process %d of %d\n", rank, size );
  // removed code that printed IP address
  MPI_Finalize();
  return 0;
}

これにより、すべてのマシンの IP が 2 回出力されました。


EDIT_2

例のようにグリッド (のみ) を印刷すると、1 台のコンピューターに対して取得されます。

Processes grid pattern:
0 1
2 3

そして2つの場合:

Processes grid pattern:
4

1 に答える 1

1

実行可能ファイルは両方のノードで同じではありませんでした!


クラスタを構成するときは非常に苦労したので、マウントに問題が発生したときはスキップしました。したがって、変更は 1 つのノードにのみ表示されます。コードの一部 (またはすべて) が同じでない限り、コードは奇妙な動作をします。

于 2015-08-07T16:10:13.730 に答える