首页 > 解决方案 > CMake:在 openmpi 上选择 mpich

问题描述

我正在使用 cmake 3.10.2。我安装了 openmpi 和 mpich。但是我只需要加载 mpich。所以我从文档中发现了以下内容

MPI_EXECUTABLE_SUFFIX

附加到正在查找的所有名称的后缀。例如,您可以将其设置为 .mpich 或 .openmpi 以更喜欢 Debian 及其衍生产品中的一个或另一个。

我的 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

标签: cmakempimpich

解决方案


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

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

http://modules.sourceforge.net/


推荐阅读