Возможно ли, чтобы главный процессор дождался окончания работы подчиненных процессоров? - PullRequest
0 голосов
/ 11 мая 2019

У меня есть несколько рабочих процессоров, которые вычисляют расстояния для нескольких распределенных путей. В конце каждого пути рабочий процессор проверяет, меньше ли рассчитанное расстояние, чем текущее глобальное минимальное расстояние, и, если оно есть, отправляет это расстояние мастеру для обновления глобального минимума.

Это происходит до тех пор, пока все процессоры работают.

Мне интересно, что можно добиться чего-то вроде этого:

int temp;
MPI_Status stat;
int globalMin = INT_MAX;

while(/* there are workers still running */){
     for(int i = 1; i < numProcessor; i++){
         MPI_Recv(&temp, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &stat);
         if(temp < globalMin){ 
            globalMin = temp;
         }
     }
}

Извините, если какой-то синтаксис неправильный, я очень плохо знаком с MPI. Я не уверен, какую функцию следует вызывать в состоянии цикла while или даже если есть что-то, что делает то, что я хочу. Если бы кто-то мог указать мне правильное направление, я был бы очень признателен!

...