Einstein Toolkit学习笔记

1 如何运行
如何开始
最基本的入门指南
运行sim的各种命令
数据下载到本地
可视化
用slurm在HPC工作站上运行一个计算任务
一些参数的含义
关于登录PI的HPC计算资源
一些小细节的问题和解决
1. 如果在home文件夹下运行,有时候不成功,报错:
2. 如何查看ETK的当前版本
2 一些资源
1. 利用NRPyPlus(NRPy+)和EToolkit从头到尾计算出引力波的一个简介
2. 公式转代码的工具
3. WhiskyTHC 一个用ETK进行天体物理计算的code
3 学习资料
1. 一个比较全面的入门介绍
2. 张雪峰的报告
3. 两个入门介绍的文章
4 一些使用技巧(踩雷后的解决方法)
1. Error: job id is negative的解决办法
2 查看h5文件
10 一些杂乱的tips,待整理。。。
1. ETK 不需要做什么
2. ETK介绍
3. 是有一些自动产生代码的东西的
4. Cactus的两个主要组成部分
5. Einstein Toolkit workshop 2019
6. 然而2017年的这个workshop的效果是最清楚的
7. 这里介绍了如何用VisIt作图
8. 这个PPT介绍了各种可视化工具的比较
9. 这里有一个对cactus的tutorial
10. 如何增加一个test thorn用于测试
11. 一个关于ETK中一些主要的量的含义,以及出现在的thorn
12. McLachlan 应该是产生代码的一个核心Thorn
13. Advanced Carpet usage
cactus FAQ 可能是在编写thorns的时候会碰到的
14. 从Erik那儿得到的一些Tips
15. 奇怪的提交错误
16. 运行双中子星并合的命令
17. ViSit产生的png图片怎么变成pdf格式
18. 计算后的数据分析 kuibit
TOC

1 如何运行

如何开始

如果都安装好了,可以按照 https://nbviewer.jupyter.org/github/nds-org/jupyter-et/blob/master/CactusTutorial.ipynb 的实例,在命令行下运行:
$./simfactory/bin/sim create-run tov_ET --parfile=par/tov_ET.par --procs=2 --num-threads=1 --walltime=0:20:0
如果只有单核,会报错,把procs改为1即可。
Einstein Toolkit应该简称为ETK。

最基本的入门指南

https://nbviewer.jupyter.org/github/nds-org/jupyter-et/blob/master/CactusTutorial.ipynb

运行sim的各种命令

https://docs.einsteintoolkit.org/et-docs/Simulation_Factory_Advanced_Tutorial

数据下载到本地

可以用WinSCP,一个很好用的ftp下载工具。

可视化

用ViSit,具体见“ViSit使用笔记”条目。

用slurm在HPC工作站上运行一个计算任务

  1. module load slurm
  2. sinfo可以查看使用情况,squeue显示排队情况
  3. sbatch .sbatch 运行。 而.sbatch文件要按照语法来写,是一个布置给机器并行计算的批处理文件。
    如果要放到测试节点上(在PI的symmetry上实际上估计是相同的节点,但不同的权限--运行时间短),加个-p: sbatch -p debugq julia-manythreads.sbatch 其中debugq是sinfo中显示出来的。
    参考: https://perimeterinstitute.github.io/SymmetryDocs/

一些参数的含义

simfactory/bin/sim create-submit GW150914_24 --define N 24 --parfile ~/runs/devel/GW150914.rpar --procs 12 --walltime 24:00:00
在邮件列表里搜的,说明N是用来调节精细度的 "then ran with very low resolution (N=24 instead of N=28) this makes the simulation runs faster" http://lists.einsteintoolkit.org/pipermail/users/2018-October/006616.html

关于登录PI的HPC计算资源

在所内的话,就直接ssh user@symmetry 即可
在所外,要先 ssh yzou2@mars.perimeterinstitute.ca,然后再ssh symmetry
https://perimeterinstitute.github.io/SymmetryDocs/vnc 这里有介绍
但是向symmetry提交工作任务就不简单了。
可以按照上面介绍中的用slurm,按照slurm的语法。而EKT有自己的办法,文件都在:~/Cactus/repos/simfactory2/mdb/ 下面,四个文件夹,每个文件夹下面都要配置(如果不放服务器上,EKT是可以自动配置的,比如
在Cactus文件夹下:
./simfactory/bin/sim submit test44 --parfile=simfactory/etc/parfiles/empty.par --queue=debugq --walltime=0:10:0 --procs=160 --num-threads=1
~/Cactus/simfactory/bin/sim submit testGW2 --parfile=~/Cactus/par/GW150914/GW150914.rpar --define N=24 --queue=debugq --walltime=10:10:0 --procs=40 --num-threads=1
在当前文件夹下会有 slurm-64289.out这样的输出文件,但里边什么也没有。
主要输出文件不在/home/yzou2/simulations下面了,而在/gpfs/yzou2/simulations/下面。

一个怪事:

yzou2@mn001:~$ ~/Cactus/simfactory/bin/sim submit test47 --parfile=~/Cactus/simfactory/etc/parfiles/empty.par --queue=debugq --walltime=0:10:0 --procs=160 --num-threads=1                                                                      Warning: Unable to determine CACTUS_PATH, using /home/yzou2/Cactus/repos/simfactory2 instead                            Warning: Current Working directory does not match Cactus sourcetree, changing to /home/yzou2/Cactus/repos/simfactory2   Warning: simulation "test47" does not exist or is not readable                                                          Parameter file: /home/yzou2/Cactus/simfactory/etc/parfiles/empty.par                                                    Error: configuration 'sim', which has path '/home/yzou2/Cactus/repos/simfactory2/configs/sim' does not exist or is not readable                                                                                                                 Aborting Simfactory.                                                                                                    yzou2@mn001:~$ cd Cactus                                                                                                yzou2@mn001:~/Cactus$ ~/Cactus/simfactory/bin/sim submit test47 --parfile=~/Cactus/simfactory/etc/parfiles/empty.par --queue=debugq --walltime=0:10:0 --procs=160 --num-threads=1                                                               Warning: simulation "test47" does not exist or is not readable                                                          Parameter file: /home/yzou2/Cactus/simfactory/etc/parfiles/empty.par                                                    Skeleton Created                                                                                                        Job directory: "/gpfs/yzou2/simulations/test47"                                                                         Executable: "/home/yzou2/Cactus/exe/cactus_sim"                                                                         Option list: "/gpfs/yzou2/simulations/test47/SIMFACTORY/cfg/OptionList"                                                 Submit script: "/gpfs/yzou2/simulations/test47/SIMFACTORY/run/SubmitScript"                                             Run script: "/gpfs/yzou2/simulations/test47/SIMFACTORY/run/RunScript"                                                   Parameter file: "/gpfs/yzou2/simulations/test47/SIMFACTORY/par/empty.par"                                               Assigned restart id: 0                                                                                                  Executing submit command: sbatch /gpfs/yzou2/simulations/test47/output-0000/SIMFACTORY/SubmitScript && sleep 1          Submit finished, job id is 64324  

图片:

二者的唯一区别是我运行的目录不一样,一个是在~/下运行,一个是在~/Cactus下,而前者就不行。
注意SubmitScript和RunScript这两个文件是从 Cactus/configs/sim/中来的,而他们又是从~/Cactus/repos/simfactory2/mdb/下面runscripts 和submitscripts 两个文件下直接拷过来的(改了名字):symmetry.run 和 symmetry.sub
而这两个文件本来ETK没有,是从Erik那儿拷过来的。好消息是一般运行的话,这些不用考虑,自动产生。另外那里边有一大堆预制文件,甚至包括以前PI的mars,这个服务器的文件,因为Erik也是ETK的开发者之一。
四个相关的文件:




symmetry.cfg 最后要加一行 GSL_DIR = BUILD

后来又出现了一个问题,symmetry罢工了,再恢复之后,就无法提交ETK的job了,总是显示错误信息:

Warning: submit either failed or could not determine job id, output: 
 Warning: sbatch: error: Batch job submission failed: Invalid account or account/partition combination specified     

需要手动往symmetry.run里边加一个用户名: #SBATCH -A yzou2 然后再拷到Cactus/configs/sim/ 就解决这个问题了,但这样的配置文件给别人用,人家就需要相应地改成自己的用户名了。

第二次运行(在symmetry的一天的期限到了就自动停止了,需要手动重新submit)的时候,就只用简单地: ~/Cactus/simfactory/bin/sim submit testGW2 (其中testGW2是之前的那个job的名字,也是输出文件存放的文件夹的名字)

一些小细节的问题和解决

1. 如果在home文件夹下运行,有时候不成功,报错:

zouyc@YCZou:~$ ./Cactus/simfactory/bin/sim create-submit testGW2 --parfile ./Cactus/par/GW150914/GW150914.rpar --define N=22 --walltime 00:30:00                                         Warning: Unable to determine CACTUS_PATH, using /home/zouyc/Cactus/repos/simfactory2 instead                                                                                             Warning: Current Working directory does not match Cactus sourcetree, changing to /home/zouyc/Cactus/repos/simfactory2                                                                    Simulation name: testGW2                                                                                                                                                                 Parameter file: /home/zouyc/Cactus/par/GW150914/GW150914.rpar                                                                                                                            Error: configuration 'sim', which has path '/home/zouyc/Cactus/repos/simfactory2/configs/sim' does not exist or is not readable                                                          Aborting Simfactory.   

需要到Cactus文件夹下运行才可以,只需要 cd Cactus,重新运行就可以了。

2. 如何查看ETK的当前版本

问Erik的
到某个thorn的source文件夹下,git status
比如:

yzou2@mn001:~/ETK/Cactus/repos/flesh$ git status 
 On branch ET_2019_10                                                                                                                                                                     Your branch is up to date with 'origin/ET_2019_10'. 
 nothing to commit, working tree clean    

2 一些资源

1. 利用NRPyPlus(NRPy+)和EToolkit从头到尾计算出引力波的一个简介

https://nbviewer.jupyter.org/github/zachetienne/nrpytutorial/blob/master/NRPyPlus_Tutorial.ipynb
这个是ipynb格式的,里边的链接也有是可以直接运行的。

2. 公式转代码的工具

2.1 Kranc 用mathematica把公式变成代码
http://kranccode.org/doc/
2.2 NRPy+
Python下不依赖于Mathematica的转代码工具(见下面tips)
https://math.wvu.edu/~zetienne/SENR/nrpy

3. WhiskyTHC 一个用ETK进行天体物理计算的code

https://www.astro.princeton.edu/~dradice/whiskythc.html

3 学习资料

1. 一个比较全面的入门介绍


2013Hansen-Intro-ETK.pdf 2013年韩国一个暑期班的报告 见附件

2. 张雪峰的报告


3. 两个入门介绍的文章


这个更长,有实例,并且包含在ETK的文档中,叫repos/seinsteinexamples

这个则有对参数的详细说明,也包含了部分前面的例子。
两个结合着看。
2020年11月,又有一个介绍性的文章: arXiv:2011.13314 (cross-list from gr-qc) [pdf, other]
The Einstein Toolkit: A Student's Guide

4 一些使用技巧(踩雷后的解决方法)

1. Error: job id is negative的解决办法

这个error是由“simfactory/bin/sim create-run”引起的,然后想从断点继续运行而输入“simfactory/bin/sim run”或者“simfactory/bin/sim submit”都会出现这个错误。用下面的命令可解决
simfactory/bin/sim cleanup
来源:http://lists.einsteintoolkit.org/pipermail/users/2018-September/006528.html
原因是creat-run不产生job id,分配的id=0, 再运行的时候从0开始减一变成了负的。
更靠谱的解决办法是不用create-run,而是直接submit,甚至第一次都不需要create-submit,程序也会自动调用 create-submit

2 查看h5文件

h5ls以及HDF5的系列工具
https://support.hdfgroup.org/HDF5/Tutor/cmdtoolview.html

10 一些杂乱的tips,待整理。。。

1. ETK 不需要做什么

2. ETK介绍


基本上4:30的时候开始介绍。
https://www.youtube.com/watch?v=jqgEaUjl23I 2017 North American Einstein Toolkit School - Day 1

3. 是有一些自动产生代码的东西的




NRPy+也是一个产生代码的code
The NRPy+ Tutorial: An Introduction to Python-Based Code Generation for Numerical Relativity... and Beyond!

4. Cactus的两个主要组成部分

5. Einstein Toolkit workshop 2019

https://ccrg.rit.edu/content/events/2019-06-17/north-american-einstein-toolkit-workshop-2019

6. 然而2017年的这个workshop的效果是最清楚的

http://www.ncsa.illinois.edu/Conferences/ETK17/program.html#school
见youtube,2019年的虽然最新,当然里边很多PPT可看,不过录像效果很差。

7. 这里介绍了如何用VisIt作图

https://docs.einsteintoolkit.org/et-docs/GW150914_VisIt_Tutorial

8. 这个PPT介绍了各种可视化工具的比较

Post-Processing Cactus Data


还有各种文件表示什么含义的总结

不过他主要推荐的是PostCactus Framework这个Python工具集。

9. 这里有一个对cactus的tutorial

https://github.com/stevenrbrandt/CactusTutorial
介绍怎么创建一个thorn等

10. 如何增加一个test thorn用于测试

https://docs.einsteintoolkit.org/et-docs/Adding_a_test_case

11. 一个关于ETK中一些主要的量的含义,以及出现在的thorn

12. McLachlan 应该是产生代码的一个核心Thorn


13. Advanced Carpet usage


cactus FAQ 可能是在编写thorns的时候会碰到的

http://cactuscode.org/documentation/faq.php

14. 从Erik那儿得到的一些Tips

2019.8.8
今天向Erik Schnetter问了很多问题,一些tips总结一下

  1. Thorn的guide http://einsteintoolkit.org/documentation/ThornGuide.php
    也可以在源文件的ccl上看,特别是parm.ccl
  2. 关于ADM和BSSN的参数,可以参考这里
    https://arxiv.org/abs/gr-qc/0003071
    https://arxiv.org/abs/gr-qc/0206072
    里边有数学上的方法,也有关于参数的解释,不过和目前用的参数有所区别。
  3. 误差问题,如何检查运行的误差或者收敛性。一个是看Constraints是否符合的好,哈密顿和动量,比如H.xy.h5。另一个是采取不同的步长,看结果是不是偏差不大。
  4. 如果进行了几次run,会产生几个不同的文件夹存放产生的结果的,只能手动把放在不同文件夹下的文件combine在一起,比如hdf5的文件,就有专门的命令来把它们组在一起。
  5. 关于运行的时间,即在par文件中写到什么时候结束,目前只能是手动,如果已知时间,那就写上去。如果不知道,那就写个大点的时间,然后每天去看output,看看运行到了什么程度,并合完了,那就手动把程序结束。
  6. 可以用less来看一个文本文件嘛,我每次用vi,不方便,还有可能改掉内容。
  7. Kranc通过Mathematica产生McLachlan的Thorn(一般都是ML开头的,比如ML_BSSN),但如果我不想修改引力理论啥的,就不用管Kranc了。
  8. .rpar和.par的区别: .par是可以用sim直接调用的参数文件;.rpar是让Python读的,Python通过这个文件处理出一个.par文件供sim调用(但不需要人为操作).

15. 奇怪的提交错误

~/Cactus/simfactory/bin/sim submit testGW5 --parfile=~/Cactus/par/GW150914/GW150914.rpar --define N=24 --queue=debugq --walltime=00:10:0 --procs=40 --num-threads=1

./simfactory/bin/sim submit testGW5 --parfile=./par/GW150914/GW150914.rpar --queue=defq --define N=24 --walltime=00:10:00 --procs=40 --num-threads=1
有什么区别?
为什么前面一个就能运行,后一个就不可以?!
后一个给出错误:Warning: sbatch: error: Batch job submission failed: Requested time limit is invalid (missing or exceeds some limit)
查了一下后一个的log文件,还真是把walltime变成168:00:00了,怎么就变成这样了呢?

16. 运行双中子星并合的命令

文件都在这上面 https://einsteintoolkit.org/gallery/bns/index.html
$ ./simfactory/bin/sim submit nsns5 --parfile ./par/NSNS-HMNS/nsnstohmns.par --queue defq --walltime 24:00:00 --procs 120 --num-threads 1
要注意的par文件里包含了那个初始文件,得修改这个par文件,用绝对路径名,否则ETK找不到文件,会运行十几秒后停止,

修改为这个即可:

注意前面的/home/什么的都不能省,不能用~代替,多半是因为在symmetry上,运行的目录不在/home下面。

17. ViSit产生的png图片怎么变成pdf格式

通过打印不好使,不好调纸张的大小。xnview打开,另存为pdf即可。

18. 计算后的数据分析 kuibit

https://sbozzolo.github.io/kuibit/





附件列表

     

    posted @ 2022-06-27 11:24  zouyc  阅读(1124)  评论(0编辑  收藏  举报