【问题标题】:How to build boost with mpi support on homebrew?如何在自制软件上使用 mpi 支持来构建提升?
【发布时间】:2012-10-20 01:16:34
【问题描述】:

根据这篇文章 (https://github.com/mxcl/homebrew/pull/2953),标志“--with-mpi”应该启用对相关自制公式的 boost_mpi 构建支持,所以我试图通过自制软件安装 boost,如下所示:

brew install boost --with-mpi

但是,实际的 boost mpi 库并未在构建中,因此无法找到。 根据:https://github.com/mxcl/homebrew/pull/15689

,目前正在围绕此进行一些工作

总之,我目前可以构建 boost,但似乎“--with-mpi”标志被忽略了。有人可以检查一下,我是否应该能够在 Mac OS X Mountain Lion (10.8) 上构建 boost(支持 mpi)?

(详细)输出生成以下行:

MPI auto-detection failed: unknown wrapper compiler mpic++
Please report this error to the Boost mailing list: http://www.boost.org
You will need to manually configure MPI support.

warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.

不确定我该如何解决这个问题并获得要构建的 mpi 东西 - 有什么想法吗?

【问题讨论】:

  • 这里有一些构建初始化的输出:gist.github.com/3981327
  • 以前预装 Open MPI 的旧 OS X 版本。我相信 OMPI 从 Lion 开始就被删除了,你必须手动安装它。来自 OMPI 安装的 bin 目录应位于 PATH - 这是 mpiccmpic++ 等包装器所在的位置。
  • 谢谢 - 是的,我安装了 open-mpi,并且也尝试了 mpich2(不过仍然是同样的问题)。路径指向 /usr/local/bin,使用 homebrew 安装时可以找到 mpic++、mpicc、mpirun 等。

标签: macos boost mpi homebrew openmpi


【解决方案1】:

以防万一这有助于其他人,这就是我解决这个问题的方法。主要错误是MPI auto-detection failed: unknown wrapper compiler mpic++,在命令行中输入任何 mpic++ 都会验证它对我来说不能正常工作。我使用 brew 安装 open-mpi,但在安装 boost 的详细输出中显示了相同的错误。 brew doctor 的运行表明 openmpi 未正确链接,因此我修复了这些错误并重新运行 brew -v install boost --with-mpi --without-single,它最终构建并安装了所有库而没有问题

【讨论】:

    【解决方案2】:

    对于遇到此问题的任何人,该软件包已迁移到 boost-pythonboost-mpi,与 boost 分开。使用brew install boost-mpi

    【讨论】:

    • 这是有用的信息,但我确实认为这应该是对问题的评论,因为它不一定回答“如何构建”的问题。
    【解决方案3】:

    让它在 OSX 10.11.5 上运行即可。我试过 brew,但没有运气。

    假设你已经安装了 gcc。以下是我所做的:

    1.查找并禁用(但不要删除)clang

    clang 总是让人头疼。构建 Boost 时会有很多警告。

    which clang,应该给你/usr/bin/clang

    重命名为:sudo mv clang clang_mac_remove,对于 clang++ 也是:sudo mv clang++ clang++_mac_remove。如果将来需要,您可以将名称改回来。

    2。安装 OpenMPI

    如果您已经使用 brew 安装,请先卸载。因为默认情况下它会使用 clang 作为编译器包装器。您需要将包装器更改为gcc

    下载包。

    将包装编译器指定为gccg++

    ./configure CC=gcc CXX=g++ F77=ifort FC=ifort --prefix=/usr/local
    

    下面可能需要很长时间。

    make all
    
    sudo make install
    

    参考:https://wiki.helsinki.fi/display/HUGG/Open+MPI+install+on+Mac+OS+X

    3.安装 Boost MPI

    下载包。

    运行./bootstrap.sh(可以先打开并指定toolsetgcc,否则mac默认为darwin)。

    project-config.jam 文件中添加using mpi ;。那么./b2 —with-mpi 只会构建 mpi 库。

    然后,所有构建的库都可以在文件夹~/Downloads/boost_1_61_0/stage/lib中找到。

    将它们复制或移动到/usr/local/lib 或任何其他常用的库路径。

    参考:http://www.boost.org/doc/libs/1_61_0/doc/html/mpi/getting_started.html

    4.使用 Boost MPI 编译

    图书馆目录 = -L/usr/local/lib

    包括 = -I/usr/local/include/

    链接器 = -lboost_mpi -lboost_serialization

    例如

    mpic++ -std=c++11 -I/usr/local/include/ -c boost_test.cpp -L/usr/local/lib -lboost_mpi -lboost_serialization
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2015-03-11
      • 2017-07-10
      • 2013-04-28
      相关资源
      最近更新 更多