【问题标题】:How do I install boost-mpi and it's dependecies for clang on Mac OS?如何在 Macos 上为 clang 安装 boost-mpi 及其依赖项?
【发布时间】:2020-09-07 07:58:26
【问题描述】:

我一直试图在 MAC OS 上为 clang 安装 boost-mpi,但我失败了。谁能帮我? 我试过了:
brew install open-mpi
brew install boost
brew install boost-mpi
但我收到了这个 CMake 错误:

CMake Warning at /usr/local/lib/cmake/boost_mpi-1.72.0/libboost_mpi-variant-shared.cmake:64 (message):
  Target Boost::mpi already has an imported location
  '/usr/local/lib/libboost_mpi-mt.dylib', which will be overwritten with
  '/usr/local/lib/libboost_mpi.dylib'

我尝试运行 MPI Hello world 程序广告得到了这个错误输出:

Assertion failed: (_check_result == MPI_SUCCESS), function recv_impl, file /usr/local/include/boost/mpi/communicator.hpp, line 1400.
[Deniss-MacBook-Pro:83252] *** Process received signal ***
[Deniss-MacBook-Pro:83252] Signal: Abort trap: 6 (6)
[Deniss-MacBook-Pro:83252] Signal code:  (0)
[Deniss-MacBook-Pro:83252] [ 0] 0   libsystem_platform.dylib            0x00007fff6a5b95fd _sigtramp + 29
[Deniss-MacBook-Pro:83252] [ 1] 0   ???                                 0x0000000000000180 0x0 + 384
[Deniss-MacBook-Pro:83252] [ 2] 0   libsystem_c.dylib                   0x00007fff6a48f808 abort + 120
[Deniss-MacBook-Pro:83252] [ 3] 0   libsystem_c.dylib                   0x00007fff6a48eac6 err + 0
[Deniss-MacBook-Pro:83252] [ 4] 0   MPI                                 0x0000000100616af6 _ZNK5boost3mpi12communicator9recv_implIiEENS0_6statusEiiRT_N4mpl_5bool_ILb1EEE + 214
[Deniss-MacBook-Pro:83252] [ 5] 0   MPI                                 0x00000001006167f0 _ZNK5boost3mpi12communicator4recvIiEENS0_6statusEiiRT_ + 48
[Deniss-MacBook-Pro:83252] [ 6] 0   MPI                                 0x00000001006166f2 main + 114
[Deniss-MacBook-Pro:83252] [ 7] 0   libdyld.dylib                       0x00007fff6a3c0cc9 start + 1
[Deniss-MacBook-Pro:83252] [ 8] 0   ???                                 0x0000000000000001 0x0 + 1
[Deniss-MacBook-Pro:83252] *** End of error message ***

有谁知道如何解决这个问题并让 Hello World 程序正常运行?
UPD 1:我设法在我的 CMakeLists.txt 中使用 set(Boost_USE_MULTITHREADED TRUE) 修复了 CMake 警告,但程序仍然崩溃。我认为这是 Mac OS Catalina 的一个问题:它要求在每次运行时为已编译程序接收网络连接的权限。有谁知道如何处理这个问题?
UPD 2:我尝试关闭防火墙,它没有要求接受传入连接,但仍然失败并出现同样的错误。

【问题讨论】:

  • 您是否检查过this question 与您收到的类似警告消息?
  • 它删除了 CMake 警告,但程序仍然崩溃
  • 如果你想坚持clang,那么你的答案可能没问题,你可以跳过这条评论的其余部分。如果您想改用gcc,但又害怕为macOS 构建它,您可以使用这个:owsiak.org/… 和这个:owsiak.org/…
  • @Oo.oO 为什么将gcc 与mpi 一起使用比clang 更好?我是 MPI 的新手,如果这是一个愚蠢的问题,我很抱歉。
  • @DenisIvanenko 我并不认为它更好。但我很确定在 HPC 机器上安装 OpenMPIgcc 更为常见。因此,最终,当您决定将您的计算带入 HPC 世界时,会发现一切都基于那里的 gcc。这就是为什么我更喜欢在我的 macOS 上使用基于 gcc 的代码 - 当涉及到基于 MPI 的代码时。

标签: c++ boost mpi clion macos-catalina


【解决方案1】:

我设法解决了这一切。实际上,我的错误由很多东西组成。首先,正如我在this question 中发现的,set(Boost_USE_MULTITHREADED TRUE) 有助于删除 CMake 警告。但是程序警告的问题是因为 CLion 没有使用mpirun 运行 mpi 程序。但是,mpirun 程序运行时还有其他警告。可以使用export PMIX_MCA_gds=hash 修复此警告。我找到了这个解决方案here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 2010-12-25
    • 2021-08-14
    • 2019-04-06
    • 1970-01-01
    • 2021-10-22
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多