Spec-Zone.ru › CMake 3.6

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

Spec-Zone.ru

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