我有一個程式,我想用 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)
這是我的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)
uj5u.com熱心網友回復:
設定-DMPI_ROOT=或-DMPI_HOME=不適合我。它仍然使用我系統中的默認值 (OpenMPI)。
有效的是設定-DMPI_EXECUTABLE_SUFFIX=.mpich,我在檔案末尾找到的選項:https : //cmake.org/cmake/help/latest/module/FindMPI.html。
uj5u.com熱心網友回復:
根據 cmake檔案,您應該可以通過設定MPI_GUESS_LIBRARY_NAME.
更新:根據同一檔案:
嘗試通過猜測設定來找到不提供此類包裝器的 MPI 實作。目前,僅支持 Windows 上的 Microsoft MPI 和 MPICH2。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/395572.html
上一篇:如何使用基本的linux命令計算每一行中的點數,然后在bash中的每一行中插入值
下一篇:與BASH中的字串比較的問題
