CentOS 7.8下安装完美安装配置Rosetta

注意编译过程中需要海量的内存(>=64GB for -j 24)。

硬件环境

CPU: 50 cores

内存: 80GB


1. 安装依赖

yum install boost-devel libstdc++ zlib zlib-devel bzip2

 

2. 编译器的选择

  • 使用GCC编译器

最新的Rosetta代码编译依赖完整的C++11特性,因此我们需要更新系统自带的gcc编译器。如果使用gcc-8.21, 完全可以编译通过Rosetta.

CentOS 7.8升级gcc-8.2

 

  • 使用Clang编译器

版本Clang 3.4.2, 此外你需要额外编译clang版本的openmpi。clang3.4完全兼容C++11 regex。推荐使用!并且更加灵活和快速。

yum install epel-release
yum install clang clang-devel clang-analyzer

 

3.OpenMPI的编译与安装

  • GCC编译环境:

CentOS 7.8安装OpenMPI3.1.0

环境变量配置:

vim ~/.bash_profile

#OpenMPI
export PATH=$PATH:/usr/local/openmpi/bin
export LD_LIBRARY_PATH=/usr/local/openmpi/lib

source ~/.bash_profile      #立即生效 

编译安装OpenMPI3.1.0

tar -zxvf openmpi-3.1.0.tar.gz
cd openmpi-3.1.0/
./configure --prefix=/usr/local/openmpi
make -j 48
make install

 

  • Clang编译环境:

环境变量配置:

vim ~/.bash_profile

export PATH=$PATH:/usr/local/openmpi_clang/bin

source ~/.bash_profile      #立即生效 

基于clang编译安装OpenMPI3.1.0

#自行编译的方法:clang.并创建软连接。
tar -zxvf openmpi-3.1.0.tar.gz
cd openmpi-3.1.0/
./configure CC=clang CXX=clang++ --prefix=/usr/local/openmpi_clang
make -j 48
make install
ln -s /usr/local/openmpi_clang/bin/mpirun /usr/local/bin/mpiclang

运行时应该使用mpiclang,而不是mpirun(gcc),避免影响其他gcc编译软件的并行。

 

4.Rosetta的编译与安装

环境变量配置:

vim ~/.bashrc      #打开.bashrc 

#Rosetta
export ROSETTA=/opt/rosetta2019
export ROSETTA3_DB=$ROSETTA/main/database
export ROSETTA_BIN=$ROSETTA/main/source/bin
export PATH=$PATH:$ROSETTA_BIN
export LD_LIBRARY_PATH=$ROSETTA/main/source/bin:$LD_LIBRARY_PATH

source ~/.bashrc      #立即生效 

编译多线程模式版本的Rosetta, 此处以调用48个核编译为例:

tar zxvf rosetta_src_2019.12.60667_bundle.tgz
mv rosetta_src_2019.12.60667_bundle.tgz rosetta2019
cd $ROSETTA/main/source/

# 使用gcc编译:
./scons.py -j 48 mode=release bin extras=mpi #gcc

# 使用clang编译:
./scons.py -j 48 mode=release bin extras=mpi cxx=clang

 

5. 测试运行

antibody.mpi.linuxgccrelease # gcc
antibody.mpi.linuxclangrelease # clang

 

参考资料

1. https://zhuanlan.zhihu.com/p/58384830

2. https://www.cnblogs.com/wq242424/p/5110301.html

 

 

上一篇:CNN五大经典模型:Lenet,Alexnet,Googlenet,VGG,DRL


下一篇:Nginx源码分析 - HTTP模块篇 - TCP连接建立过程(21)