Boost.MPI的编译
以boost.1.55.0为例,压缩包boost_1_55_0.tar.gz可以在官网http://www.boost.org/users/history/下载到。
为了编译出并行版的Boost库,需要事先安装任一种mpi,本文以/opt/openmpi-1.10.3为例(假设事先安装好)。
1.解压
tar -zxvf boost_1_55_0.tar.gz
cd boost_1_55_0
2.运行bootstrap.sh脚本并设置相关参数
./bootstrap.sh --prefix=`pwd` --with-libraries=all --with-toolset=intel-linux
这里通过--with-toolset来指定编译器,写intel-linux就是intel编译器,写gcc就是gcc编译器。`pwd`指安装在当前文件夹下,也可以更改至其他位置。
3.添加mpi路径
打开project-config.jam文件,在第一行添加mpicxx的绝对路径
usingmpi : /opt/openmpi-1.10.3/bin/mpicxx ;
注意最后有一个分号不能少。
4.编译
./b2 -j16 --layout=tagged link=static,shared threading=multi install
可以通过加上-j16使用16个核并行编译,大概3分钟即可完成。在lib文件夹下可以看到生成libboost_mpi-mt.so等库文件。mt是multi-thread的意思;linux系统自带的boost库里通常没有这些并行库文件。
5.添加环境变量
export BOOST_ROOT=/localhome/$USER/software/boost_1_55_0
export BOOST_INCLUDE=$BOOST_ROOT/include:$BOOST_INCLUDE
export BOOST_LIB=$BOOST_ROOT/lib:$BOOST_LIB
export LD_LIBRARY_PATH=$BOOST_ROOT/lib:$LD_LIBRARY_PATH
第一行的路径视自己的实际情况修改。最后一行也可以不写,很多其他软件在编译时支持-L/localhome/$USER/software/boost_1_55_0/lib这种增加外部库路径的写法,此时不需要这一行。