在计算机集群上实现geant4+root并行(Alpha ver
安装过程参考了: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.至此,整个安装结束。