MPI_COMM_WORLD не является постоянным? - PullRequest
0 голосов
/ 01 марта 2019

Я читаю здесь , что

Хотя MPI_Comm_split является наиболее распространенной функцией создания коммуникатора, есть много других.MPI_Comm_dup является самым основным и создает дубликат коммуникатора.Может показаться странным, что существует функция, которая создает только копию, но это очень полезно для приложений, которые используют библиотеки для выполнения специализированных функций, таких как математические библиотеки.В таких приложениях важно, чтобы коды пользователей и коды библиотек не мешали друг другу.Чтобы избежать этого, первое, что должно сделать каждое приложение, - это создать дубликат MPI_COMM_WORLD, что позволит избежать проблем других библиотек, также использующих MPI_COMM_WORLD.Сами библиотеки также должны делать дубликаты MPI_COMM_WORLD, чтобы избежать той же проблемы.

Можно ли изменить MPI_COMM_WORLD после начала инициализации MPI?MPI_COMM_WORLD не является постоянным?

1 Ответ

0 голосов
/ 01 марта 2019

Обоснование для MPI_Comm_dup(MPI_COMM_WORLD, ...) заключается в том, что вы не хотите, чтобы сообщение, отправленное приложением MPI (в MPI_COMM_WORLD), было получено библиотекой под капотом .И наоборот, вы не хотите, чтобы приложение MPI получало сообщение, отправленное библиотекой.

Простой способ избежать использования выделенного коммуникатора для библиотеки, а дублирование MPI_COMM_WORLD - это самый простой способдостигните этого.

Ответ на ваш вопрос MPI_COMM_WORLD не может быть изменен после MPI_Init().И вообще, коммуникаторы не могут быть изменены после создания.

...