如何在Mac OS上安装boost-mpi和clang的依赖项?

时间:2020-05-20 19:54:43

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

我一直试图在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:我试图关闭防火墙,但它没有要求接受传入的连接,但仍然失败,并出现相同的错误。

1 个答案:

答案 0 :(得分:0)

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

相关问题