CMake : Selecting mpich over openmpi

标签 cmake mpi mpich

我使用的是cmake 3.10.2。我安装了 openmpi 和 mpich。不过我只需要加载 mpich.所以我从文档中找到了以下内容

MPI_EXECUTABLE_SUFFIX

A suffix which is appended to all names that are being looked for. For instance you may set this to .mpich or .openmpi to prefer the one or the other on Debian and its derivatives.

我的 CMake 文件是这样的

set(MPI_EXECUTABLE_SUFFIX ".mpich")
FIND_PACKAGE(MPI REQUIRED)
INCLUDE_DIRECTORIES(${MPI_INCLUDE_DIRS})
LINK_DIRECTORIES(${MPI_LIBRARY_DIRS})
message(${MPI_INCLUDE_PATH})

但是这表明

/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/usr/lib/x86_64-linux-gnu/openmpi/include...

我哪里出错了。你能帮我解决这个问题吗

还有

mpicc -show
gcc -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent -I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi/opal/mca/event/libevent2022/libevent/include -I/usr/lib/x86_64-linux-gnu/openmpi/include -pthread -L/usr//lib -L/usr/lib/x86_64-linux-gnu/openmpi/lib -lmpi

mpicc.mpich -show
gcc -Wl,-Bsymbolic-functions -Wl,-z,relro -I/usr/include/mpich -L/usr/lib/x86_64-linux-gnu -lmpich

最佳答案

最好是使用模块在 openmpi 和 mpich 之间切换:

$ module load mpich
$ module unload mpich  
$ module load openmpi

http://modules.sourceforge.net/

关于CMake : Selecting mpich over openmpi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52016418/

相关文章:

c++ - CMake:外部项目的依赖

c++ - 如何使用 boost MPI 出现死锁情况(我使用 MPICH 编译器)?

c++ - 使用 Boost.MPI 库的目的是什么?

c++ - CMake 无法识别混合 C++/FORTRAN 程序中的 FORTRAN 源代码

build - 带有 set_target_properties 的 FindPkgConfig 无法用于设置 CFLAGS/LDFLAGS

c - MPI_Bcasts 卡在奴隶上

c++ - 根进程的 MPI_Isend 永远不会到达

c - mpi 在结构中发送/接收多个可变长度数组

linux - CMake忽略自定义命令中的变量

cmake:将软件链接到 boost::mpi (使用 mpich2)