On 11/09/2015 10:53, Nico Schlömer wrote:
Hi everyone,
I see from the CMake docs [1] that the recommended way for using MPI is to call
`find_package(MPI)` and set the linker and include flags appropriately. On the
other hand, I see from the OpenMPI specs [2] that
>
The Open MPI team *strongly* recommends that you simply use Open MPI's
> "wrapper" compilers to compile your MPI applications.
Is there a way to reconcile these two approaches?
I'm still not sure why those wrappers are provided, except that MPI is mostly
used in HPC, where code is often written by people with little engineering
background who can't always be trusted for setting compilation and link flags.
I guess it saves them a lot of support ?
The two approaches have theirs draw back, including:
Using the wrappers:
-Not all MPI implementations have wrappers.
- Some implementations do not call the underlying compiler you would expect,
meaning you might have to set a sub standard env var to select it. (Intel's
mpicc calls gcc by default, not icc, you need to use mpiicc (not a standard
name) or set some var or ..)
- You might need to mix with another tool which also provides its own
"helpful" wrapper.
Using CMake to detect the MPI stuff:
- depending on the cmake version and implementations, can be a PITA. MPI
relies on the presence of some flags in the (sometime non-existing) wrapper
(-show...) which are not always present, or are present but won't behave as
expected, or maybe are not present but won't dare reporting it properly in
order not to hurt the feeling of pre-existing build system too harshly
(provided I understood Intel's explanation).
Most of the time, I use FindMPI which I feed explicitly with compile and link
flags... which feel weird.
Cheers
Alain
Cheers,
Nico
[1] http://www.cmake.org/cmake/help/v3.0/module/FindMPI.html
[2] https://www.open-mpi.org/faq/?category=mpi-apps#general-build
--
Powered by www.kitware.com
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Kitware offers various services to support the CMake community. For more
information on each offering, please visit:
CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake