【问题标题】:How to create a job script to automatise this?如何创建一个作业脚本来自动化这个?
【发布时间】:2013-10-31 13:10:35
【问题描述】:

现在我正在集群上执行以下操作:

(i) qsub-X -I -l walltime=60:00:00,nodes=1:ppn=8

(ii) 提交具有以下内容的 myjob(使用 ./myjob)

#!/bin/bash
i=1
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &
i=-1
nohup ./a.out $i 2 42 &
nohup ./a.out $i 43 60 &
nohup ./a.out $i 61 74 &
nohup ./a.out $i 75 85 &

(iii) 提交后,我打开一个新连接,使用 (i) 进行 qsub,编辑 myjob 文件,即将 i 从 {1,-1} 更改为 {2,-2},然后提交 ./myjob。

我从 i=1,-1 重复这个到 i=20,-20。

没有办法自动化吗?我花了一天(实际上超过一天)尝试使用作业数组、for 循环等来完成这项工作。应该有一种快速的方法来要求 160 个处理器并提交这项工作,或者我们人类还没有到了计算的那个阶段?

任何帮助都非常非常感谢。

PS - 是的,我知道我不是计算机巫师,请原谅我的无知。

【问题讨论】:

    标签: arrays jobs qsub pbs


    【解决方案1】:

    这看起来像扭矩,所以像下面这样的脚本应该做你想做的事。基于您的调度程序配置为仅将节点分配给作业并且您希望使用 8 核节点上的所有内核的假设。

    #!/bin/bash
    #PBS -l walltime=60:0:0
    #PBS -t 1-8
    #PBS -l nodes=1:ppn=8
    i=${PBS_ARRAYID}
    nohup ./a.out $i 2 42 &
    nohup ./a.out $i 43 60 &
    nohup ./a.out $i 61 74 &
    nohup ./a.out $i 75 85 &
    i=-${PBS_ARRAYID}
    nohup ./a.out $i 2 42 &
    nohup ./a.out $i 43 60 &
    nohup ./a.out $i 61 74 &
    nohup ./a.out $i 75 85 &
    wait
    

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多