计算化学公社

标题: 使用PBS提交多个ORCA任务脚本发生冲突,只能留下一个任务 [打印本页]

作者
Author:
yesterday    时间: 2021-7-4 16:11
标题: 使用PBS提交多个ORCA任务脚本发生冲突,只能留下一个任务
本帖最后由 yesterday 于 2021-7-4 16:19 编辑

我最近的一项工作是使用ORCA计算大约10万个结构(xyz文件)的单点能和梯度,单个文件的计算时间大概在25秒左右,这样的话如果用64个并行任务这10万多个任务应该一天就能算完。于是我准备了64个inp文件和64个pbs任务脚本,每个inp文件大概是这样的:
! DSD-BLYP D3BJ def2-TZVP
%base "output0/step0"
%pal nprocs 1 end
%maxcore 4000
%method
  RunTyp Gradient
end
* xyzfile -1 1 xyz/step0.xyz
#--------------------------------------

$new_job
! DSD-BLYP D3BJ def2-TZVP
%base "output0/step64"
%pal nprocs 1 end
%maxcore 4000
%method
  RunTyp Gradient
end
* xyzfile -1 1 xyz/step64.xyz
#--------------------------------------

$new_job
! DSD-BLYP D3BJ def2-TZVP
%base "output0/step128"
%pal nprocs 1 end
%maxcore 4000
%method
  RunTyp Gradient
end
* xyzfile -1 1 xyz/step128.xyz
#--------------------------------------
#下面还有,就是同样的参数不同的xyz文件

然后每个pbs任务脚本大概是这样的:
#!/bin/sh
#PBS -N orca_job0
#PBS -l nodes=1:ppn=1
#PBS -l walltime=168:00:00
#PBS -j oe
#PBS -q cu-1
#PBS -V
#PBS -S /bin/bash

cd $PBS_O_WORKDIR

INP="job0.inp"
OUT="output0/job0.out"
ORCA="/lustre/software/orca/orca-4.2.1-openmpi-3.1.4/orca"

module load orca/4.2.1-openmpi-3.1.4

$ORCA $INP "bind-to core" > $OUT

module unload orca/4.2.1-openmpi-3.1.4

exit

我试了一下,如果只提交一个任务,基本上每个脚本都能正常提交,且正常运行很长时间。但是如果把这些脚本都提交上去,这些任务会就互相冲突似的先后掉线,最后只剩下一个任务在跑。
出错的信息是:
/lustre/software/tsce4/torque6/share/cu385/mom_priv/jobs/2701259.mu01.SC: line 18: 284630 Killed                  $ORCA $INP "bind-to core" > $OUT
也看不出来是什么毛病。

我也先后尝试了在不同的文件夹下面提交任务、加上 "bind-to core" 等等,但是貌似都不管用。

请各位大神指教!
作者
Author:
yesterday    时间: 2021-7-4 16:14
补充说明一下,我先后试了在不同的文件夹下面提交任务、加上 "bind-to core" 等等,但是貌似都不管用。
作者
Author:
wzkchem5    时间: 2021-7-4 16:29
如果同时提交两个单步的orca任务(也就是没有$new_job的),也会有这个问题吗?
如果也有问题的话,建议问一下你们服务器的管理员
作者
Author:
yesterday    时间: 2021-7-4 16:44
wzkchem5 发表于 2021-7-4 16:29
如果同时提交两个单步的orca任务(也就是没有$new_job的),也会有这个问题吗?
如果也有问题的话,建议问 ...

没有$new_jobs的话确实没有冲突,但问题是之前的就算冲突一般也是提交上去2-3分钟之后才开始互相挤掉线的,现在单个任务只需要算20多秒,根本不到掉线的时间就算完了,所以现在这个测试也说明不了什么问题啊。
作者
Author:
abin    时间: 2021-7-4 16:48
浪潮的机器? 浪潮修改后的调度系统?
我看到浪潮天梭的东西了.

一个问题, 这10万个计算, 会相互依赖吗?
比如, A, B, C三个, 无论先运行哪一个, 都不会影响其他作业吗?

如果机器, 对于用户提交作业数目无限制, 那就是一次性提交10万个.

如果对作业数目哟限定, 比如一个用户最多active jobs, 100个, 那就不能一次性搞这么多.

资源限定方面?
允许你组多使用多少核心?

或者, 你确认24消失能搞定,
可以仅仅使用PBS来申请节点, 申请25个小时, 比如sleep.
然后去节点, 总计干活.
shell搞定. 如同你说的, 开64个线程, 每个线程中计算多少个之类的.

作者
Author:
yesterday    时间: 2021-7-4 16:55
abin 发表于 2021-7-4 16:48
浪潮的机器? 浪潮修改后的调度系统?
我看到浪潮天梭的东西了.

确实是浪潮的机子。这些任务互相之间没影响,先算后算哪个都一样。我们这边是整个单位的内部机器,所以没限制。但问题是我也不可能一下把10万个核都给占了,否则别说其他组肯定不乐意,管理员也会找上门的,这种事情还是得自我限制一下。
作者
Author:
wzkchem5    时间: 2021-7-4 17:00
yesterday 发表于 2021-7-4 09:44
没有$new_jobs的话确实没有冲突,但问题是之前的就算冲突一般也是提交上去2-3分钟之后才开始互相挤掉线的 ...

可以把分子加大一些试试
作者
Author:
abin    时间: 2021-7-4 17:02
yesterday 发表于 2021-7-4 16:55
确实是浪潮的机子。这些任务互相之间没影响,先算后算哪个都一样。我们这边是整个单位的内部机器,所以没 ...

查询是否限定,
active job numbers
total job numbers in queue

一般会限定active job numbers, 但是很少去限定total job numbers in queue.
作者
Author:
abin    时间: 2021-7-4 17:07
不过, 这个机器都上lustre存储了.
看来规模不小啊.

你何不申请比如64个节点, 每一个节点使用2个核心, 这样不就搞定了.
难道有限定, 仅仅可以使用一台机器?


作者
Author:
yesterday    时间: 2021-7-4 17:15
abin 发表于 2021-7-4 17:07
不过, 这个机器都上lustre存储了.
看来规模不小啊.

调度系统是自动分配的,一般我们交任务都是一次性用32个核的整数倍,这样就可以占用整个节点。所以如果是只占用几个核的任务为了节约资源一般都会扔到同一个节点。
作者
Author:
abin    时间: 2021-7-4 17:48
yesterday 发表于 2021-7-4 17:15
调度系统是自动分配的,一般我们交任务都是一次性用32个核的整数倍,这样就可以占用整个节点。所以如果是 ...

是啊,默认尽可能放在一个节点!

既然要求32核心起步,按照整个处理器来调度,
最简单的就是,pbs拿到节点,
然后上去自己手动控制计算呗。

slurm可以控制一个处理器上跑几个计算。
PBS不清楚。我也不清楚,你们用哪一个版本的PBS。
openPBS PBSpro,功能和slurm应该差异不大。
作者
Author:
yesterday    时间: 2021-7-4 18:26
wzkchem5 发表于 2021-7-4 17:00
可以把分子加大一些试试

不过你倒是提醒我了,既然用$new_job会掉线,那我就不用new_job,在pbs脚本里面写个for循环一个任务一个任务地算,现在倒是正常运行了。不过我之前测试的时候发,单个任务用的时间比用new_job算多个任务的评价时间要长,估计是每次启动orca有个初始化的时间,现在这种算法比用new_job要慢一些,不过总比不能算的好。




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