PBS腳本 Job Submission and Scheduling (PBS Scripts)


參考:

MSI Job Submission and Scheduling (PBS Scripts)

CSDN博客 PBS常用命令和腳本

一 介紹

超算系統使用作業隊列來管理 計算任務 的執行。將計算任務提交到作業隊列后,它們將在隊列中等待,直到有可用的適當的計算資源。

常見的排隊系統為PBS(Portable Batch System.)。要將作業提交到PBS隊列,用戶可以創建PBS作業腳本(PBS job scripts)。 PBS作業腳本包含有關計算所需資源的信息,以及用於執行計算的命令

 

二 PBS Script格式

PBS作業腳本是一個小型文本文件,其中包含有關作業所需資源的信息,包括時間,節點數和內存。 PBS腳本還包含 讓超算系統執行的命令(commands needed to begin executing the desired computation)。比如linux系統命令(由超算的操作系統決定)。

PBS作業腳本示例:

1 #!/bin/bash -l        
2 #PBS -l walltime=8:00:00,nodes=1:ppn=8,mem=10gb 
3 #PBS -m abe 
4 #PBS -M sample_email@umn.edu 
5 cd ~/program_directory
6 module load intel 
7 module load ompi/intel 
8 mpirun -np 8 program_name < inputfile > outputfile

 

PBS腳本的第一行定義了將使用哪種shell讀取腳本(系統將如何讀取文件)。建議使第一行#!/ bin / bash -l

用於PBS查詢系統的命令以  #PBS 開頭。

上面的示例腳本中的第二行包含PBS資源請求。該示例作業將需要8個小時,每個節點8個處理器核(ppn),以及10 GB的內存(mem)。資源請求必須包含適當的值;如果請求的時間,處理器或內存不適合硬件,則該作業將無法運行。

包含#PBS -m abe和#PBS -M sample_email@umn.edu的兩行都是與向用戶發送郵件電子郵件有關的命令。這些行的第一行指示PBS系統在作業中止,開始或結束時發送消息電子郵件。第二個命令指定要使用的電子郵件地址。可以使用電子郵件中的信息來分析工作失敗的原因。

樣本PBS腳本的其余部分包含將要開始計算的命令。 PBS腳本應包含適當的更改目錄命令以到達job執行位置(該腳本將在用戶主目錄中啟動)。 PBS腳本還需要包含計算可能需要的任何軟件模塊的模塊加載命令。 PBS腳本的最后幾行包含用於執行計算的命令。在上面的示例中,最后一行包含執行命令,以啟動程序,該程序使用MPI通信在8個處理器內核上運行。

三 提交Script

1. 提交腳本:   qsub -q queuename scriptname 

quename是提交到的隊列的名稱,scriptname是作業腳本的名稱。 該命令的-q quename部分可以省略,在這種情況下,作業將提交到設置為默認隊列的任何隊列。 或者,可以將隊列規范放在作業腳本中(請參見下文)。

   2. 查看提交的任務狀態 qstat -u username

此命令將顯示指定作業的狀態以及相關的作業ID號。 命令qstat本身將顯示系統上的所有作業。

  3. 取消提交的作業    qdel jobIDnumber
應使用通過使用qstat命令確定的適當的作業ID號替換jobIDnumber。

四 PBS Script Commands

下表總結了可在PBS作業腳本中使用的一些命令。 前兩個命令(解釋器規范和資源請求)是必需的,而其他命令是可選的。 下面的每個PBS命令都應在PBS腳本內占一行。

PBS command Effect
#!/bin/bash -l 如何解讀PBS文件,需要在第一行。Specifies how the PBS file should be read (by the bash interpreter). A statement like this is required to be the first line of a PBS script.
#PBS -l walltime=2:00:00,nodes=1:ppn=8,pmem=2500mb 需要的資源。The resource request (required). The resource request must specify the job walltime (hours:minutes:seconds), number of nodes, and processor cores per node (ppn). It is recommended to specify either the required memory per processor core (pmem), or the required total memory (mem).
#PBS -m abe 發送郵件。Makes the PBS system send message emails when the job aborts, begins, or ends.
#PBS -M sample_email@umn.edu 發送郵件。Specifies the email address that should be used when the PBS system sends message emails.
#PBS -N jobname 設定這個任務的名字。Specifies a name for the job that will appear in the job queue.
#PBS -o output_filename 輸出文件。Directs the job standard output to be placed in the named file.
#PBS -e error_filename 錯誤信息文件。Directs the job error output to be placed in the named file.
#PBS -q queue_name 提交到的隊列。Specifies that the job should be run in the named queue.

(1) PBS 作業腳本選項 (若無-C 選項,則每項前面加‘#PBS’)
-a date_time : date_time 格式為:[[[[CC]YY]MM]DD]hhmm[.SS]
表示經過date_time 時間后作業才可以運行。
-c interval : 定義作業的檢查點間隔,如果機器不支持檢查點,則忽略此選項。
-C directive_prefix :在腳本文件中以directive_prefix 開頭的行解釋為qsub 的命
令選項。(若無此選項,則默認為’#PBS’ )
-e path :將標准錯誤信息重定向到path
-I :以交互方式運行
-j join :將標准輸出信息與標准錯誤信息合並到一個文件join 中去。
-k keep :定義在執行結點上保留標准輸出和標准錯誤信息中的哪個文件。
keep 為o 表示保留前者,e 表示后者,oe 或eo 表示二者都保留,
n 表示皆不保留。若忽略此選項,二者都不保留。
-l resource_list : 定義資源列表。以下為幾個常用的資源種類。
cput=N : 請求N 秒的CPU 時間; N 也可以是hh:mm:ss 的形式。
mem=N[K|M|G][B|W]:請求N {kilo|mega|giga}{bytes|words} 大小的內存。
nodes=N:ppn=M :請求N 個結點,每個結點M 個處理器。
-m mail_options :mail_option 為a:作業abort 時給用戶發信;為b:作業開始運行發信;為e:
作業結束運行時發信。若無此選項,默認為a。
-M user_list : 定義有關此作業的mail 發給哪些用戶。
-N name : 作業名,限15 個字符,首字符為字母,無空格。
-o path : 重定向標准輸出到path。
-p priority : 任務優先級,整數,[-1024,1023],若無定義則為0.
-q destination : destination 有三種形式: queue , @server,queue@server。
-r y|n : 指明作業是否可運行,y 為可運行,n 為不可運行。
-S shell : 指明執行運行腳本所用的shell,須包含全路徑。
-u user_list : 定義作業將在運行結點上以哪個用戶名來運行。
-v variable_list : 定義export 到本作業的環境變量的擴展列表。
-V : 表明qsub 命令的所有環境變量都export 到此作業。
-W additional_attributes : 作業的其它屬性。
-z : 指明qsub 命令提交作業后,不在終端顯示作業號。

 

(2) 運行腳本同LINUX 下一般的運行腳本文件。
[注]:腳本文件中的mpirun_rsh 命令行中的節點列表文件要用環境變量表示
$PBS_NODEFILE,這個環境變量表示由pbs 自動分配給作業的節點列表;
節點數為命令行中指定的進程數。
格式如下:
mpirun_rsh –np 進程數 –hostfile $PBS_NODEFILE 可執行程序名

五 舉個栗子

pthread2.pbs(用來執行 pthread2.exe文件,並傳遞兩個main函數參數: 10000000 線程數(此處為申請的系統內核數)

#!/bin/bash
#PBS -N pthread
#PBS -q qstudent
#PBS -l nodes=1:ppn=16
#PBS -j oe

cd $PBS_O_WORKDIR
procs=$(cat $PBS_NODEFILE | wc -l)
date +%s.%N #輸出程序開始時間
#./pthread2 1000000000 $procs 
uname -a
date +%s.%N #輸出程序結束時間
#此空行不能省略

 

 

 提交命令 qsub pthread2.pbs  返回作業ID(此處為20246

查看作業,使用 qstat -R  ,C表示完成狀態,Q表示在排隊,R表示在運行   此處任務作業轉台為C運行完了

作業結果保存在文件(name).o(job_id)中,此處為pthread.o20246

通過cat命令查看作業結果文件的內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM