MPI коллективные коммуникации - PullRequest
0 голосов
/ 28 февраля 2012

Я использую библиотеку MPI для C и хотел бы знать, можно ли вызывать методы коллективной связи MPI из разных частей кода разными процессами?

Псевдо-пример:

MPI_Rank(&rank,MPI_COMM_WORLD);

switch(rank) {
 case 0:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
 case 1:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
 case 2:
     MPI_Bcast(buf1,count, type, 0, comm);
     break;
}

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

     MPI_Bcast(buf1,count, type, 0, comm);

Извините за тривиальный вопрос, но я нашел его в Google и не смог найти ответ.

Спасибо!

1 Ответ

3 голосов
/ 28 февраля 2012

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

...