Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法用Boost和MPICH2编译C++代码_C++_Ubuntu_Boost_Mpi_Mpich - Fatal编程技术网

无法用Boost和MPICH2编译C++代码

无法用Boost和MPICH2编译C++代码,c++,ubuntu,boost,mpi,mpich,C++,Ubuntu,Boost,Mpi,Mpich,我尝试使用从源代码编译的mpich2 3.1.4运行BoostMPI。但是,我认为问题在于Boost MPI对OpenMPI的依赖性正在与mpich2 3.1.4相混淆 编译代码时,我得到以下提示 $ mpic++ -std=c++11 boost_mpi.cpp -lboost_system -lboost_mpi -lboost_serialization /usr/bin/ld: warning: libmpi.so.1, needed by /usr/lib/gcc/x86_64

我尝试使用从源代码编译的mpich2 3.1.4运行BoostMPI。但是,我认为问题在于Boost MPI对OpenMPI的依赖性正在与mpich2 3.1.4相混淆

编译代码时,我得到以下提示

$ mpic++ -std=c++11 boost_mpi.cpp -lboost_system -lboost_mpi -lboost_serialization    
/usr/bin/ld: warning: libmpi.so.1, needed by /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_mpi.so, may conflict with libmpi.so.12
这是我的密码

#include <iostream>
#include <string>
#include <queue>
#include "mpi.h"
#include <boost/algorithm/string.hpp>
#include <unordered_map>
#include "tf.cpp"

#include <boost/mpi.hpp>
#include <boost/serialization/string.hpp>

namespace mpi = boost::mpi;

int main(int argc, char* argv[]){
  mpi::environment env(argc, argv);
  mpi::communicator boost_world;

  if (boost_world.rank() == 0) {
    boost_world.send(1, 0, std::string("Hello"));
    std::string msg;
    boost_world.recv(1, 1, msg);
    std::cout << msg << "!" << std::endl;
  } else {
    std::string msg;
    boost_world.recv(0, 0, msg);
    std::cout << msg << ", ";
    std::cout.flush();
    boost_world.send(0, 1, std::string("world"));
  }

  return 0;
}
我知道这里已经给了我很多帮助了。但是,我无法设置它们,因为我已经手动编译了代码

我正在64位机器上使用Ubuntu 14.04


提前谢谢。

您想要什么版本?你的mpic++表演是什么?您是否安装了多个MPI库?@mcsim:My mpichversion为3.1.4。这是我的$mpic++-show输出:g++-I/usr/local/include-L/usr/local/lib-lmpicxx-Wl,-rpath-Wl,/usr/local/lib-Wl,-enable new dtags-lmpi。可能不止一个mpi安装是的,因为boost似乎依赖OpenMPIT,这可能不是最好的解决方案,但我建议您删除所有系统范围的mpi安装,并将每个版本安装到某个专用位置。要启用所需的特定版本,可以使用lmod或环境模块之类的工具