在计算机集群上实现geant4+root并行(Alpha version)

安装过程参考了:Geant4 - MPI并行-muonium

一、 安装root cern

说明:由于本人主要用的是Geant4.9.6.p04,高版本的root(如root6.12.6)与geant4并行无法编译,推荐安装版本root5.34.21

1. 到root cern官网下载安装包root_v5.34.21.source.tar.gz (source distribution,而非binary distribution)

2. 将其放到/home/username/software/并解压,命令:

cd /home/username/software/root

tar -xvf root_v5.34.21.source.tar.gz

3. 将文件夹root内的源码通过cmake编译到文件夹build内,命令:

./configure

make -j16

4. 终端依次执行以下命令,

cd

vi .bashrc


 5.在打开的文档里粘贴source /home/username/root/bin/thisroot.sh,保存退出(esc+:wq):

 6.新开一个终端,输入root -b试下



二、 安装Geant4.9.6.p04

 Preface在计算机集群中用的一般是centos系统(也是unix),一般无法使用图形界面,所以与图形界面相关的一些前置软件包毋需安装。

1. 在geant4官网下载Geant4.9.6.p04.tar.gz,将其放到/home/username/software/并解压,

cd /home/username/software/geant4

tar -xvf geant4.9.6.p04.tar.gz

 2. 在主文件夹内创建文件夹geant4.9.6.p04-build并进入:

mkdir geant4.9.6.p04-build

cd geant4.9.6.p04-build

3.编译安装

cmake -DCMAKE_INSTALL_PREFIX=~/software/geant4/geant4.9.6.p04-install-DGEANT4_USE_OPENGL_X11=OFF -DGEANT4_USE_QT=OFF GEANT4_BUILD_MULTITHREADED=ON~/software/geant4/geant4.9.6.p04

 说明1:这条命令中:-DCMAKE_INSTALL_PREFIX=~/geant4.9.6-install/参数表示安装的位置 -DGEANT4_USE_OPENGL_X11=OFF

-DGEANT4_USE_RAYTRACER_X11=OFF 表示不开启图形可视化 -DGEANT4_USE_QT=OFF 表示不开启Qt(不需要Qt界面的可以不加此参数)GEANT4_BUILD_MULTITHREADED=ON 开启多线程~/geant4.9.6.p04/表示源程序的地址

说明2:cmake结束后,如果没有提示错误,终端出现类似如下

--Configuring done --Generating done --Build files

have been written to: /home/xxx 

则表示成功,接下来键入

make-j4

   (-j4表示使用cpu的四个核心,比如若双核则-j2,这个过程持续时间视你的cpu运算速度决定,一般十分钟以上) 结束后:

make install -j4

将data文件夹(从官网下载的8个反应截面数据库,解压后共8个文件夹,放在data下:

G4EMLOW6.32 

G4NEUTRONXS1.2 

G4SAIDDATA1.1

RadioactiveDecay3.6

G4NDL4.2 G4PII1.3 

PhotonEvaporation2.3

RealSurface1.0

复制到/geant4.9.6-install/share/Geant4-9.6.4下,用终端进入share下的geant4make的文件夹,

cd~/software/geant4/geant4.9.6.p04-install/share/Geant4-9.6.4/geant4make

source geant4make.sh

随便找一个例子运行,看是否正常.

如果运行正常,则在文件管理器中回到主文件夹,按ctrl+h,打开.bashrc文件,在文本最后添加以下文字,并保存退出:

source ~/software/geant4/geant4.9.6.p04-install/share/Geant4-9.6.4/geant4make/geant4make.sh

    是不是可以用了?

三. 下载安装openmpi

   (官网:https://www.open-mpi.org/) 我用的是openmpi-1.8.8

1. 解压安装包到用户指定的目录下,如/home/username/software/openmpi/)

tar -zxvf openmpi-xxx.tar.gz

cd openmpi-1.8.8

 2. mkdirbuild(创建安装目录)mkdir install (创建二进制文件存放目录)

mkdir build

mkdir install

cd build

 3.安装,集群用的是centos系统,我们没有管理员权限,只用./configure默认是把程序安装到/user/local/bin下,这一位置需要root管理员权限才能写入/修改,所以建议用--prefix指定安装到你自己能访问的位置

../configure--prefix="你想安装到的路径(必须是绝对路径),如:/home/username/software/openmpi-1.8.8/install"

make -j8

make install

4. 至此安装完成,然后设置环境变量。在/home/username/.bashrc中加入如下环境变量

exportPATH="$PATH:/home/username/software/openmpi-1.8.8/install/bin"

exportLD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/username/software/openmpi-1.8.8/install/lib/"

 5. 注:可以按照程序包里INSTALL文件安装,也可以问百度(如http://www.2cto.com/os/201504/391854.html)

重新打开个终端  mpi + tab检查一下


四、 安装geant4的mpi

Preface:以geant4.9.6.p04与geant4.10.4.p02,版本为例

  1. 终端: 进入/examples/extended/paralle/MPI/source /MPI目录下readme有提示如何安装

cd /home/username/software/geant4.9.6.p04/examples/extended/parallel/MPI/source

mkdir build

mkdir install

cd build

2. cmake编译

      1) 如果你是Geant4.9.6.p04 执行以下命令

cmake -DGeant4_DIR=/home/username/software/geant4/geant4.9.6.p04-install/lib64/Geant4-9.6.4..

for Geant4.9.6.p04:cmake -D for Drectory。这一版本直接将负责并行的二进制文件libG4mpi.so放在指定的文件夹Geant4_DIR下

      2) 如果你是Geant4.10.4.p02 执行以下命令

 cmake - DCMAKE_INSTALL_PREFIX=/home/username/software/geant4/geant4.10.04.p02/examples/extended/parallel/MPI/source/install -DGeant4_DIR=/home/username/software/geant4/geant4.10.04.p02-install/lib64/Geant4-10.4.2 .. 

for Geant4.10.4.p02: CMAKE_INSTALL_PREFIX指定了二进制文件存放的位置,并行的二进制文件libG4mpi.so存放在这一位置的lib64/G4mpi-10.4.2文件夹下,在笔记本上装的话,lib64这一文件夹会变成lib

3.编译安装

make -j8

make install

至此,mpi安装完成,无须设置环境变量。

五、安装cmake

1.  解压安装包到用户指定的目录下,如/home/username/software/

cd /home/username/SoftWares/

tar -xvf cmake-3.4.3.tar.gz

2.  安装

./configure--prefix="/home/username/SoftWares/cmake-3.4.3/install"

make -j16

make install -j16

六、 在用户的模拟程序中加入mpi模块

1.打开主程序,加入如下头文件

#include "G4MPImanager.hh"

#include "G4MPIsession.hh"

#include "G4VMPIseedGenerator.hh"

  2. 在main()函数中加入

  G4MPImanager* g4MPI = new G4MPImanager(argc, argv);

 G4MPIsession* session = g4MPI-> GetMPIsession();

 // Set the Random engine

 CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine());

 G4int rank_ = MPI::COMM_WORLD.Get_rank(); //获取并行进程号

 G4long seed = rank_*10.0;

  G4Random::setTheSeed(seed); //设置随机数种子, seed与并行的进程号关联,可以确保每个进行的随机数不是相同序列的

3.在main结尾处加上

  delete g4MPI;

 4.Cmakelist.txt文件配置:我对CMakelist.txt文件不是很懂,直接复制的MPI的examples里面的文件

 5. 编译运行

  (终端:进入用户的模拟程序,比如exMPI01, 假设该程序已做好步骤3.4)

mkdir build

cd build

cmake -DGeant4_DIR=/home/username/geant4/geant4.9.6-install/lib/Geant4-9.6.4 ..  

说明:for Geant4.9.6.p04:直接连接到Geant4_DIR下负责并行的二进制文件libG4mpi.so,因为之前安装的时候已经把该文件直接与Geant4本身的二进制文件放在同一文件夹下(Geant4_DIR)了,较为简单

 cmake -DG4mpi_DIR=/home/username/software/geant4/geant4.10.04.p02/examples/extended/parallel/MPI/source/install/lib64/G4mpi-10.4.2-DGeant4_DIR=/home/username/software/geant4/geant4.10.04.p02-install/lib64/Geant4-10.4.2..  

说明:for Geant4.10.4.p02 麻烦一些,需要指定二进制文件libG4mpi.so所在的位置(G4mpi_DIR)和Geant4本身的二进制库libG4xxxx.so所在的位置。这样的编译方式可能有避免程序发生错误的优势???

make (生成执行文件exMPI01)

mpirun -np 4 ./exMPI01宏文件名(如vis.mac) (4指同时运行的进程数)


6.至此,整个安装结束。

你可能感兴趣的:(在计算机集群上实现geant4+root并行(Alpha version))