Возможен ли иерархический параллелизм с библиотеками MPI? - PullRequest
0 голосов
/ 08 апреля 2020

Я пишу вычислительный код с MPI. У меня есть несколько частей программного обеспечения, каждая из которых вычисляет различную часть проблемы. Каждая часть написана с использованием MPI, поэтому может быть запущена как независимый модуль. Теперь я хочу объединить эти части для совместной работы в рамках одной программы, и все части кода будут выполняться параллельно, а сама часть также будет работать параллельно.

например, Общее количество узлов = 10, часть 1 работает с 6 узлами, а часть 2 работает с 4 узлами и оба работают вместе.

Есть ли способы, которыми я могу mpirun с 10 узлами и mpi_init каждый часть с требуемым номером узла без перезаписи всей программы для выделения процесса для каждой части кода?

1 Ответ

1 голос
/ 08 апреля 2020

Это не просто.

Один из вариантов - использовать внешнюю программу, которая MPI_Comm_spawn() (вдвое) использует ваши подпрограммы. Недостатком является то, что для этого требуется один слот.

Другой вариант требует некоторого переписывания, поскольку все задачи в конечном итоге будут в одном и том же MPI_COMM_WORLD, это зависит от них до MPI_Comm_split() в зависимости от того, кто они, и использовать полученный коммуникатор вместо MPI_COMM_WORLD.

...