2013-10-31 65 views
0

現在我做一個集羣上執行以下操作:如何創建一個作業腳本來自動執行此操作?

(ⅰ)的qsub-X -I -l walltime = 60:00:00,節點= 1:PPN = 8

(ⅱ)提交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 & 

(三)提交本我打開一個新的連接,使用的qsub(I),編輯myjob文件,即改變我從{1,後 - 1}改爲{2,-2},然後提交./myjob。

我重複這個從i = 1,-1到i = 20,-20。

是不是有一種方法來自動完成這個?我花了一天(實際上超過一天)試圖使用作業數組,循環等來完成這項工作。應該有一個快速的方法來請求160個處理器並提交這個工作,或者讓我們人類還沒有進入計算階段?

任何幫助是高度的,超級高度讚賞。

PS - 是的,我知道我不是電腦嚮導,請原諒我的無知。

回答

0

這看起來像扭矩,所以像下面的腳本應該做你想做的。基於假設您的調度程序被配置爲專門將節點分配給作業,並且您希望使用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