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