[CMake] FindMPI - Intel MPI on Windows
Michel Lestrade
michel.lestrade at crosslight.com
Wed Apr 18 15:26:56 EDT 2012
The FindMPI module does not seem to work on Windows with the Intel MPI
libraries. I am trying (unsuccessfully) to compile parmetis and since I
am new to CMake, I tried to reduce the problem I am experiencing to the
simplest possible example (attached).
I have the latest (12.1) Intel Compiler installed and the Intel MPI
wrappers are in the system PATH. From my command-line environment, I can
easily compile hello.c with the mpicc wrapper, using either cl.exe or
icl.exe as the underlying compiler.
However, FindMPI always reports the following (cmake -G"NMake Makefiles"
-DWIN32=TRUE):
-- Could NOT find MPI_C (missing: MPI_C_LIBRARIES)
-- Could NOT find MPI_CXX (missing: MPI_CXX_LIBRARIES)
CMake Error at CMakeLists.txt:7 (message):
mpi is not found
The comments of FindMPI suggest a few solutions to this (such as
defining MPI_C_COMPILER or MPI_C_LIBRARIES and MPI_C_INCLUDE_PATH) but I
have not been able to make them work. I am wondering what is the best
way to work around the problem ....
As I said, very new to CMake but I wonder if _MPI_PREFIX_PATH could use
fixing. For Intel MPI, the path is usually stored in
"%I_MPI_ROOT%%ARCH_PATH_MPI%" rather than the registry.
Thanks,
Michel Lestrade
-------------- next part --------------
/* C Example */
#include <stdio.h>
#include <mpi.h>
int main (argc, argv)
int argc;
char *argv[];
{
int rank, size;
MPI_Init (&argc, &argv); /* starts MPI */
MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */
MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */
printf( "Hello world from process %d of %d\n", rank, size );
MPI_Finalize();
return 0;
}
-------------- next part --------------
cmake_minimum_required(VERSION 2.8)
project(hello)
# Search for MPI.
include(FindMPI)
if(NOT MPI_FOUND)
message(FATAL_ERROR "mpi is not found")
endif()
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
target_link_libraries(${MPI_LIBRARIES})
set_target_properties(hello PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
More information about the CMake
mailing list