查看原文
其他

Boost.MPI的编译

jxzou 量子化学 2022-07-07

以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这种增加外部库路径的写法,此时不需要这一行。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存