PRESTO的配置(高算版)
作者为:левский Уильямс
一、准备工作
在配置安装的时候,没有load任何的Module。
如果在此之前有导入过任何的模块(用module list
查看已导入的模块),请全部卸载。
保证gcc是4.8.5版本的。
需要下载如下的工具:
- fftw-3.3.9 (点击下载)
- pgplot5.2 (点击下载,有点慢)
- tempo (点击下载)
- cfitsio-4.0.0 (点击下载) (注意其大小只有4M左右,如果不是4M左右肯定是下错了)
- presto (点击下载)
数据集下载如下:
注:如果想自己下载,可以参考下面的链接
fftw-3.3.9
wget http://www.fftw.org/fftw-3.3.9.tar.gz
pgplot:
wget ftp://ftp.astro.caltech.edu/pub/pgplot/pgplot5.2.tar.gz
tempo:
cfitsio git clone git://git.code.sf.net/p/tempo/tempo
presto wget http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio-4.0.0.tar.gz
git clone git://github.com/scottransom/presto
网络方面的问题请自己想办法(ง •_•)ง
需要会的基本命令与操作
二、正式安装
再强调一遍,在配置安装的时候,没有load任何的Module。
如果在此之前有导入过任何的模块(用module list
查看已导入的模块),请全部卸载。
在正式安装之前,我建议把源码目录和安装目录分开,像下面这样的一个文件树是比较推荐的。
之后所有的指令都是基于下面这个文件结构来的。~ # 用户根目录
├── Data # 数据集存放目录
│ └── GBT_Lband_PSR.fil
├── Downloads # 源码目录
│ ├── cfitsio
│ ├── fftw
│ ├── pgplot
│ ├── presto
│ └── tempo
└── Program_Files # 安装目录
├── cfitsio
├── fftw
├── pgplot
├── presto
└── tempo
也就是说,需要在用户根目录下(~
)新建3个文件夹:Data
、Downloads
、Program_Files
相。
新建完之后,需要在安装目录里(Program_Files
)新建5个文件夹。
在上面这个文件目录下,需要添加的环境变量如下:(如果看不懂没关系,那就先跳到下面正式安装部分)
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/fftw/lib/" # 这里${HOME}是你用户的根目录
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/fftw/lib/pkgconfig"
export PATH="$PATH:${HOME}/Program_Files/fftw/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:${HOME}/Program_Files/fftw/include"
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:${HOME}/Program_Files/fftw/include"
export PGPLOT_DIR="${HOME}/Program_Files/pgplot/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/pgplot/" # 注意:没有lib的子文件夹
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/pgplot/lib/pkgconfig"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/tempo/lib/pkgconfig"
export TEMPO="${HOME}/Program_Files/tempo"
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/cfitsio/lib/pkgconfig"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/cfitsio/lib"
export PRESTO="${HOME}/Downloads/presto/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Downloads/presto/lib"
export PATH="$PATH:${HOME}/Downloads/presto/bin" # 注意,这条是在源码目录下!!!
export C_INCLUDE_PATH="$C_INCLUDE_PATH:${HOME}/Program_Files/presto/include"
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:${HOME}/Program_Files/presto/include"
注: 直接加在
~/.bashrc
里有风险,可以参考: bashrc改不改?
1.fftw安装
fftw.第1步:安装
进入fftw的源码根目录,然后依次执行如下命令:(如果不知道源码根目录在哪里,看看上面。)
./configure --enable-shared --enable-single --prefix="${HOME}/Program_Files/fftw"
make
make install
通常来说,第1个安装包的安装都是顺利的。
有几点需要说明:
- 此处用
make -j4
可能会报错。如果执行make报错,就执行一下make clean
,清理掉编译错误的文件之后再执行make
fftw.第2步:添加环境变量
加入环境变量
直接在终端里执行下面的指令,仅当前shell有效,退出或者重连之后就失效。
而我们需要环境变量一直存在,因此把下面的指令追加到~/.bashrc
文件末尾 note
然后再重新载入.bashrc
(重新载入需要在终端里执行source ~/.bashrc
)
具体来说,就是:
# 第1步,打开.bashrc
vim ~/.bashrc
# 第2步,把如下行加到.bashrc的末尾
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/fftw/lib/" # 这里${HOME}是你用户的根目录
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/fftw/lib/pkgconfig"
export PATH="$PATH:${HOME}/Program_Files/fftw/bin"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:${HOME}/Program_Files/fftw/include"
export C_INCLUDE_PATH="$C_INCLUDE_PATH:${HOME}/Program_Files/presto/include"
# 如果写在~/.bashrc里,记得source ~/.bashrc
# 第3步,重新载入.bashrc
source ~/.bashrc
2.pgplot的安装
pgplot.第1步:移动1个文件到安装目录
现在请切换到pgplot的源码根目录(~/Downloads/pgplot
)
执行下面的命令以备份相关文件
##### 如果想直接复制粘贴,请确保你当前的目录是pgplot的源码的根目录!
cp drivers.list ~/Program_Files/pgplot/drivers.list
pgplot.第2步:修改3个文件
用vim打开安装目录下~/Program_Files/pgplot
下面的drivers.list
文件,也就是执行vim drivers.list
,然后把下面这几行前面的!
去掉
# 去掉这几行前面的感叹号
GIDRIV 1 /GIF GIF-format file, landscape # line 19
GIDRIV 2 /VGIF GIF-format file, portrait # line 20
NUDRIV 0 /NULL Null device (no output) Std F77 # line 38
PSDRIV 1 /PS PostScript printers, monochrome, landscape Std F77 # line 44
PSDRIV 2 /VPS Postscript printers, monochrome, portrait Std F77 # line 45
PSDRIV 3 /CPS PostScript printers, color, landscape Std F77 # line 46
PSDRIV 4 /VCPS PostScript printers, color, portrait Std F77 # line 47
XWDRIV 1 /XWINDOW Workstations running X Window System C # line 71
XWDRIV 2 /XSERVE Persistent window on X Window System C # line 72
然后保存并退出——:wq
用vim打开~/Downloads/pgplot/src/grpckg1.inc
文件,然后对第29行作如下修改
# Replace " PARAMETER (GRIMAX = 8) " in line 29
# by " PARAMETER (GRIMAX = 32) "
:wq
用vim打开~/Downloads/pgplot/src/pgplot.inc
文件,然后对第7行作如下修改
# Replace " PARAMETER (PGMAXD=8) " in line 7
# by " PARAMETER (PGMAXD=32) "
:wq
pgplot.第3步:安装前的配置
现在请切换到pgplot的安装目录(~/Program_Files/pgplot
)
在安装目录运行位于源码目录里的makemake
,并执行2遍。
# 目录结构见本文开头
~/Downloads/pgplot/makemake ~/Downloads/pgplot linux g77_gcc
~/Downloads/pgplot/makemake ~/Downloads/pgplot linux g77_gcc
注:
上面的命令是可以正常执行的。不要看见
makemake
前面有一堆路径就觉得这个写的有问题。 只需要把对应文件的路径换成你自己的路径。如果报错说
Permission denied
,说明你的makemake
没有可执行权限。执行下面的指令以加上:如遇其它文件没有权限,类似处理。 chmod +x ~/Downloads/pgplot/makemake
执行完毕之后安装目录下会出现如下的文件:(如果你安装文件夹和我开头写的是一样的结构的话)
drivers.list grexec.f grpckg1.inc makefile pgplot.inc rgb.txt
然后更改makefile
文件的第25和第26行
# Replace "FCOMPL=g77" in line 25
# by "FCOMPL=gfortran"
#
# Replace "FFLAGC=-u -Wall -fPIC -O" in line 26
# by "FFLAGC=-ffixed-form -ffixed-line-length-none -u -Wall -fPIC -O"
pgplot.第4步,安装
# 在安装目录下执行
make
make cpg
如果make
报错,make clean
之后再运行一次试试。
注: 如果需要编译
pgplot.html
,需要更改~/Downloads/pgplot/makehtml
文件。只需要把第1行替换为这个:然后: #!/usr/bin/perl
# 在安装目录下执行 make pgplot.html
pgplot.第5步,添加环境变量
export PGPLOT_DIR="${HOME}/Program_Files/pgplot/" # 记得替换USER为自己的用户名
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/pgplot/" # 注意:没有lib的子文件夹
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/pgplot/lib/pkgconfig"
# 如果写在~/.bashrc里,记得source ~/.bashrc
注:
pgplot有一些demo可以运行。只需要切换到安装目录,运行
./pgdemo1
,弹出如下信息可说明pgplot正常安装Graphcs device/type (? to see list, default /Xserve): # 或 Graphcs device/type (? to see list, default /NULL):
3.Tempo安装
tempo.第1步:安装前的准备
现在请切换到Tempo的源码根目录(~/Downloads/tempo
)
可以尝试运行源码根目录下的prepare
,像这样:
./prepare # 一般无法正常运行
autoreconf --install
另外需要把./src/get_version_id.sh
加上执行权限,并把它的file format改成Unix。(用下面的dos2unix
,服务器上自带)
chmod +x ./src/get_version_id.sh
dos2unix ./src/get_version_id.sh
dos2unix ./configure.ac
tempo.第2步:正式安装
./configure --prefix="${HOME}/Program_Files/tempo"
make
make install
注:
如果之间那步没有把
configure.ac
转换成unix格式,configure之后会报错,此时重新运行configure是没有用的,需要按如下方法运行之后再继续 dos2unux ./configure.ac aclocal autoconf automake -a ./configure --prefix="${HOME}/Program_Files/tempo"
make
和make install
即可
tempo.第3步:添加环境
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/tempo/lib/pkgconfig"
export TEMPO="${HOME}/Program_Files/tempo"
# 如果写在~/.bashrc里,记得source ~/.bashrc
4.cfitsio安装
cfitsio.第1步:安装
现在请切换到cfitsio的源码根目录(~/Downloads/cfitsio
)
./configure --prefix="${HOME}/Program_Files/cfitsio"
make
make install
cfitsio.第2步:添加环境变量
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${HOME}/Program_Files/cfitsio/lib/pkgconfig"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Program_Files/cfitsio/lib"
# 如果写在~/.bashrc里,记得source ~/.bashrc
5.安装PRESTO
presto.第1步:添加安装用的环境变量
export PRESTO="${HOME}/Downloads/presto/" # 把USER替换为你的用户名
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/Downloads/presto/lib"
# 如果写在~/.bashrc里,记得source ~/.bashrc
presto.第2步:修改1个文件
现在请切换到presto下的src目录(~/Downloads/presto/src
)
打开./realfft.c
,编辑第70行,
# 改前
...
for (int fi = 0 ; fi < numfiles ; fi++) {
...
# 改后
...
int fi;
for (fi = 0 ; fi < numfiles ; fi++) {
...
presto.第3步:安装
保持在presto下的src目录(~/Downloads/presto/src
)
make makewisdom
make prep
make # 目前只能安装在源码目录下
# 下面这两行本来也是安装的步骤,但服务器没网就算了,不影响
cd $PRESTO
pip install .
presto.第4步:添加环境变量
export PATH="$PATH:${HOME}/Downloads/presto/bin" # 注意,这条是在源码目录下!!!
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:${HOME}/Program_Files/fftw/include"
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:${HOME}/Program_Files/presto/include"
# 如果写在~/.bashrc里,记得source ~/.bashrc
到目前为止,你应该正确安装了presto。下面我们进行一些验证。输入readfile --help
,应该有如下的输出
readfile: unknown option `--help'
[-page] [-byte] [-b] [-float] [-f] [-double] [-d] [-fcomplex] [-fc] [-dcomplex] [-dc] [-short] [-s] [-int] [-i] [-long] [-l] [-rzwcand] [-rzw] [-bincand] [-bin] [-position] [-pos] [-pkmb] [-bcpm] [-wapp] [-spigot] [-filterbank] [-psrfits] [-fortran] [-index [index]] [-nph nph] [--] file
Reads raw data from a binary file and displays it on stdout.
-page: Paginate the output like 'more'
-byte: Raw data in byte format
-b: Raw data in byte format
-float: Raw data in floating point format
-f: Raw data in floating point format
-double: Raw data in double precision format
-d: Raw data in double precision format
-fcomplex: Raw data in float-complex format
-fc: Raw data in float-complex format
-dcomplex: Raw data in double-complex format
-dc: Raw data in double-complex format
-short: Raw data in short format
-s: Raw data in short format
-int: Raw data in integer format
-i: Raw data in integer format
-long: Raw data in long format
-l: Raw data in long format
-rzwcand: Raw data in rzw search candidate format
-rzw: Raw data in rzw search candidate format
-bincand: Raw data in bin search candidate format
-bin: Raw data in bin search candidate format
-position: Raw data in position struct format
-pos: Raw data in position struct format
-pkmb: Raw data in Parkes Multibeam format
-bcpm: Raw data in BCPM format
-wapp: Raw data in WAPP format
-spigot: Raw data in Spigot Card format
-filterbank: Raw data in SIGPROC filterbank format
-psrfits: Raw data in PSRFITS format
-fortran: Raw data was written by a fortran program
-index: The range of objects to display
0...2 int values between -1 and oo
default: `0' ` -1'
-nph: 0th FFT bin amplitude (for 'RZW' data)
1 double value
default: `1.0'
file: Input data file name.
1 value
version: 12Mar10
如果有这些输出,就说明是成功安装了
三、跑数据集
跑数据集的第1步:预处理
在数据目录(~/Data/
)下执行如下指令
readfile ~/Data/GBT_Lband_PSR.fil
rfifind -time 1.0 -o Lband ~/Data/GBT_Lband_PSR.fil
prepdata -nobary -o ~/Data/Lband_topo_DM0.00 -dm 0.0 -mask ~/Data/Lband_rfifind.mask ~/Data/GBT_Lband_PSR.fil
跑数据集的第2步:写脚本
编写如下的脚本,注意保存的后缀需要是*.slurm
(可以取名为run.slurm
):
#!/bin/bash
#SBATCH -J presto
#SBATCH -p cpu-low
#SBATCH -N 2
#SBATCH -n 16
#SBATCH --ntasks-per-node=8
#SBATCH -t 5:00
#SBATCH -o run.out
#SBATCH -e run.err
module load intel/18.0.3.222
cd $PRESTO/tests/
mpirun -np 2 accelsearch -numharm 4 -zmax 0 "${HOME}/Data/Lband_topo_DM0.00.dat" -ncpus 8
然后,我们可以先在本地试试脚本能不能正常运行。在终端里输入如下:
bash ./run.slurm 1>run.out 2>run.err # 假设你保存的脚本叫run.slurm
如果run.err
大小为0b
,0K
,说明没有问题,那么就放心提交作业吧!
注:命令含义解释
1>run.out
表示把脚本的执行的正常输出写到run.out文件,尖括号左右不要有空格
2>run.err
表示把脚本的执行的错误输出写到run.err文件,尖括号左右不要有空格
跑数据集的第3步:提交
如果在上面你脚本里Lband_topo_DM0.00.dat
用的是绝对路径,那么在这一步你的slurm脚本就可以随便放。
在你放脚本的地方执行如下指令:
sbatch run.slurm # 提交作业脚本
[para_xxxxxxxx@ln04 ~]$ sbatch run.slurm
Submitted batch job xxxxxxxx # 仅表示成功提交
至于运行的结果,则需要在run.out
和run.err
里面看了。(对应你slurm脚本的#SBATCH -o run.out
和#SBATCH -e run.err
)
至于其它的问题,请自己解决吧,因为我也没有解决(笑