Моя собственная реализация MPI_Gather - PullRequest
0 голосов
/ 06 мая 2018

Я пытаюсь написать свою собственную реализацию 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 - это то, что я не могу отладить эту функцию, поэтому буду признателен за любой совет:)

...