FindMPI
Поиск реализации Message Passing Interface (MPI)
Message Passing Interface (MPI) — это библиотека, используемая для написания высокопроизводительных распределённых параллельных приложений, обычно развертываемых на кластере. MPI — это стандартный интерфейс (определённый форумом MPI), для которого доступно множество реализаций. Все они имеют несколько разные пути включения, библиотеки для линковки и т. д., и этот модуль пытается сгладить эти различия.
Переменные
Этот модуль установит следующие переменные для каждого языка в вашем проекте, где <lang> — это C, CXX или Fortran:
MPI_<lang>_FOUND TRUE if FindMPI found MPI flags for <lang> MPI_<lang>_COMPILER MPI Compiler wrapper for <lang> MPI_<lang>_COMPILE_FLAGS Compilation flags for MPI programs MPI_<lang>_INCLUDE_PATH Include path(s) for MPI header MPI_<lang>_LINK_FLAGS Linking flags for MPI programs MPI_<lang>_LIBRARIES All libraries to link MPI programs against
Кроме того, FindMPI устанавливает следующие переменные для запуска программ MPI из командной строки:
MPIEXEC Executable for running MPI programs
MPIEXEC_NUMPROC_FLAG Flag to pass to MPIEXEC before giving
it the number of processors to run on
MPIEXEC_PREFLAGS Flags to pass to MPIEXEC directly
before the executable to run.
MPIEXEC_POSTFLAGS Flags to pass to MPIEXEC after other flags
Использование
Для использования этого модуля просто вызовите FindMPI из файла CMakeLists.txt или выполните find_package(MPI), затем выполните CMake. Если вы удовлетворены автоматически определённой конфигурацией для вашего языка, то всё готово. Если нет, у вас есть два варианта:
1. Set MPI_<lang>_COMPILER to the MPI wrapper (mpicc, etc.) of your choice and reconfigure. FindMPI will attempt to determine all the necessary variables using THAT compiler's compile and link flags. 2. If this fails, or if your MPI implementation does not come with a compiler wrapper, then set both MPI_<lang>_LIBRARIES and MPI_<lang>_INCLUDE_PATH. You may also set any other variables listed above, but these two are required. This will circumvent autodetection entirely.
При успешной конфигурации MPI_<lang>_COMPILER будет установлено в оболочку компилятора для <lang>, если она была найдена. MPI_<lang>_FOUND и другие переменные выше будут установлены, если для <lang> была найдена любая реализация MPI, независимо от того, был ли найден компилятор.
При использовании MPIEXEC для выполнения приложений MPI, обычно следует использовать все MPIEXEC флаги следующим образом:
${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} PROCS
${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
где PROCS — количество процессоров, на которых нужно выполнить программу, EXECUTABLE — программа MPI, а ARGS — аргументы, которые нужно передать программе MPI.
Обратная совместимость
Для обеспечения обратной совместимости со старыми версиями FindMPI эти переменные устанавливаются, но устарели:
MPI_FOUND MPI_COMPILER MPI_LIBRARY MPI_COMPILE_FLAGS MPI_INCLUDE_PATH MPI_EXTRA_LIBRARY MPI_LINK_FLAGS MPI_LIBRARIES
В новых проектах, пожалуйста, используйте MPI_<lang>_XXX эквиваленты.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.6/module/FindMPI.html