FindMPI
Поиск реализации Message Passing Interface (MPI)
Message Passing Interface (MPI) — это библиотека, используемая для написания высокопроизводительных параллельных приложений с распределенной памятью, обычно развертываемых на кластере. MPI — это стандартный интерфейс (определённый форумом MPI), для которого доступно множество реализаций.
Переменные
Этот модуль устанавливает следующие переменные для каждого языка в вашем проекте, где <lang> — это один из C, CXX или Fortran:
-
MPI_<lang>_FOUND - Переменная, указывающая, были ли найдены настройки MPI для
<lang>. -
MPI_<lang>_COMPILER - Обёртка компилятора MPI для
<lang>. -
MPI_<lang>_COMPILE_FLAGS - Флаги компиляции для программ MPI, разделенные пробелами. Это не ;-список.
-
MPI_<lang>_INCLUDE_PATH - Путь(и) включения заголовков MPI.
-
MPI_<lang>_LINK_FLAGS - Флаги компоновщика для программ MPI.
-
MPI_<lang>_LIBRARIES - Все библиотеки для компоновки программ MPI.
Кроме того, определены следующие IMPORTED целевые объекты:
-
MPI::MPI_<lang> - Целевой объект для использования MPI из
<lang>.
Кроме того, FindMPI устанавливает следующие переменные для запуска программ MPI из командной строки:
-
MPIEXEC - Исполняемый файл для запуска программ MPI, если предоставлен.
-
MPIEXEC_NUMPROC_FLAG - Флаг, передаваемый
MPIEXECперед указанием количества процессоров для выполнения. -
MPIEXEC_MAX_NUMPROCS - Количество процессоров MPI для использования. По умолчанию равно количеству процессоров, обнаруженных на хост-системе.
-
MPIEXEC_PREFLAGS - Флаги, передаваемые
MPIEXECнепосредственно перед исполняемым файлом для запуска. -
MPIEXEC_POSTFLAGS - Флаги, передаваемые
MPIEXECпосле других флагов.
Использование
Для использования этого модуля вызовите find_package(MPI). Если вы удовлетворены автоматически обнаруженной конфигурацией для вашего языка, то всё готово. Если нет, у вас есть два варианта:
- Установите
MPI_<lang>_COMPILERна обёртку компилятора MPI (например,mpicc) по вашему выбору и переконфигурируйте. FindMPI попытается определить все необходимые переменные, используя эти флаги компиляции и компоновки. - Если это не удаётся, или если ваша реализация MPI не поставляется с обёрткой компилятора, установите
MPI_<lang>_LIBRARIESиMPI_<lang>_INCLUDE_PATH. Вы также можете установить любые другие перечисленные выше переменные, но эти две обязательны. Это полностью обойдёт автоматическое обнаружение.
При успешной конфигурации MPI_<lang>_COMPILER будет установлено значение обёртки компилятора для <lang>, если она была найдена. MPI_<lang>_FOUND и другие переменные выше будут установлены, если любая реализация MPI была найдена для <lang>, независимо от того, был ли найден компилятор.
При использовании MPIEXEC для выполнения приложений MPI, как правило, следует использовать все флаги MPIEXEC следующим образом:
${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${MPIEXEC_MAX_NUMPROCS}
${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS
где 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.9/module/FindMPI.html