计算化学公社

 找回密码 Forget password
 注册 Register
Views: 1555|回复 Reply: 7
打印 Print 上一主题 Last thread 下一主题 Next thread

[辅助/分析程序] Gaussian自动并行提交脚本

[复制链接 Copy URL]

9

帖子

1

威望

668

eV
积分
697

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
Gaussian自动并行提交脚本

社长的博文里面已提供许多实用的脚本,使用Gaussian时的几个实用脚本和命令 - 思想家公社的门口:量子化学·分子模拟·二次元 (sobereva.com),如果未看这篇博文,优先看!
课题组服务器是多核单机,未连接一起和安装slurm系统,无法并行排队提交,但自己有这个需求,所以写了shell脚本来满足
代码逻辑是使用wait函数等待线程执行,线程间通讯较麻烦,使用临时文件作为管道传输数据的笨办法。会产生count.tmp,脚本运行中请勿删除!
代码中借鉴社长博文中的代码,在此感谢!

使用方法:
1、MAXNUM:控制并行作业的数量;ONLY_PARENT:设为1仅执行当前目录下的gjf文件(默认),0则执行当前及子文件夹下的gjf文件
  1. MAXNUM=4 # how many tasks you want to submit at once
  2. ONLY_PARENT=1 # Set to 1 to only traverse the current folder;# set to 0 to include subfolders
复制代码
2、增加运行权限,运行shell脚本
  1. chmod +x runparallel
  2. ./runparallel &
复制代码
3、运行途中会提示哪个文件正在进行,哪些已经结束,可以随时监测

注:如果有bug可以反馈

------------------------------------------------------------------------------2025.6.9更新至v2.1(跳过!!!)----------------------------------------------------------------
实验室同学使用时,总是会超出服务器的总核数,导致计算效率下降。
主要原因:
1、批量任务中核数不一致,原本32核/任务,128可以并行4个任务,结果有个任务是64核,4个任务就超过128;
2、在多个文件夹内同时提交脚本,例如a文件夹提交2个并行任务,b文件夹提交3个并行任务,总任务为5个超过原本的4个任务,导致总核数。

修改点:
1、增加判断当前核数是否超过计算总核数(以前是任务数控制,现在增加核数控制,超过总核数就不提交了);
2、增加判断下一个提交的文件与当前核数相加是否超过计算总核数。值得注意的是:当前核数读取关键词是“%nproc=16”或“%nprocshared=16”,不区分大小写;如果未写核数关键词,返回默认核数,可以通过修改DEFAULT_CORES变量来决定每个任务的核数(即使增加核数控制,但无法判断下一个任务提交后是否超过总核数,又增加下一任务提交后超过总核数的判断)

---------------------------------------------------------------------------------2025.8.17更新至v3.1/v10.2-----------------------------------------------------------------------
参加12届中级班,发现社长在讲义里面提到我的贴子,虽然提到很多人的帖子,但还是小激动了一下,因此有了更新脚本的想法。
借鉴培训中tsmonitor.sh脚本的设置,和在highllight帖子里发现推送脚本(计算任务开始结束消息推送脚本 - 编程、软件开发 (Developement) - 计算化学公社),结合之后更新了脚本。
最终无意发现自己的脚本可以当作简易的slurm任务管理器,可以做到一直提交任务,按照要求等候排队并行计算,又激动了一下

使用说明:v10.2是带有命令行解释器,v3.1是没有的,都可以直接修改脚本内部代码执行,则v10.2可以通过命令修改内部参数
1、设置脚本
将脚本放置在/home/yourname/Script目录中;
修改.bashrc中的内容,将这段代码{ alias rg16="/home/yourname/Scripts/runparallel_v10.2_release.sh" }放在最后;
最后在/home/yourname目录下执行source ./bashrc,也可以直接退出重新进

2、
参数解释
  • MAX_NUM=4                # 最大并行任务数(可根据机器性能调整)
  • ONLY_PARENT=1          # 1=仅当前目录;0=递归包含子目录
  • DEFAULT_CORES=64     # 当 gjf 文件未指定 %nproc或%nprocshared=核数,的默认 CPU 核数
  • LEFT_CORES=16           # 预留的 CPU 核数,防止系统过载(空闲核数 ≥ LEFT_CORES)
  • #------ 若把 ENABLE_NOTIFICATION 设为 1,请在 221/226 行替换你的 device_key 和服务器信息 ------#
  • ENABLE_NOTIFICATION=0  # 0=关闭任务完成通知;1=开启通知,默认关闭


3、代码执行(并行任务可以设置大点MAXNUM=16,免得每次设置并行数目
  • rg16 &                                            # 执行当前目录下所有gjf文件,为了方便,默认是当前文件夹
  • rg16 -d /home/yourname/g16jobs &  # 执行/home/yourname/g16jobs目录下所有gjf文件
  • rg16 -f 1.gjf 2.gjf 3.gjf &                  # 执行当前目录下1/2/3.gjf文件,用空格隔开
  • nohup rg16 &                                  # 即使意外退出远程连接,脚本也能继续运行

最后,如果有人用并提意见会继续更新,不然以后不会再更新了,功能也差不多了
申明:我这里是适配了iphone手机的通知,仅仅是因为自己用的是iphone,如果安卓,可以去看上面提到的highllight帖子中设置,所以我给的脚本中默认是关闭通知!!!

runparallel.sh

1.5 KB, 下载次数 Times of downloads: 65

1.0版本

runparallel_v10.2_release.sh

10.76 KB, 下载次数 Times of downloads: 0

10.2版本

runparallel_v3.1_release.sh

8.23 KB, 下载次数 Times of downloads: 0

3.1版本

runparallel_v2.1.sh

3.2 KB, 下载次数 Times of downloads: 4

2.1版本

评分 Rate

参与人数
Participants 2
威望 +1 eV +1 收起 理由
Reason
hcy002 + 1
sobereva + 1

查看全部评分 View all ratings

9

帖子

1

威望

668

eV
积分
697

Level 4 (黑子)

8#
 楼主 Author| 发表于 Post on yesterday 20:31 | 只看该作者 Only view this author
参加12届中级班,发现社长在讲义里面提到我的贴子,小激动一下,因此最后再更新一次,自己顶一下

9

帖子

1

威望

668

eV
积分
697

Level 4 (黑子)

7#
 楼主 Author| 发表于 Post on 2025-4-10 15:45:42 | 只看该作者 Only view this author
穆易i 发表于 2025-3-31 18:38
你好,这个脚本提交任务之后推出xshell还会继续执行嘛

没试过,不放心的话可以使用nohup ./runparallel & 即可

2

帖子

0

威望

81

eV
积分
83

Level 2 能力者

6#
发表于 Post on 2025-3-31 18:38:09 | 只看该作者 Only view this author
你好,这个脚本提交任务之后推出xshell还会继续执行嘛

9

帖子

1

威望

668

eV
积分
697

Level 4 (黑子)

5#
 楼主 Author| 发表于 Post on 2025-3-17 19:34:07 | 只看该作者 Only view this author
akakcolin 发表于 2025-3-17 16:36
并行提交任务 用gnu parallel 很方便的

好的,谢谢建议,我去学习一下

9

帖子

1

威望

668

eV
积分
697

Level 4 (黑子)

4#
 楼主 Author| 发表于 Post on 2025-3-17 19:33:37 | 只看该作者 Only view this author
Gaussian-Caio 发表于 2025-3-17 17:01
建议安装slurm队列系统 还能排队呢

实验室的服务器,没有统一节点管理,再加上自己没有能力去管理,写个脚本就很方便了

22

帖子

0

威望

322

eV
积分
344

Level 3 能力者

3#
发表于 Post on 2025-3-17 17:01:22 | 只看该作者 Only view this author
建议安装slurm队列系统 还能排队呢

32

帖子

1

威望

1604

eV
积分
1656

Level 5 (御坂)

2#
发表于 Post on 2025-3-17 16:36:57 | 只看该作者 Only view this author
并行提交任务 用gnu parallel 很方便的

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-18 03:29 , Processed in 0.227505 second(s), 26 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list