如何解决 CMake 错误 "Could not find MPI"
How do I resolve the CMake error "Could not find MPI"
我正在尝试 运行 CMakeLists.txt 文件(48 小时)全新 ubuntu 20.04.3 安装。当 运行ning cmake .
时,我不断收到以下错误
-- Could NOT find MPI_CXX (missing: MPI_CXX_WORKS)
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find MPI (missing: MPI_CXX_FOUND) (found version "3.1")
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.16/Modules/FindMPI.cmake:1688 (find_package_handle_standard_args)
CMakeLists.txt:16 (find_package)
-- Configuring incomplete, errors occurred!
据我所知 CMakeLists.txt 中的相关行如下:
# check MPI package...
find_package(MPI REQUIRED)
set(CMAKE_CXX_COMPILER mpicxx)
include_directories(${MPI_INCLUDE_DIR})
我试图通过 apt mpich
安装来解决这个问题。尽管安装有效并且 运行ning mpich --version
returns(下图)错误仍然存在。
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cmake --version
returns 3.16.3
我在安装每个包后都重新启动了。我也添加到我的 ~/.bashrc
export PATH=$PATH:/usr/bin/mpicc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/bin/mpicc
里面好像什么也没做(重启后又是这个)。
如果相关,我也通过apt安装了cmake, libboost-all-dev, cuda-10-1, libcudnn7, libblas-dev, liblapack-dev, mpi
对于此事,我将不胜感激。
使用CMAKE_PREFIX_PATH变量设置搜索路径。最佳做法是在命令行界面中设置该变量:
mkdir build
cd build
cmake -G "Unix Makefiles" .. -DCMAKE_PREFIX_PATH=path_to_mpi_lib
无论如何你可以在find_package命令之前设置以下变量来定位MPI(来自FindMPI.cmake的描述):
``MPIEXEC_EXECUTABLE``
Manually specify the location of ``mpiexec``.
``MPI_HOME``
Specify the base directory of the MPI installation.
``ENV{MPI_HOME}``
Environment variable to specify the base directory of the MPI installation.
``ENV{I_MPI_ROOT}``
Environment variable to specify the base directory of the MPI installation.
我正在尝试 运行 CMakeLists.txt 文件(48 小时)全新 ubuntu 20.04.3 安装。当 运行ning cmake .
-- Could NOT find MPI_CXX (missing: MPI_CXX_WORKS)
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
Could NOT find MPI (missing: MPI_CXX_FOUND) (found version "3.1")
Call Stack (most recent call first):
/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:393 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.16/Modules/FindMPI.cmake:1688 (find_package_handle_standard_args)
CMakeLists.txt:16 (find_package)
-- Configuring incomplete, errors occurred!
据我所知 CMakeLists.txt 中的相关行如下:
# check MPI package...
find_package(MPI REQUIRED)
set(CMAKE_CXX_COMPILER mpicxx)
include_directories(${MPI_INCLUDE_DIR})
我试图通过 apt mpich
安装来解决这个问题。尽管安装有效并且 运行ning mpich --version
returns(下图)错误仍然存在。
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
cmake --version
returns 3.16.3
我在安装每个包后都重新启动了。我也添加到我的 ~/.bashrc
export PATH=$PATH:/usr/bin/mpicc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/bin/mpicc
里面好像什么也没做(重启后又是这个)。
如果相关,我也通过apt安装了cmake, libboost-all-dev, cuda-10-1, libcudnn7, libblas-dev, liblapack-dev, mpi
对于此事,我将不胜感激。
使用CMAKE_PREFIX_PATH变量设置搜索路径。最佳做法是在命令行界面中设置该变量:
mkdir build
cd build
cmake -G "Unix Makefiles" .. -DCMAKE_PREFIX_PATH=path_to_mpi_lib
无论如何你可以在find_package命令之前设置以下变量来定位MPI(来自FindMPI.cmake的描述):
``MPIEXEC_EXECUTABLE``
Manually specify the location of ``mpiexec``.
``MPI_HOME``
Specify the base directory of the MPI installation.
``ENV{MPI_HOME}``
Environment variable to specify the base directory of the MPI installation.
``ENV{I_MPI_ROOT}``
Environment variable to specify the base directory of the MPI installation.