MPI_Reduce также выполняет работу MPI_Barrier? - PullRequest
0 голосов
/ 13 января 2020

Поскольку MPI_Reduce и MPI_Barrier являются дорогостоящими командами, поэтому я должен уменьшить некоторую связь между потоками. Я знаю основные работы MPI_Reduce и MPI_Barrier. Однажды я заметил, что MPI_Reduce уменьшает все значения в одном потоке, а также выполняет работу MPI_Barrier. Возможно ли, что если мне придется использовать mpi_Reduce, то я могу пропустить MPI_Barrier?

1 Ответ

2 голосов
/ 13 января 2020

Нет, MPI_Reduce() неявно не выполняет MPI_Barrier().

При этом MPI_Allreduce() (с данными ненулевого размера) выполняет неявное MPI_Barrier(), так что это может быть подгонка для вашего алгоритма.

Я не совсем уверен, что вы подразумеваете под MPI_Barrier() - дорогостоящая операция . Предполагая, что у вас есть приличное соединение, сам барьер должен быть довольно быстрым, и большая часть времени должна быть вызвана дисбалансом процесса.

...