【问题标题】:Boost.MPI on Ubuntu 12.04Ubuntu 12.04 上的 Boost.MPI
【发布时间】:2012-05-31 02:27:38
【问题描述】:

背景

大家好,

我正在尝试使用 Boost::MPI,目前我只是尝试从 tutorial 运行简单的第一个示例。我在构建/运行它时遇到问题。

我使用 apt-get 安装了 boost,并使用 synaptic 包管理器安装了 boost_mpi 和 boost_serialization (1.48.0)。我使用 apt-get 安装了 MPICH2。

尽管 OpenMPI 从未显式安装,但它似乎在我的系统上,我认为这是 Boost::MPI 的依赖项,但似乎 MPICH2 和 OpenMPI 正在互相踩踏。

信息

如果我使用

构建
g++ test.cpp -I/usr/include/mpich2 -L/usr/lib -lboost_mpi -lboost_serialization

然后运行

mpiexec -n 2 ./a.out

它抛出了一堆似乎来自 OpenMPI 的错误。如果我尝试通过使用

链接到 OpenMPI 库来构建
g++ test.cpp -L/usr/lib -lboost_mpi -lboost_serialization -lmpi -I/usr/include/openmpi

我收到以下错误:

/usr/bin/ld: /tmp/ccJ5ezv7.o: undefined reference to symbol 'ompi_op_set_cxx_callback'
/usr/bin/ld: note: 'ompi_op_set_cxx_callback' is defined in DSO /usr/lib/libmpi.so.0 so try adding it to the linker command line
/usr/lib/libmpi.so.0: could not read symbols: Invalid operation

如果我尝试通过以下命令使用mpic++ 构建

mpic++ test.cpp -lboost_mpi -lboost_serialization

它不会链接返回一堆表单的错误

 /usr/lib/libmpich.so: undefined reference to `MPL_trid'

所以我尝试链接 libmpi,即

mpic++ test.cpp -lboost_mpi -lboost_serialization -lmpi

这会构建,但在使用 mpiexec 运行时会产生以下错误

Fatal error in PMPI_Errhandler_set: Invalid communicator, error stack:
PMPI_Errhandler_set(118): MPI_Errhandler_set(comm=0x370500, errh=0x370be0) failed
PMPI_Errhandler_set(70).: Invalid communicator

问题

在我看来,不知何故 OpenMPI 和 MPICH2 在真正不应该的地方交织在一起。有谁知道我如何仅针对 OpenMPI 或 MPICH2 构建然后使用正确的 mpiexec 运行?

【问题讨论】:

  • 你不能卸载 openmpi 或 mpich 吗?
  • 我尝试运行sudo apt-get remove mpich2,但它似乎离开了所有库并在我的系统上包含文件
  • 试试sudo apt-get purge mpich2purge 也会删除所有文件。
  • @Dan 可能你也需要删除 libmpich
  • 试过sudo apt-get purge mpich2,现在找不到mpiexecapt-get 不会碰 openmpi-dev 因为它认为它是最新的。

标签: c++ boost ubuntu mpi


【解决方案1】:

通常不支持混合针对不同 MPI 库编译的代码。如果您的 Boost::MPI 链接到 Open MPI,那么您必须在应用程序的其余部分使用 Open MPI。

要获得mpic++ 以及其他编译器包装器和所有头文件,您应该为Open MPI 安装-dev 包。如果该库已作为依赖项安装,则只有运行时部分。

【讨论】:

  • lliev - 如何为 Open MPI 安装 -dev 包。在 dev 包上执行 apt-get install 会给我 1.4 版本的包,而不是最新版本。
猜你喜欢
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 2012-05-29
  • 2014-01-07
  • 1970-01-01
  • 2014-08-12
  • 2012-12-10
相关资源
最近更新 更多