LINUX.ORG.RU

MPI, выбор топологии

 


0

2

Всем, добрый вечер!

Какую топологии теоретически рекомендуется использовать при выполнении операции MPI_Reduce? Звезда? Кольцо?

P.S. как-то не могу найти в документации четких предложений о том как пересылаются данные при сборке частичных сумм, произведений ... .

Сколько данных над которыми производятся операция идёт с каждой ноды - много или мало?

Если по одному числу - то по идее быстрее всего переслать всё напрямую в root и он там сложит (звезда?). А если данные - огромный вектор - то по идее лучше считать промежуточные суммы чтоб уменьшить число операций и данных с которыми работает одна нода. Тут наверное кольцо.

GPFault ★★
()
Ответ на: комментарий от GPFault

Это понятно. Ну, и конечно же каждый узел считает свою частичную сумму из большого вектора.

Но, меня интересует как работает MPI_Reduce, почему-то нигде не говоритья какая топология нужна именно этой функции? Я так понимаю частичные суммы могут собираться по кольцу, а могут и звездой ...

linux276
()
Ответ на: комментарий от linux276

MPI_Reduce работает хитроумно. Если брать Open MPI, то там реализации разных коллективных операций лежат в исходниках в ompi/ompi/mca/coll/что-нибудь/. Если, например, процессы расположены на одном хосте, то скорее всего выберется MPI_Reduce из ompi/ompi/mca/coll/sm и операции будут проведены через общую память. Чтобы войти в тему есть такая страница, вкратце - там всё на плагинах и можно даже запилить свой или приказать использовать какой-то конкретный для коллективных операций. По умолчанию Open MPI сам выберет разумную реализацию.

tim239 ★★
()

[petrosyan]Двоеточие Александрова[/petrosyan]

Я думаю, что звезда.

buddhist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.