Библиотека 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 этих массивов неинициализированным.