【发布时间】:2022-01-26 20:50:33
【问题描述】:
我有一个程序,我想用 CMake + make 编译,但使用两种不同的 MPI 发行版,OpenMPI 和 MPICH。
在 Ubuntu 中,我都安装了;这些是我安装的所有编译器包装器:
mpic++ mpicxx mpif77.mpich mpijavac
mpicc mpicxx.mpich mpif77.openmpi mpijavac.pl
mpiCC mpicxx.openmpi mpif90 mpirun
mpicc.mpich mpiexec mpif90.mpich mpirun.mpich
mpicc.openmpi mpiexec.hydra mpif90.openmpi mpirun.openmpi
mpiCC.openmpi mpiexec.mpich mpifort mpivars
mpichversion mpiexec.openmpi mpifort.mpich
mpic++.openmpi mpif77 mpifort.openmpi
(OpenMPI 是默认设置,即未指定分发扩展时。我没有使用模块。)
如何强制 CMake 选择 MPICH 而不是 OpenMPI?
我尝试设置-DMPI_ROOT=/usr/lib/x86_64-linux-gnu/mpich 但是
我收到此错误:
-- Could NOT find MPI_CXX (missing: MPI_CXX_WORKS)
CMake Error at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:165 (message):
Could NOT find MPI (missing: MPI_CXX_FOUND)
Reason given by package: MPI component 'C' was requested, but language C is not enabled. MPI component 'Fortran' was requested, but language Fortran is not enabled.
Call Stack (most recent call first):
/usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:458 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.18/Modules/FindMPI.cmake:1721 (find_package_handle_standard_args)
CMakeLists.txt:11 (find_package)
它仍然使用 OpenMPI。
这就是我的CMakeLists.txt 的样子:
cmake_minimum_required(VERSION 3.12.0)
project(myproject VERSION 0.1 LANGUAGES CXX)
#enable_language(C) #uncommenting these doesn't help
#enable_language(Fortran)
enable_testing()
include(CTest)
find_package(MPI REQUIRED)
【问题讨论】: