ubuntu anaconda 安装 ipdb_Gadget 2.0.7的安装

fc5a05248fb974b8bcc195813501b166.png

寒假参加了一个远程科研项目,安装和熟悉这个程序用了将近一周,现在把安装指南放在知乎上,留作记录,以飨后人。

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实现在单机或大规模集群上并行。它开源,免费,代码以及users-guide可以在其主页http://www.mpa-garching.mpg.de/gadget/上下载到,目前最新版本是2.0.7。其前身GADGET-1在2000年发布,GADGET-2于2005年发布,GADGET-3目前正在开发中。

本文介绍一下GADGET 2.0.7的安装方法。假设安装到/sob目录下。硬件环境:Intel Core i5-8250U CPU, 四核八线程。软件环境:系统为Ubuntu-VirtualBox,用户为root。想要运行Gadget-2,除了需要安装它的代码,还需要安装4个库(libraries),分别是MPI, GSL, FFTW, HDF5。前三个没有的话,Gadget-2无法运行;最后一个没有,难以读取数据。

安装之前,需要在Ubuntu系统中安装C compiler:

sudo apt-get install gcc

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=gcc    #注意这里是gcc,不是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   //如果要输出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  -DH5_USE_16
MPICHLIB = -L/usr/local/lib        -lhdf5

保存文件。进入/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

在笔者的i5-8250U CPU上经过大概18分钟运算完毕,产生60个snapshot_xxx.hdf5文件。这里galaxy.param是输入文件,包含运行参数。-np后的内容根据实际计算条件而定。如果不用mpirun而直接调用Gadget2,则会进行串行计算。

模拟过程中会向/sob/Gadget-2.0.7/galaxy目录下输出各种文件。其中snapshot_xxx文件类似于分子动力学程序中的第xxx帧,可以进行可视化分析。

6 安装HDF5(最好安装HDF5,安装SPLASH好像也可以)

Gadget-2的运行不依赖于HDF5,但是运行Gadget-2之后产生的结果是hdf5格式,没有HDF5就没办法打开。

从HDF官网

https://support.hdfgroup.org/HDF5/​support.hdfgroup.org

上下载hdf5-1.8.17.tar.gz , 下载后输入如下命令:

gunzip hdf5-1.8.17.tar.gz
tar -xvf hdf5-1.8.17.tar
./configure
make
make install

如果网址中下载的HDF5包不能工作,可以直接用pip命令下载(对其他三个包也是如此)

sudo apt-get install pip
sudo pip install hdf5

hdf5文件可以用HDFview软件来查看(但我还不知道怎么用,欢迎交流),安装如下:

sudo apt-get install hdfview

除此之外,还可以尝试先装Anaconda(一个开源的python包管理器),把libraries都装在conda里,没有用过,听说很方便。

可能再开一个新坑介绍如何运行Gadget-2里的lcdm_gas这个例子,并且用python做可视化。

祝大家闰日愉快!

参考:http://sobereva.com/195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值