计算化学公社

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

[Gaussian/gview] 求助slurm一键提交批量Gaussian任务的实现

[复制链接 Copy URL]

19

帖子

0

威望

977

eV
积分
996

Level 4 (黑子)

请教各位大神,小菜鸟最近在做计算,使用的省内超算中心,作业调度系统使用的是slurm软件,由于一次提交计算任务很多,需要同时新建好多个sh作业脚本,然后一个一个提交,感觉有点麻烦,能不能请各位大神,在原有的脚本基础上,做出修改,可以一次提交N多个到队列,同时计算,不用一个一个的提交。提交任务命令是sbatch 1.sh

1.sh

228 Bytes, 下载次数 Times of downloads: 18

19

帖子

0

威望

977

eV
积分
996

Level 4 (黑子)

6#
 楼主 Author| 发表于 Post on 2023-11-4 10:58:11 | 只看该作者 Only view this author
snljty2 发表于 2023-11-3 09:35
给你个最小修改版本的
文件开头所有#开头的行后面,加上这样一句

大哥,按照你的提示,我已经修改了脚本,并且提交了命令,但是发现所有的任务的都提交到同一个节点,而不是不同的节点,这是怎么回事呀

353

帖子

1

威望

1975

eV
积分
2348

Level 5 (御坂)

5#
发表于 Post on 2023-11-3 09:35:53 | 只看该作者 Only view this author
给你个最小修改版本的
文件开头所有#开头的行后面,加上这样一句
  1. jobname=$1
复制代码

然后
  1. dos2unix 1.gjf
  2. g16 1.gjf
复制代码

改成
  1. dos2unix $1
  2. g16 $1
复制代码

保存,把这个脚本放到一个路径好找的目录比如~/scripts/里,名字叫sub_g16.sh。之后比如你想算~/folder1/job1.gjf,就用
  1. sbatch ~/script/sub_g16.sh ~/folder1/job1.gjf
复制代码
把文件名作为第一个参数传给脚本就行。批量处理示例如下,假设你有如下目录结构的4个文件要批量处理,root_folder在~下
root_folder
├── sub_folder1
│   ├── job1_1.gjf
│   └── job1_2.gjf
└── sub_folder2
    ├── job2_1.gjf
    └── job2_2.gjf
那只需要如此提交
  1. cd ~/root_folder
  2. for i in $(ls -d *); do
  3.     cd $i
  4.     for j in *.gjf; do
  5.         sbatch ~/script/sub_g16.sh $j
  6.     done
  7.     cd ..
  8. done
复制代码

其实都是最最基本的Linux命令行常识,随便搜一下就有一大堆。

1万

帖子

0

威望

7400

eV
积分
18164

Level 6 (一方通行)

4#
发表于 Post on 2023-11-3 02:54:40 | 只看该作者 Only view this author
量化小王子 发表于 2023-11-2 17:27
谢谢你的意见,但这个功能需要怎么实现呢?能不能给个具体的操作步骤呀

for循环怎么写,任何讲bash的线上教程都会讲
sed命令怎么写也是一搜就有一大堆教程的
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

19

帖子

0

威望

977

eV
积分
996

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2023-11-3 00:27:38 | 只看该作者 Only view this author
wzkchem5 发表于 2023-11-3 00:20
我觉得比较好的方法不是写一个作业脚本然后用这个脚本提交很多个高斯任务,而是写一个脚本自动产生很多作业 ...

谢谢你的意见,但这个功能需要怎么实现呢?能不能给个具体的操作步骤呀

1万

帖子

0

威望

7400

eV
积分
18164

Level 6 (一方通行)

2#
发表于 Post on 2023-11-3 00:20:46 | 只看该作者 Only view this author
我觉得比较好的方法不是写一个作业脚本然后用这个脚本提交很多个高斯任务,而是写一个脚本自动产生很多作业脚本、每个作业脚本只提交一个高斯任务,然后批量调用sbatch提交这些作业脚本。
自动批量产生作业脚本可以用for循环加sed解决,自动批量提交作业脚本用for循环就行了
BDF(https://bdf-manual.readthedocs.io/zh_CN/latest/Introduction.html)、ORCA(https://orcaforum.kofo.mpg.de/index.php)开发团队成员

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

GMT+8, 2024-11-26 05:46 , Processed in 0.231043 second(s), 24 queries , Gzip On.

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