Я относительно новичок в MPI (с C), и у меня возникли некоторые проблемы с использованием MPI_Bcast для отправки int всем процессам.
В своем коде я решаю, какой ранг является корневым в цикле for,где разные процессы отвечают за разные элементы цикла.Затем я хочу передать Bcast результат от root для всех процессов, за исключением того, что все некорневые процессы не знают, от кого ожидать bcast, поэтому не принимаем его.
Блок кода выглядит примерно так:
for (iX=start; iX<end; iX++)
//start and end are the starting row and ending row for each processes, defined earlier
for (int iY=1; iY<nn; iY++)
// do some calculations
if (some condition)
int bcastroot = rank; // initialized above
int X = 111; // initialized above
else
//do other calculations
end
end
MPI_Bcast(&X, 1, MPI_INT, bcastroot, comm);
// remainder of code and MPI_FINALIZE
Когда я выполняю этот код, независимо от значения bcastroot по умолчанию (значение для всех процессов без полномочий root) конкурирует с root, поэтому X не транслируется правильно.Я не знаю значения X и не могу заранее предсказать корень, поэтому не могу определить его заранее.
Я попытался инициализировать bcastroot = -1, затем установить его для ранга, но это не работает,Есть ли способ, которым я могу Bcast это значение без установки root для всех процессов?
Спасибо, JonZor