MPI: изменить количество процессоров в CMakelists

Я использую CLion. Мой CMakeLists.txt выглядит так:

cmake_minimum_required(VERSION 3.2)

project(MPI)

add_executable(MPI main.cpp)

# Require MPI for this project:
find_package(MPI REQUIRED)

set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})

include_directories(MPI_INCLUDE_PATH)
target_link_libraries(MPI ${MPI_LIBRARIES})

MPI — Hello World работает хорошо. Но как мне изменить количество процессоров в cmakelists?

Я уже пытался добавить -np 4 и -n 4 к аргументам программы в CLion. Но все же я просто получаю

Процесс Hello World 0 из 1

7

Решение

Вы не можете указать количество процессов для использования в CMakeLists.txt. Число процессов — это аргумент, который вы указываете при запуске программы с помощью mpirun.

Для компиляции проекта mpi C я использую следующий CMakeLists.txt

cmake_minimum_required(VERSION 3.3)
project(hellompi)

find_package(MPI REQUIRED)
include_directories(${MPI_INCLUDE_PATH})

SET(CMAKE_C_COMPILER mpicc)
SET(CMAKE_CXX_COMPILER mpicxx)

set(SOURCE_FILES main.c)
add_executable(hellompi ${SOURCE_FILES})

Чтобы выполнить программу из Clion, я сначала изменил (Неясный) местоположение, в которое Clion по умолчанию выводит скомпилированные файлы.
Вы можете указать другое расположение для скомпилированных файлов в настройках «Сборка, выполнение и развертывание» -> «CMake». Я просто изменил его в папку проекта.

Далее я отредактировал настройки запуска. «Выполнить» -> «Редактировать конфигурации» -> установить для исполняемого файла значение mpirun. (расположение mpirun на вашей машине)

Затем я отредактировал «Аргументы программы», чтобы

-np 4 /home/mitzh/ClionProjects/hellompi/Debug/hellompi

Для выполнения моей программы используется 4 процесса.

11

Другие решения

Количество используемых вами процессоров не имеет ничего общего с процессом компиляции и, следовательно, не имеет никакого отношения к вашему CMakeLists.txt (кроме случаев использования CTest, но это другая тема).

Вы просто компилируете исполняемый файл, либо используя mpicxx или как вы делаете сейчас, а затем запустить его с

mpirun -np 4 nameOfExe

Обратите внимание, что -np 4 это аргумент mpirunне к вашей программе.

3

По вопросам рекламы [email protected]