宇宙学模拟程序GADGET 2.0.7安装方法

宇宙学模拟程序GADGET 2.0.7安装方法
Installation of the cosmology simulation program GADGET 2.0.7

文/Sobereva @北京科音  2013-Jul-25


GADGET-2 (GAlaxies with Dark matter and Gas intEracT)是一个极为流行的宇宙学模拟程序,地位大抵类似于量子化学中的Gaussian(貌似),原文见Mon. Not. R. Astron. Soc. 364, 1105–1134 (2005)。它基于多体方法和光滑粒子流体动力学(smoothed particle hydrodynamics, SPH),可以诸如模拟银河间相互作用/碰撞过程、宇宙大尺度结构的形成过程等问题,支持周期边界条件。此程序是由马普所的Volker Springel教授开发的,由C语言编写,利用MPI实现在单机或大规模集群上并行。它开源,免费,可以在其主页http://www.mpa-garching.mpg.de/gadget/上下载到,目前最新版本是2.0.7。其前身GADGET-1在2000年发布,GADGET-2于2005年发布,GADGET-3目前正在开发中。



本文介绍一下GADGET 2.0.7的编译方法。假设安装到/sob目录下。软件环境:系统为RHEL6-U1,用户为root,shell为bash,已将icc和ifort 12.1.0编译器安装到默认路径下。CPU为i7-2630QM。等以后若有机会,会再写帖子结合模拟实例来介绍下如何建立初始条件、设定参数、运行模拟、分析数据。
(搞计算化学,特别是搞MD的人,玩玩GADGET-2肯定不会觉得有多复杂。整天跟分子打交道,偶尔玩玩大尺度,是个不错的消遣^_^ )


1 安装MPI库

注意即便打算只用GADGET-2进行串行计算,也得安装MPI库。这里用我最常用的MPICH2库。
到http://www.mpich.org/static/downloads/下载mpich2-1.4.1p1.tar.gz并解压至/sob目录下,在其目录下运行
./configure
make
make install
现在可以删掉/sob/mpich2-1.4.1p1目录


2 安装GNU scientific library (GSL)

到http://mirror.bjtu.edu.cn/gnu/gsl/下载gsl-1.9.tar.gz并解压至/sob目录下,在其目录下运行
./configure CC=icc
make
make install
现在可以删掉/sob/gsl-1.9目录


3 安装FFTW快速傅里叶变换库

注意不要用当前最新版本(FFTW3系列),而要用FFTW2系列。FFTW 2.1.5版是最后一个FFTW2系列版本
到http://www.fftw.org/download.html下载fftw-2.1.5.tar.gz并解压至/sob目录下,在其目录下运行
./configure --enable-mpi --enable-type-prefix --enable-float --prefix=/sob/fftw215
make
make install
FFTW被安装到了/sob/fftw215下。现在可以删掉/sob/fftw-2.1.5目录


4 安装GADGET-2

到http://www.mpa-garching.mpg.de/gadget/下载gadget-2.0.7.tar.gz,解压到/sob目录下
打开/sob/Gadget-2.0.7/Gadget2/Makefile
注释掉 OPT   +=  -DHAVE_HDF5
注释掉 OPT   +=  -DPERIODIC    //如果要编译支持周期边界条件的版本则不要注释掉它
注释掉 OPT   +=  -DPMGRID=128
将ifeq ($(SYSTYPE),"MPA")到紧接着它的endif之间的内容设为
CC       =  mpicc   
OPTIMIZE =  -O3 -Wall
GSL_INCL = -I/usr/local/include
GSL_LIBS = -L/usr/local/lib
FFTW_INCL= -I/sob/fftw215/include
FFTW_LIBS= -L/sob/fftw215/lib
MPICHLIB = -L/usr/local/lib
保存文件。进入/sob/Gadget-2.0.7/Gadget2/目录,运行make即在当前目录下产生了可执行文件Gadget2。

将export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib加入当前用户的.bashrc文件中并运行bash命令使之生效。(当然,如果/usr/local/lib已经在LD_LIBRARY_PATH里就不必这么做了)


5 测试GADGET-2

现在进行测试,是自带的模拟两个银河碰撞过程的例子
进入/sob/Gadget-2.0.7目录,运行
mkdir galaxy
cp Gadget2/parameterfiles/galaxy.param galaxy/
mpirun -np 4 ./Gadget2/Gadget2 galaxy/galaxy.param
在笔者的i7-2630QM上经过不到11分钟运算完毕。这里galaxy.param是输入文件,包含运行参数。-np后的内容根据实际计算条件而定。如果不用mpirun而直接调用Gadget2,则会进行串行计算。
模拟过程中会向/sob/Gadget-2.0.7/galaxy目录下输出各种文件。其中snapshot_xxx文件类似于分子动力学程序中的第xxx帧,可以进行可视化分析。


6 安装SPLASH

SPLASH是可视化GADGET-2结果的重要工具。所以其安装过程在这里也进行说明。
先运行locate cairo.h,如果在系统中没找到cairo.h这个文件,则运行yum install cario-devel来安装Cairo库。
到SPLASH的网站http://users.monash.edu.au/~dprice/splash/download.html下载splash-2.2.2.tar.gz,解压到/sob目录下
进入/sob/splash目录,运行
make SYSTEM=ifort
make install
编译SPLASH会产生出一大堆SPLASH可执行文件,专门用于可视化不同的程序的输出。其中gsplash是专门给GADGET-2用的,可以用它来载入snapshot_xxx文件。gsplash的用法在以后的帖子中会介绍。