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
В новых проектах, пожалуйста, используйте эквиваленты %%%CODE_BLOCK_13%%.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.7/module/FindMPI.html