计算化学公社

标题: Gaussian自动并行提交脚本 [打印本页]

作者
Author:
xiongbaobao    时间: 2025-3-17 13:23
标题: Gaussian自动并行提交脚本
本帖最后由 xiongbaobao 于 2025-6-9 19:17 编辑

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变量来决定每个任务的核数(即使增加核数控制,但无法判断下一个任务提交后是否超过总核数,又增加下一任务提交后超过总核数的判断)


作者
Author:
akakcolin    时间: 2025-3-17 16:36
并行提交任务 用gnu parallel 很方便的
作者
Author:
Gaussian-Caio    时间: 2025-3-17 17:01
建议安装slurm队列系统 还能排队呢
作者
Author:
xiongbaobao    时间: 2025-3-17 19:33
Gaussian-Caio 发表于 2025-3-17 17:01
建议安装slurm队列系统 还能排队呢

实验室的服务器,没有统一节点管理,再加上自己没有能力去管理,写个脚本就很方便了
作者
Author:
xiongbaobao    时间: 2025-3-17 19:34
akakcolin 发表于 2025-3-17 16:36
并行提交任务 用gnu parallel 很方便的

好的,谢谢建议,我去学习一下
作者
Author:
穆易i    时间: 2025-3-31 18:38
你好,这个脚本提交任务之后推出xshell还会继续执行嘛
作者
Author:
xiongbaobao    时间: 2025-4-10 15:45
穆易i 发表于 2025-3-31 18:38
你好,这个脚本提交任务之后推出xshell还会继续执行嘛

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




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3