计算化学公社

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

[综合交流] 超算上批量提交任务

[复制链接 Copy URL]

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

本帖最后由 登登 于 2017-2-7 21:15 编辑

用的是深圳的超算中心资源,对方只提供了单个提交任务的脚本(如下),用的是ssh,如果我想在一个文件下提交多个高斯gjf任务,不会写脚本,对方也不提供批量提交任务的脚本,所以来请教论坛里的各位大神。

APP_NAME=intels_test
NP=24
NP_PER_NODE=12
RUN="RAW"
export GAUSS_LFLAGS='-opt "Tsnet.Node.lindarsharg: ssh"'
INPUT=xxx.gjf
OUTPUT=xxx.log


# user gaussian with linda
export g09root=/home-gs/Soft/Gaussian.D01.Linda
. $g09root/g09/bsd/g09.profile
export GAUSS_SCRDIR=/home-gs/users/nsgs017_LH/scratch/

cd $PWD

#start creating .nodelist
rm -f $PWD/nodelist >& /dev/null

for i in `echo $LSB_HOSTS`
do
    echo "$i" >> $PWD/nodelist
done

nodelist=$(cat $PWD/nodelist | uniq | awk '{print $1}' | tr '\n' ',')

NProcShared=$NP_PER_NODE

cat $INPUT | sed -e "s/%[Nn][Pp][Rr][Oo][Cc][^ \t]*=[0-9]*//" \
           | sed -e "s/%[Ll][Ii][Nn][Dd][Aa][^ \t]*//" \
           | sed -e "1i\%NProcShared=$NProcShared" \
           | sed -e "1a\%LindaWorker=$nodelist" \
           | sed -e "s/\r$//"  \
           >"$INPUT".linda


## Gaussian 09 setup
date > time

g09 < "$INPUT".linda > $OUTPUT

date >> time

sleep 1




3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

2#
发表于 Post on 2017-2-7 20:31:14 | 只看该作者 Only view this author
给定输入文件a.gjf,你提交这个任务的实际命令是什么?

P.S. 看到了Linda版的G09 (⊙v⊙)

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

3#
 楼主 Author| 发表于 Post on 2017-2-7 21:07:11 | 只看该作者 Only view this author
本帖最后由 登登 于 2017-2-7 21:14 编辑
liyuanhe211 发表于 2017-2-7 20:31
给定输入文件a.gjf,你提交这个任务的实际命令是什么?

P.S. 看到了Linda版的G09 (⊙v⊙)

我远程提交这个任务的命令是
chmod 777 xxx.lsf
dos2unix xxx.lsf
bsub xxx.lsf


xxx.lsf是脚本文件也就是上面的脚本,这是在一个文件夹里提价一个高斯任务的脚本,我想实现一个文件里多个高斯任务一起提交上。是直接在INPUT=*.gjf,这样输入吗?就是想一下提交文件夹里所有的gjf文件。

909

帖子

37

威望

5527

eV
积分
7176

Level 6 (一方通行)

4#
发表于 Post on 2017-2-7 22:52:16 | 只看该作者 Only view this author
什么?做个计算竟然还想着偷懒!??
我只能说,果然是同道中人啊
试试我这个:

APP_NAME=intels_test
NP=24
NP_PER_NODE=12
RUN="RAW"
export GAUSS_LFLAGS='-opt "Tsnet.Node.lindarsharg: ssh"'
INPARRAY=(`ls *.gjf`)

# user gaussian with linda
export g09root=/home-gs/Soft/Gaussian.D01.Linda
. $g09root/g09/bsd/g09.profile
export GAUSS_SCRDIR=/home-gs/users/nsgs017_LH/scratch/

cd $PWD

#start creating .nodelist
rm -f $PWD/nodelist >& /dev/null

for i in `echo $LSB_HOSTS`
do
    echo "$i" >> $PWD/nodelist
done

nodelist=$(cat $PWD/nodelist | uniq | awk '{print $1}' | tr '\n' ',')

NProcShared=$NP_PER_NODE

for INPUT in "${INPARRAY[@]}"
do
cat $INPUT | sed -e "s/%[Nn][Pp][Rr][Oo][Cc][^ \t]*=[0-9]*//" \
           | sed -e "s/%[Ll][Ii][Nn][Dd][Aa][^ \t]*//" \
           | sed -e "1i\%NProcShared=$NProcShared" \
           | sed -e "1a\%LindaWorker=$nodelist" \
           | sed -e "s/\r$//"  \
           >"$INPUT".linda


## Gaussian 09 setup
date > time
g09  "$INPUT".linda
date >> time
sleep 1
done

3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

5#
发表于 Post on 2017-2-8 00:38:36 | 只看该作者 Only view this author
本帖最后由 liyuanhe211 于 2017-2-8 14:49 编辑
登登 发表于 2017-2-7 21:07
我远程提交这个任务的命令是
chmod 777 xxx.lsf
dos2unix xxx.lsf

将你一楼的脚本保存为 std.lsf,把下列文件保存为 x.py,都放在装有你要批量运行文件的文件夹下
则运行 python x.py 会自动提交当前文件夹下的所有.gjf文件


  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import os
  4. import subprocess

  5. path = os.path.split(os.path.abspath(sys.argv[0]))[0] #Bug fixed by ggdh at 9L
  6. if not os.path.isfile(os.path.join(path,'std.lsf')):
  7.     print("A standard LSF file [std.lsf] must be provided, leaving INPUT=xxx.gjf")
  8.     exit()
  9. with open(os.path.join(path,'std.lsf')) as std_lsf_file:
  10.     std_lsf = std_lsf_file.read()

  11. files = os.listdir(path)
  12. files = [x.split('.')[0] for x in files if x.split('.')[-1]=='gjf']
  13. print(files)
  14. for file in files:
  15.     with open(file+".lsf",'w') as output_lsf_file:
  16.         output_lsf_file.write(std_lsf.replace('xxx',file))
  17.     subprocess.Popen(['chmod','777',file+".lsf"])
  18.     subprocess.Popen(['dos2unix',file+".lsf"])
  19.     subprocess.Popen(['bsub',file+".lsf"])
复制代码



评分 Rate

参与人数
Participants 2
eV +8 收起 理由
Reason
Edwardlfz + 4 谢谢
登登 + 4 好物!

查看全部评分 View all ratings

909

帖子

37

威望

5527

eV
积分
7176

Level 6 (一方通行)

6#
发表于 Post on 2017-2-8 11:21:24 | 只看该作者 Only view this author
liyuanhe的方案是提交多个任务,每个任务算一个gjf,我的方案是提交一个任务,这个任务一个一个算所有的gjf。
通常情况下liyuanhe的办法效率更高。

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

7#
 楼主 Author| 发表于 Post on 2017-2-8 11:24:13 | 只看该作者 Only view this author
本帖最后由 登登 于 2017-2-8 13:57 编辑
liyuanhe211 发表于 2017-2-8 00:38
将你一楼的脚本保存为 std.lsf,把下列文件保存为 x.py,都放在装有你要批量运行文件的文件夹下
则运行  ...

试了一下,出现这个错误

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

8#
 楼主 Author| 发表于 Post on 2017-2-8 11:26:10 | 只看该作者 Only view this author
ggdh 发表于 2017-2-8 11:21
liyuanhe的方案是提交多个任务,每个任务算一个gjf,我的方案是提交一个任务,这个任务一个一个算所有的gjf ...

对,刚刚试了您的脚本,的确是提交一个任务一个个算,因为一下要运行多个单点想偷个懒

909

帖子

37

威望

5527

eV
积分
7176

Level 6 (一方通行)

9#
发表于 Post on 2017-2-8 11:49:29 | 只看该作者 Only view this author
登登 发表于 2017-2-8 11:24
试了一下,出现这个错误

哈哈 捉住liyuanhe的一个bug
把这一行
path = os.path.split(sys.argv[0])[0]
换成
path = os.path.split(os.path.abspath(sys.argv[0]))[0]

评分 Rate

参与人数
Participants 2
eV +5 收起 理由
Reason
登登 + 4
liyuanhe211 + 1

查看全部评分 View all ratings

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

10#
 楼主 Author| 发表于 Post on 2017-2-8 13:08:08 | 只看该作者 Only view this author
本帖最后由 登登 于 2017-2-8 13:57 编辑
ggdh 发表于 2017-2-8 11:49
哈哈 捉住liyuanhe的一个bug
把这一行
path = os.path.split(sys.argv[0])[0]
测试了,好使,感谢两位大神@liyuanhe211 @ggdh ,会写脚本的人真是自带光环。看着这么多任务一起运行有种莫名的快感。

3

帖子

0

威望

29

eV
积分
32

Level 2 能力者

11#
发表于 Post on 2017-8-29 23:08:14 | 只看该作者 Only view this author
好,收藏下。

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

12#
 楼主 Author| 发表于 Post on 2017-10-26 22:45:45 | 只看该作者 Only view this author
李老师,最近用这个脚本提交任务总是出现Link 1的错误,然后重新提交又能提交上去了,不知道是什么原因。@liyuanhe211

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

13#
 楼主 Author| 发表于 Post on 2017-10-26 22:47:32 | 只看该作者 Only view this author
liyuanhe211 发表于 2017-2-8 00:38
将你一楼的脚本保存为 std.lsf,把下列文件保存为 x.py,都放在装有你要批量运行文件的文件夹下
则运行  ...

李老师,最近用这个脚本提交任务总是出现Link 1的错误,然后重新提交又能提交上去了,不知道是什么原因。

3097

帖子

29

威望

1万

eV
积分
17221

Level 6 (一方通行)

14#
发表于 Post on 2017-10-26 22:56:18 | 只看该作者 Only view this author
登登 发表于 2017-10-26 22:47
李老师,最近用这个脚本提交任务总是出现Link 1的错误,然后重新提交又能提交上去了,不知道是什么原因。 ...

想不到有什么原因会造成这个情况,得要能直接操作你机器的人(或者有账号SSH远程登录的人)才容易调试。

53

帖子

0

威望

733

eV
积分
786

Level 4 (黑子)

15#
 楼主 Author| 发表于 Post on 2017-10-26 22:59:23 | 只看该作者 Only view this author
liyuanhe211 发表于 2017-10-26 22:56
想不到有什么原因会造成这个情况,得要能直接操作你机器的人(或者有账号SSH远程登录的人)才容易调试。

好的,谢谢

本版积分规则 Credits rule

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

GMT+8, 2026-2-21 21:50 , Processed in 0.202167 second(s), 30 queries , Gzip On.

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