Я пытаюсь написать свою собственную реализацию MPI_Gather, но массив на входе не меняется с выходом. Обычный MPI_gather работает правильно.
код:
void My_MPI_Gather(int* sendbuf, int sendcount, MPI_Datatype d1, int* recvbuf, int recvcount, MPI_Datatype d2, int root, MPI_Comm comm)
{
int numprocs, myid;
int *temp = new int[sendcount];
int temp2;
MPI_Status status;
MPI_Comm_size(comm, &numprocs);
MPI_Comm_rank(comm, &myid);
if (myid == root)
{
for (int i = 0; i < numprocs; i++)
{
if (i != root)
{
MPI_Recv(sendbuf, recvcount, MPI_INT, MPI_ANY_SOURCE, MPI_ANY_TAG, *sendbuf, &status);
for (int j = 0; j < recvcount; j++)
{
recvbuf[recvcount*i + j] = *temp;
}
}
recvbuf[root*recvcount] = *sendbuf;
}
}
else
{
MPI_Send(temp, sendcount, d1, root, 99, *recvbuf);
}
}
Самое плохое в MPI - это то, что я не могу отладить эту функцию, поэтому буду признателен за любой совет:)