MPI_Igatherv VS MPI_Isend и MPI_Irecv

Мне приходится собирать много данных о моем корне от других процессоров на каждом шаге моего алгоритма, и размер данных на некоторых процессорах может быть равен нулю.

Итак, мне интересно, какой метод более эффективен и быстрее использовать, MPI_Igatherv или использование (MPI_Isend и MPI_Irecv), когда буфер не пуст.

Заботится ли MPI о нулевом буфере внутри MPI_Igatherv?

Лучше и возможно ли использовать одностороннюю связь вместо MPI_Igatherv или MPI_Isend?


person ziv    schedule 24.03.2015    source источник


Ответы (1)


Многое из этого вам просто придется реализовать и посмотреть, что произойдет. Реализации могут обеспечить множество оптимизаций для разных случаев. Сетевое оборудование/топология могут повлиять на результаты.

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

Односторонние операции могут быть лучше, а могут и нет. Зависит опять же от многих факторов.

person Rob Latham    schedule 24.03.2015