Библиотека MPI - проблемы с сохранением значений в массиве

Я пытаюсь сохранить значения в массиве в процессе, в частности, под номером 0. Итак, я поставил условие сохранить эти значения, если его ранг равен 0:

int main(int argc, char *argv[])
{
    int rank,numprocs;
    int count[numprocs];
    int disp[numprocs];

    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    //... whatever

    if (rank==0) {
        //whatever
        for(i=0;i<numprocs-1;i++) {
           count[i]= ...
           disp[i] = ...
        }
        //whatever
    }

    //... whatever

    MPI_Gatherv(sendbuff,size, MPI_Type, //Send from all
                recbuff, count, disp, MPI_Type, 
                0,MPI_Communicator);            //Receive on root
}

По факту, count а также disp у процесса 0 есть массивы, где все значения равны 0. Я не понимаю это поведение. Что-то не так в первом цикле?

РЕДАКТИРОВАТЬ:

Ошибка не была в этой части этого кода. Этот код работает как положено

1 ответ

Возможно, строка:

for(i=0;i<numprocs-1;i++) 

Должно быть:

for(i=0;i<numprocs;i++) 

В первом случае (выше), если numprocs равен 2, будет инициализирован только индекс 0 count[] и disp[]; оставив индекс 1 этих массивов неинициализированным.

Другие вопросы по тегам