У меня есть программа A, которая запускается с помощью mpiexec. Эта программа обычно выполняется параллельно, но в одном из шаблонов выполнения она может вызвать внешнюю программу B, которая также поддерживает MPI. Конечно, каждый экземпляр A вызовет один экземпляр B, если B вызывается как последовательный. При параллельном вызове каждый экземпляр A будет вызывать параллельный B.
Одно из возможных решений состоит в том, чтобы главный узел A вызывал параллельный B, оставляя другие процессы A бездействующими, но, конечно, мне нужно перенести параметры mpiexec из пользовательского вызова командной строки A (включая любые особенности, например, взаимодействие с PBS) в внутренний вызов B. Насколько я вижу, это не тривиально и не хорошо работает с другой реализацией MPI (например, MPICH против Open MPI).
Есть ли у кого-нибудь опыт решения такой проблемы?
mpiexec
A — это тот, который порождает процессы в B. - person Hristo Iliev   schedule 30.01.2013MPI_Comm_spawn
. - person Hristo Iliev   schedule 30.01.2013