导言
- 硬件:个人电脑(i5-8300H,32G,1050TI),学校的超级计算机,研究室的工作站。
- 资料来源:哔哩哔哩/YouTube,SegmentFault
应用方向偏物理学背景的数据分析,但是一切都是0基础开始的。Python基础入门我是通过在线学习进行的:https://vitu.ai/
在超级计算机上配置meep
设备:JAIST 超级计算机
因为要做一些FDTD/电磁学仿真,但是用个人PC又很蛋疼,所以就选择在超算上搭一个meep的仿真环境,这样会非常省时间。我所参考的是MEEP官方文档https://meep.readthedocs.io/en/latest/Installation/
miniconda 的安装
在自己的目录下建立一个python文件夹,学校超算已经预装了python3的环境,所以只要照着官方文档来安装就好了。
1 | wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh |
下载miniconda的包,是python3版本的。然后
1 | bash miniconda.sh -b -p <desired_prefix> |
注意这里的
之后
1 | export PATH=<desired_prefix>/bin:$PATH |
会报错
1 | export: command not found |
难道我的SHELL有问题??所以先查看SHELL信息
1 | echo $SHELL |
返回
1 | /bin/tcsh |
原来是tcsh不是bash!!怪不得报错。在这种情况下,直接回到本人账户目录下,手动添加path信息到.cshrc文件里就行了
1 | vim ~/.cshrc |
但是我多次测试之后还是无法执行,可能是因为账户权限限制导致(另外学校超算的SHELL为什么是tcsh而不是bash啊orz),就只能手动用setenv命令执行了
1 | setenv PATH "<desired_prefix>/bin" |
之后就成功了,缺点是估计下次使用conda命令时要重新手动执行一下这个命令。然后创建一个名字为mp的环境,在里面安装meep。这里的mp可以是任意名字的
1 | conda create -n mp -c chogan -c conda-forge pymeep |
然后就是漫长的安装过程了。安装好之后突然跳出这么一个错误:
1 | Exception('No compatible shell found!') |
没有管,继续
1 | conda activate mp |
结果报错了!提示用conda init来指定shell。
看来是SHELL的选择问题,只能手动来了,为了方便,我选择tcsh,所以输入
1 | conda init tcsh |
然后激活mp这个环境
1 | conda activate mp |
没有报错,并且目录前显示(mp),说明激活成功!!之后就应该可以使用了,但是为了方便使用,直接装一个Jupyter比较好,这里我也是参考官方的文档https://jupyter.org/install
在这个miniconda的目录下执行:
1 | conda install -c conda-forge jupyterlab |
之后就是漫长的安装与等待,有时会提示让升级conda的版本,这个是可以忽略的jupyterlab是jupyter notebook的下一代产品(替代品),因此我也就不安装jupyter notebook了。虽然也可以用pip命令来安装,但是要配置PATH太过复杂了所以就用conda命令了。在安装完之后,执行:
1 | jupyter lab |
就会跳出一个浏览器窗口,在里面可以使用jupyter lab了。
但是,在使用时发现找不到包!!可是conda list是有包的!
于是
1 | conda search pymeep |
返回
1 | Loading channels: done |
解决方法是配置一下conda,输入
1 | conda config --append channels conda-forge |
这个时候
1 | python -c 'import meep' |
就不会报错了,说明总体上是安装成功了,且能运行。但是可能会有其他问题,如
1 | AttributeError: module 'meep' has no attribute 'Vector3' |
但是我用同样的方法在虚拟机上安装,跑同样的代码就没有出现这个问题。很可能是超算上python版本的问题。不过总体上这个安装方法是正确的,跑一些简单代码还是可以的。至于一些错误的解决方法之后会更新。
不过终究还是要用的,所以我尝试在工作站(DELL PowerEdge T620)上通过安装Linux for Windows 然后用上述方法进行安装,毕竟这个工作站的配置也不算低了,勉强能用。虽然因为不知名原因IEER1的问题一直解决不了(即使毫无大碍)。
关于WSL的安装与设置方法我是参考这里来弄的:https://zhuanlan.zhihu.com/p/61542198
开启Ubuntu之后先对vim进行美化,毕竟是要给老板展示装逼用的….具体的就不说了,代码如下:
1 | mkdir .vim |
打开vim之后添加如下代码,然后:wq退出
1 | colorscheme molokai |
之后创建一个meep文件夹,然后安装miniconda,由于这里的shell是默认bash的,因此直接copy很酸爽。命令依次如下:
1 | mkdir meep |
之后就是安装meep的步骤了,和上述方法也是完全一样的。命令依次如下:
1 | conda create -n mp -c chogan -c conda-forge pymeep //创建名为mp的虚拟环境以安装pymeep包 |
之后我在该环境下安装jupyterlab
1 | conda install -c conda-forge jupyterlab |
但是在打开jupyterlab的时候出现报错
1 | Running as root is not recommended. Use --allow-root to bypass. |
解决方法是:
1 | jupyter notebook --generate-config --allow-root |
然后vim生成的配置文件,之后
1 | #c.NotebookApp.allow_root = False //去掉#,并修改成True即可解决root权限运行的问题 |
为了啊wsl当中合理使用不报错,最好是使用这个命令然后手动复制地址到浏览器!
1 | jupyter-notebook --no-browser |
但是配置之后,meep还是无法正常使用orz…这里做一个统计,在超算,个人电脑的虚拟机上用上述方法安装,都是成功并且能跑一些简单代码的。而在工作站wsl上是不成功的…我放弃了…
但是!!!!在我重新创建了一个虚拟环境之后,所有指令又都能用了!!!一切又都正常了!!!!真是搞不懂啊!!!但好歹是成功了!!
ORCA的并行计算脚本
这个脚本是我基于JAIST官网的教程在Gaussian并行计算脚本的基础上改的
1 | #!/bin/csh |
注意USER_ID是用户目录的用户名,ORCA文件的输入与输出格式也要规范!ORCA的计算最好是32核-64核,但是每个核分的内存要大一点,最好3GB/Core!!
Gaussian中使用混合(赝势)基组的输入格式问题
这个问题在思想家公社中有详细说明过,原文链接:http://sobereva.com/60
但是,在实践当中会有一个容易出错的地方,就是“空格(=空一行)”在格式中的重要关系,在重金属离子配合物的计算体系下这可能会是重要问题!!以下用PBE0泛函混合赝势基组做演示,分子是一个含钆和银的有机配合物:
1 | %nprocshared=128 |
综上所述,不难看出常规正确格式可以总结为:
1 | 计算信息(CPU核数,内存,输出路径) |
也就是说,每个元素的赝势信息部分是不需要加空格(空行)的!不然会导致后来的赝势信息无法被读取,从而计算出错!!
超级计算机上使用MPI调用Gaussian做并行计算的脚本
学校超算是128核的双路CPU(64×2)节点。默认是分16核的,以及会给一个写好的32核的脚本。这里我展示一下单节点计算和多节点并行计算的CSH脚本,是自己调试的。
关于PBS设置,基本格式是:
1 | #PBS -l select=<节点数>:ncpus=<每节点核数>:mpiprocs=<每个节点进程数> |
如果选择单个节点跑满128核并行计算,脚本是这样的:
1 | #!/bin/csh |
如果是多个节点并行计算,比如单节点64核,直接2节点并行跑64核,脚本是这样的:
1 | #!/bin/csh |
基于我个人的测试,单节点128核+128进程,单节点128核+64进程,单节点32核+32进程,对于同一个隐式水环境中柠檬酸钠的结构优化+频率计算的问题,耗时如下:
1 | select=1:ncpus=128:mpiprocs=128 |
1 | select=1:ncpus=128:mpiprocs=64 |
1 | select=1:ncpus=32:mpiprocs=32 |
比较Elapsed time,可见最优设置是128核+64进程。实际运行当中128核时差不多40分钟,而32核时是52分钟左右,当体系更复杂一些,这样的耗时差距也会更大!
适用于def2-tzvpd基组的稀土元素的弥散函数
实际上就是所谓def2-tzvpd中的“d”,当然本文中的参考文献也放出了其他def2基组关于镧系元素的弥散函数,虽然通常的计算完全用不到就是了。另外原则是相似基组的弥散函数是可以“借用”的。
具体如下
La
1 | La 0 |
Ce
1 | Ce 0 |
Pr
1 | Pr 0 |
Nd
1 | Nd 0 |
Pm
1 | Pm 0 |
Sm
1 | Sm 0 |
Eu,def2-TZV+def2-P(1g)=def2-TZVP
1 | Eu 0 |
Gd
1 | GD 0 |
Tb
1 | Tb 0 |
Dy
1 | Dy 0 |
Ho
1 | Ho 0 |
Er
1 | Er 0 |
Tm
1 | Tm 0 |
Yb,def2-TZV+def2-P(1g)=def2-TZVP
1 | Yb 0 |
Lu,def2-TZV+def2-P(1g)=def2-TZVP
1 | Lu 0 |
另外关于CCDC数据库中的晶体数据,我最近遇到了使用数字编号搜不到之前下载的结构数据。问了一下搞晶体的同学说要用审核之后的6位字母编号才能搜索到orz
- 本文链接:https://www.northarea.tech/2024/11/27/0x004/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
所以如果是重要的评论,建议跳转 GitHub Issues 发表。
若没有本文 Issue,您可以使用 Comment 模版新建。
GitHub Issues