Как скомпилировать приложение MPI в «последовательном» режиме (без использования компилятора MPI)? - PullRequest
1 голос
/ 16 февраля 2012

Этот вопрос может показаться немного странным ...

Представьте, что у меня есть приложение MPI, но у меня нет системы с установленным MPI.Поэтому я хочу скомпилировать приложение без поддержки MPI (1-процесс, 1-поток) без изменения исходного кода.Это возможно?

Я нашел где-то обертку "mimic_mpi.h", которая должна делать именно то, что я хочу.Но в нем отсутствовали некоторые функции MPI (например, MPI_Cart_create, MPI_Cart_get и т. Д.), Поэтому мне это не удалось.

mimic_mpi.h http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8h-source.html

mimic_mpi.c http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8c-source.html

Знаете ли вы какой-либо другой подход, который я мог бы использовать для компиляции приложений MPI без поддержки MPI?

Заранее спасибо!

1 Ответ

2 голосов
/ 16 февраля 2012

Вы можете легко запустить «настоящее» приложение MPI с помощью одного процесса. На практике это работает даже без использования mpiexec / mpirun, хотя я не уверен, что это официально поддерживается. Тем не менее, полная и подтверждающая «последовательная» реализация MPI с 1 процессом, вероятно, станет довольно сложной и имеет свою собственную библиотеку - так что в таком случае, почему бы просто не использовать настоящую полную реализацию MPI?

Надеюсь, вы видите круг, который я пытаюсь нарисовать: Если вам нужно полное поведение MPI, просто используйте реализацию MPI - независимо от того, ограничено ли это только одним процессом.

На практике приложения, которые хотят иметь возможность работать с MPI или без него, часто используют свои собственные абстракции MPI, используя специфичные для домена обертки связи, #ifdef HAVE_MPI или более сложные макросы.

...