2015-07-07 15 views
7

Sto usando CLion. Il mio CMakeLists.txt ha il seguente aspetto:MPI: modifica numero di processori in CMakelists

L'MPI - Hello World funziona bene. Ma come posso cambiare il numero dei processori nei cmakelist?

Ho già provato ad aggiungere -np 4 e -n 4 agli argomenti del programma in CLion. Ma ancora ottengo solo processo

Ciao Mondo 0 su 1

risposta

9

Non è possibile specificare il numero di processi da utilizzare in CMakeLists.txt. Il numero di processi è un argomento specificato durante l'esecuzione del programma con mpirun.

di compilare un progetto mpi C Io uso seguente 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}) 

Al fine di eseguire il programma da Clion, ho cambiato il (oscura) posizione che Clion dalle uscite di default compilato file . È possibile specificare un'altra posizione per i file compilati sotto le impostazioni in "Build, Execution and Deployment" -> "CMake". L'ho appena cambiato nella cartella del progetto.

Successivamente ho modificato le configurazioni di corsa. "Esegui" -> "Modifica configurazioni" -> imposta eseguibile su mpirun. (La posizione del mpirun sulla vostra macchina)

Poi ho montato i "argomenti di programma" per essere

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

Per eseguire il mio programma con 4 processi.

+0

Risposta completa, grazie! – jpact

3

Il numero di processori che si utilizza non ha nulla a che fare con il processo di compilazione e quindi non ha nulla a che fare con il vostro CMakeLists.txt (oltre quando usi CTest, ma questo è un argomento diverso).

Basta compilare l'eseguibile, sia utilizzando mpicxx o il modo di fare ora, e poi eseguirlo con

mpirun -np 4 nameOfExe 

Si noti che il -np 4 è un argomento per mpirun, non il vostro programma.

+0

Grazie! Ma sai come farlo in CLion (IDE)? Voglio dire, ho provato ad aggiungere "-np 4" agli argomenti del programma, ma non è stato d'aiuto. – Joey

+0

@Joey Non conosco CLion, anche se penso che sia necessario eseguirlo attraverso il wrapper mpi. Passare '-np 4' al' nameOfExe' non funzionerà. – luk32

+0

@ luk32 Grazie, ma non so come farlo come hai detto :(Ma ho trovato questo qui: "set (MPIEXEC_MAX_NUMPROCS" 2 "CACHE STRING" Numero massimo di processori disponibili per eseguire applicazioni MPI. ")" - > https://github.com/realstolz/powerlyra/blob/master/cmake/FindMPICH2.cmake Quindi puoi farlo ancora nella CMakeList? – Joey