MPI - 每个从站接收相同的数据

MPI - each slave receives same data

我在接收奴隶数据时遇到问题,我不知道问题在哪里。我为每个奴隶发送不同的数据,但所有奴隶都收到相同的数据。这是我的代码

for (int i = 1; i < slavesCounter; i++){
   data = x[cnt]; // x is vector of struct

MPI_Pack(&data.a, 1, MPI_INT, buffer, LENGTH, &position,MPI_COMM_WORLD);

MPI_Pack(&data.b, 1, MPI_INT, buffer, LENGTH, &position,MPI_COMM_WORLD);

 MPI_Send (buffer, position, MPI_PACKED, i, tag, MPI_COMM_WORLD);
      cnt++;
    }

这里是从属部分

while(true){
position = 0; 
MPI_Recv(buffer, LENGTH, MPI_PACKED, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
      MPI_Unpack(buffer, LENGTH, &position, &x, 1, MPI_INT, MPI_COMM_WORLD);
      MPI_Unpack(buffer, LENGTH, &position, &y, 1, MPI_INT, MPI_COMM_WORLD);


 cout << x << " " << y << endl;

    }

当我打印接收到的数据时,所有从站都得到相同的数据。谁能帮帮我,哪里有问题?

您忘记在每次迭代开始时重置 position

所以你发送了一个越来越大的缓冲区,但你没有注意到它,因为你只解包了前两个整数。