Deepin(Linux)下搭建Boost.MPI
1.下载Boost.MPI
下载地址:https://www.boost.org/users/download/
下载Linux版本的Boost,大概100Mb左右。
2.安装Boost.MPI
找个自己的目录,解压安装包,解压以后进入boost目录
./bootstrap.sh
然后在目录下会多出几个文件,打开project-config.jam,最后添加上一句using mpi;
安装:
sudo ./b2 install
安装过程先在当前目录下编译出一些东西在bin.v2文件夹里面,然后在复制到你想要的安装目录去,默认就是/usr/local/下的文 文件夹中
观察有没有报错,正常的话在/usr/local/include /usr/local/lib里面会多出来一些boost的东西
3. 查看mpi库
安装完看一下有没有/usr/local/lib/下有没有mpi的库文件,我安装好了之后没有发现没有mpi,官网给的教程版本是错的,要手动把解压目录下bin.v2下的东西复制进来,有两个,这里我写出一个的目录,很好找
/bin.v2/libs/mpi/build/gcc-7.3.0/release/link-static/threading-multi/libboost_mpi.a
复制到 /usr/local/lib
4.使用Boost.MPI
用QtCreator写的,cmakelist里面添加mpi库跟boost标准库
cmake_minimum_required(VERSION 2.8)
project(untitled)
#下面的几个目录都要自己写的,默认的话可能跟我一样的
#add mpi.h
include_directories(/home/jin/MPICH/include)
#add libmpich
link_libraries(/home/jin/MPICH/lib/libmpich.so)
#add libboost
link_libraries(/usr/local/lib/libboost_serialization.a)
link_libraries(/usr/local/lib/libboost_mpi.a)
#add all cpp file to DIR_SRCS
aux_source_directory(. DIR_SRCS)
add_executable(${PROJECT_NAME} ${DIR_SRCS})
#include <boost/mpi.hpp>
#include <iostream>
#include <string>
#include <boost/serialization/string.hpp>
namespace mpi = boost::mpi;
int main()
{
mpi::environment env;
mpi::communicator world;
if (world.rank() == 0) {
world.send(1, 0, std::string("Hello"));
std::string msg;
world.recv(1, 1, msg);
std::cout << msg << "!" << std::endl;
} else {
std::string msg;
world.recv(0, 0, msg);
std::cout << msg << ", ";
std::cout.flush();
world.send(0, 1, std::string("world"));
}
return 0;
}
编译就能通过的,这个必须用两个cpu才能跑,所以在IDE中跑不了。