显式指定路径后仍无法找到MPI库,编译SIMULATeQCD遇阻
编译SIMULATeQCD时CMake无法定位MPI库的问题及解决方案
问题描述
我正在尝试编译SIMULATeQCD,但CMake始终无法定位到MPI库。已安装openmpi-devel,也找到了对应头文件,尝试多种路径指定方式均无效,即使显式指定路径,CMake依旧找不到MPI。我从未使用过CMake,也看不懂它输出的晦涩报错信息。
执行的CMake命令及报错
[root@rockylinux build]# cmake ../simulateqcd/ -DARCHITECTURE="70" -DUSE_GPU_AWARE_MPI=ON -DUSE_GPU_P2P=ON -DMPI_CXX_LIB_NAMES=/usr/lib64/openmpi/lib -DMPI_CXX_HEADER_DIR=/usr/include/openmpi-x86_64 -DMPI_C_COMPILER=/usr/lib64/openmpi/bin/mpicxx -- Using git version 43e2518 -- Using CUDA backend -- Could NOT find MPI_CXX (missing: MPI_/usr/lib64/openmpi/lib_LIBRARY MPI_CXX_WORKS) (Required is at least version "3.1") CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message): Could NOT find MPI (missing: MPI_CXX_FOUND) (Required is at least version "3.1") Call Stack (most recent call first): /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) /usr/share/cmake/Modules/FindMPI.cmake:1742 (find_package_handle_standard_args) CMakeLists.txt:56 (find_package) -- Configuring incomplete, errors occurred! See also "/opt/build/CMakeFiles/CMakeOutput.log". See also "/opt/build/CMakeFiles/CMakeError.log". # Check Compiler Paths [root@rockylinux build]# /usr/lib64/openmpi/bin/mpicxx --showme:compile -I/usr/include/openmpi-x86_64 [root@rockylinux build]# /usr/lib64/openmpi/bin/mpicxx --showme:link -Wl,-rpath -Wl,/usr/lib64/openmpi/lib -Wl,--enable-new-dtags -L/usr/lib64/openmpi/lib -lmpi_cxx -lmpi
解决方案
1. 修正CMake参数错误
你误用了MPI_CXX_LIB_NAMES参数——这个变量是指定库名称(如mpi_cxx),而非库路径。正确的库路径参数是MPI_CXX_LIBRARY和MPI_C_LIBRARY,同时要区分C和C++的MPI编译器:
cmake ../simulateqcd/ -DARCHITECTURE="70" -DUSE_GPU_AWARE_MPI=ON -DUSE_GPU_P2P=ON \ -DMPI_CXX_LIBRARY=/usr/lib64/openmpi/lib/libmpi_cxx.so \ -DMPI_C_LIBRARY=/usr/lib64/openmpi/lib/libmpi.so \ -DMPI_CXX_HEADER_DIR=/usr/include/openmpi-x86_64 \ -DMPI_C_COMPILER=/usr/lib64/openmpi/bin/mpicc \ -DMPI_CXX_COMPILER=/usr/lib64/openmpi/bin/mpicxx
2. 更简便的方式:直接用MPI编译器驱动CMake
CMake支持直接指定CMAKE_C_COMPILER和CMAKE_CXX_COMPILER为MPI的编译器,这样CMake会自动识别MPI的路径、头文件和库,无需手动指定其他参数:
cmake ../simulateqcd/ -DARCHITECTURE="70" -DUSE_GPU_AWARE_MPI=ON -DUSE_GPU_P2P=ON \ -DCMAKE_C_COMPILER=/usr/lib64/openmpi/bin/mpicc \ -DCMAKE_CXX_COMPILER=/usr/lib64/openmpi/bin/mpicxx
3. 检查MPI版本是否达标
报错要求MPI版本至少为3.1,先确认你的OpenMPI版本:
mpicxx --version
如果版本低于3.1,需要升级OpenMPI。
4. 查看CMake日志定位深层问题
若以上方法无效,查看/opt/build/CMakeFiles/CMakeError.log的详细内容,里面会记录CMake尝试编译MPI测试程序的失败细节,能帮你定位具体问题(如缺少依赖、权限不足等)。
内容的提问来源于stack exchange,提问作者Grant Curell
相关产品推荐
相关产品推荐

