Я использую 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
Вы не можете указать количество процессов для использования в 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 процесса.
Количество используемых вами процессоров не имеет ничего общего с процессом компиляции и, следовательно, не имеет никакого отношения к вашему CMakeLists.txt (кроме случаев использования CTest, но это другая тема).
Вы просто компилируете исполняемый файл, либо используя mpicxx
или как вы делаете сейчас, а затем запустить его с
mpirun -np 4 nameOfExe
Обратите внимание, что -np 4
это аргумент mpirun
не к вашей программе.