Вызов MPI_Init более одного раза - PullRequest
0 голосов
/ 27 января 2012

Я понимаю, что MPI_init может быть вызван только более одного раза для каждого исполняемого экземпляра.Может ли кто-нибудь уточнить ограничения этого языка: например:

  1. Я знаю, что можно запустить несколько python exec на mpiexec.
  2. Есть ли что-то вроде fork () или потоков, которые могут привести кчто-то, что квалифицируется?Является ли критерий того, что они должны сначала произойти, а затем вызвать mpiexec?

Спасибо!

1 Ответ

1 голос
/ 29 января 2012

Если я вас правильно понял, самый простой способ - перехватить вызовы на MPI_Init и выполнить его только один раз. Для C MPI предоставляет интерфейс профилирования PMPI, который позволяет переопределить любой символ MPI и предоставляет дополнительный символ PMPI. Например. Вы определяете функцию MPI_Init и в этой функции, в зависимости от того, вызывается ли она в первый раз, вызывается PMPI_Init. То же самое (в обратном порядке) для MPI_Finalize.

Я не уверен в самом элегантном способе сделать это в Python. Я предполагаю, что вы могли бы просто взломать привязки python или LD_PRELOAD простую библиотеку C, выполняющую magic .

Все это просто обходной путь, который может иметь плохие побочные эффекты. Реализации MPI советуют вам не делать много перед MPI_Init. Реальным решением было бы исправление кода для правильного использования MPI.

...