MPI_Igatherv СРЕЩУ 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