Boost.MPI on Ubuntu 12.04
Boost.MPI on Ubuntu 12.04
Background
大家好
我正在尝试使用 Boost::MPI,目前我只是尝试运行教程中简单的第一个示例。我在构建/运行它时遇到问题。
我使用 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
运行?
通常不支持混合针对不同 MPI 库编译的代码。如果您的 Boost::MPI 与 Open MPI 链接,则必须将 Open MPI 用于应用程序的其余部分。
要获取mpic++
以及其他编译器包装器和所有头文件,您应该安装 Open MPI 的-dev
包。如果库已作为依赖项安装,则只有运行时部分将存在。
相关文章:
- 在Ubuntu 16.04上安装Cilk时出现问题
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- 如何在Ubuntu中使用cmake设置qt4
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 无法将 GLFW 库与 Ubuntu 18.04 上的头文件链接
- 无法在Ubuntu上将共享库与Eclipse链接
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- 无法安装 R 包 "nloptr"(Ubuntu 16.04 上的 R3.6.2) - C++编译器问题
- 使用 ubuntu 终端在 c++ 上运行线程类的问题
- WiringPi on Ubuntu Mate
- lncurses on Clion with Ubuntu
- C++11 in QtCreator 3.5.0 on ubuntu
- wxMkdir on Ubuntu
- opengl on ubuntu Linker error: undefined references
- Boost.MPI on Ubuntu 12.04
- C++ on ubuntu hello world
- 分段错误 - OpenCV 和 Qt in Netbeans on Ubuntu
- Eclipse and OpenCV on Ubuntu
- cgi with lighttpd on Ubuntu
- boost::filesystem3::path::parent_path() on Ubuntu