Spec-Zone.ru › CMake 3.9

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). Если вы удовлетворены автоматически обнаруженной конфигурацией для вашего языка, то всё готово. Если нет, у вас есть два варианта:

  1. Установите MPI_<lang>_COMPILER на обёртку компилятора MPI (например, mpicc) по вашему выбору и переконфигурируйте. FindMPI попытается определить все необходимые переменные, используя эти флаги компиляции и компоновки.
  2. Если это не удаётся, или если ваша реализация 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API