提交作業(yè)
本文介紹如何通過(guò)控制臺(tái)、命令行和E-HPC Portal提交作業(yè)。
前提條件
集群和集群節(jié)點(diǎn)狀態(tài)都為運(yùn)行中。
已創(chuàng)建用戶,具體操作,請(qǐng)參見(jiàn)用戶管理。
通過(guò)控制臺(tái)提交作業(yè)時(shí),已在集群中準(zhǔn)備好待執(zhí)行的作業(yè)文件。
通過(guò)命令行提交作業(yè)時(shí),集群調(diào)度器類(lèi)型須為PBS、SLURM和Grid Engine。
通過(guò)控制臺(tái)提交作業(yè)
進(jìn)入集群詳情頁(yè)面。
在頂部菜單欄左上角處,選擇地域。
在左側(cè)導(dǎo)航欄,單擊集群。
在集群列表頁(yè)面,單擊目標(biāo)集群名稱(chēng)。
在左側(cè)導(dǎo)航欄,單擊作業(yè)管理。
單擊創(chuàng)建作業(yè),并完成以下參數(shù)配置。
基本設(shè)置
參數(shù)項(xiàng)
是否必選
說(shuō)明
作業(yè)名稱(chēng)
是
該作業(yè)的名稱(chēng)。
調(diào)度器隊(duì)列
是
選擇集群中執(zhí)行作業(yè)任務(wù)的隊(duì)列。
啟動(dòng)Job Array
否
是否啟用調(diào)度器的Job Array功能。Job Array可自定義選擇執(zhí)行作業(yè)的規(guī)則。
最小值:指定Job Array中任務(wù)的起始值。所有任務(wù)的索引將從最小值開(kāi)始遞增。
最大值:指定Job Array中任務(wù)的最大值。所有任務(wù)的索引將不超過(guò)最大值。
步長(zhǎng):指定任務(wù)索引之間的增量。例如,如果步長(zhǎng)為2,則任務(wù)的索引將以2的增量遞增。不指定時(shí)默認(rèn)為1。
作業(yè)優(yōu)先級(jí)
否
作業(yè)執(zhí)行的優(yōu)先級(jí)取值受調(diào)度器影響而不同,取值為不小于0的整數(shù)。取值越大,優(yōu)先級(jí)越高。
說(shuō)明如果集群的調(diào)度策略設(shè)置為根據(jù)優(yōu)先級(jí)調(diào)度,高優(yōu)先級(jí)的作業(yè)會(huì)被優(yōu)先調(diào)度運(yùn)行。在提交了多個(gè)作業(yè)時(shí),對(duì)于需要優(yōu)先執(zhí)行的作業(yè),您可以通過(guò)設(shè)置高優(yōu)先級(jí)來(lái)優(yōu)先執(zhí)行。
執(zhí)行命令
是
向調(diào)度器提交的作業(yè)執(zhí)行命令,可以是腳本文件(如
/home/test
目錄下的job.pbs
),也可以是一段命令文本。分為以下兩種情況:腳本文件可執(zhí)行,填寫(xiě)相對(duì)路徑,如
./job.pbs
。腳本文件沒(méi)有可執(zhí)行權(quán)限,則需要填寫(xiě)執(zhí)行命令,且需要在命令前加
--
。如:--/opt/mpi/bin/mpirun /home/test/job.pbs
。
節(jié)點(diǎn)數(shù)
否
用來(lái)運(yùn)行此作業(yè)的計(jì)算節(jié)點(diǎn)數(shù)。
申請(qǐng)CPU
否
表示集群執(zhí)行該作業(yè)任務(wù)時(shí)每個(gè)節(jié)點(diǎn)需要使用的內(nèi)存和CPU資源量。
說(shuō)明填寫(xiě)該參數(shù)時(shí)需要根據(jù)作業(yè)的實(shí)際需求來(lái)確定,如果內(nèi)存不足可能會(huì)導(dǎo)致作業(yè)運(yùn)行失敗或性能下降。
申請(qǐng)內(nèi)存
否
高級(jí)選項(xiàng)
參數(shù)項(xiàng)
是否必選
說(shuō)明
標(biāo)準(zhǔn)輸出路徑
否
定義Linux系統(tǒng)的stderr/stdout輸出重定向路徑,包含輸出文件名。
stdout:標(biāo)準(zhǔn)文件輸出路徑。
stderr:錯(cuò)誤文件輸出路徑。
集群用戶必須有該路徑的可寫(xiě)權(quán)限,默認(rèn)按照調(diào)度器設(shè)置生成輸出文件。
標(biāo)準(zhǔn)錯(cuò)誤路徑
否
環(huán)境變量
否
傳遞到作業(yè)的運(yùn)行時(shí)變量,可以在作業(yè)執(zhí)行文件中通過(guò)環(huán)境變量訪問(wèn)。
確認(rèn)配置信息無(wú)誤,單擊頁(yè)面底部確認(rèn)創(chuàng)建。
通過(guò)命令行提交作業(yè)
遠(yuǎn)程連接集群的登錄節(jié)點(diǎn)。具體操作,請(qǐng)參見(jiàn)連接集群。
根據(jù)集群的調(diào)度器類(lèi)型,選擇以下對(duì)應(yīng)操作,編寫(xiě)作業(yè)腳本并提交作業(yè)。示例如下:
說(shuō)明自動(dòng)伸縮場(chǎng)景下,E-HPC不支持基于內(nèi)存來(lái)擴(kuò)縮容,建議您在提交作業(yè)時(shí)指定作業(yè)所需的vCPU數(shù)。
PBS
執(zhí)行以下命令,編寫(xiě)作業(yè)腳本,腳本文件命名為jobscript.pbs。
vim jobscript.pbs
jobscript.pbs的內(nèi)容示例如下。更多關(guān)于PBS命令行的信息,請(qǐng)參見(jiàn)PBS官網(wǎng)。
#!/bin/sh #PBS -l ncpus=4,mem=1gb #指定作業(yè)運(yùn)行所需的計(jì)算資源 #PBS -l walltime=00:10:00 #預(yù)估作業(yè)運(yùn)行時(shí)長(zhǎng) #PBS -o test_pbs.log #指定stdout輸出文件 #PBS -j oe #把stderr和stdout的輸出合并到指定的輸出文件 cd $HOME test.py -i test.data
執(zhí)行以下命令,提交作業(yè)。
qsub jobscript.pbs
SLURM
執(zhí)行以下命令,編寫(xiě)作業(yè)腳本,腳本文件命名為jobscript.slurm。
vim jobscript.slurm
jobscript.slurm的內(nèi)容示例如下,更多關(guān)于SLURM命令行的信息,請(qǐng)參見(jiàn)SLURM官網(wǎng)。
#!/bin/sh #SBATCH --job-name=slurm-quickstart #設(shè)置作業(yè)名稱(chēng) #SBATCH --output=test_slurm.log #指定stdout輸出文件 #SBATCH --nodes=1 #指定節(jié)點(diǎn)數(shù)量 #SBATCH --ntasks=1 #指定任務(wù)數(shù)量 #SBATCH --cpus-per-task=1 #指定每個(gè)任務(wù)需要的vCPU數(shù) #SBATCH --time=00:10:00 #預(yù)估作業(yè)運(yùn)行時(shí)長(zhǎng) #SBATCH --mem-per-cpu=1024 #指定每個(gè)vCPU分配的內(nèi)存數(shù) cd $HOME test.py test.data
執(zhí)行以下命令,提交作業(yè)。
sbatch jobscript.slurm
Grid Engine
執(zhí)行以下命令,編寫(xiě)作業(yè)腳本,腳本文件命名為jobscript.sh。
vim jobscript.sh
jobscript.sh的內(nèi)容示例如下,更多關(guān)于Grid Engine命令行的信息,請(qǐng)參見(jiàn)SGE官網(wǎng)。
#!/bin/bash #$ -cwd #指定執(zhí)行路徑為當(dāng)前路徑 #$ -N test1 #設(shè)置作業(yè)名稱(chēng) #$ -q all.q #指定隊(duì)列 #$ -pe smp 2 #指定運(yùn)行作業(yè)所需的vCPU數(shù) #$ -l vf=1g #指定運(yùn)行作業(yè)所需的內(nèi)存數(shù) #$ -o /home/testuser #指定輸出日志路徑 #$ -e /home/testuser #指定錯(cuò)誤日志路徑 cd $HOME test.py test.data
重要自動(dòng)伸縮場(chǎng)景下,E-HPC會(huì)基于作業(yè)所需vCPU數(shù)來(lái)匹配擴(kuò)容的ECS規(guī)格,編寫(xiě)Grid Engine作業(yè)腳本時(shí)必須使用-pe smp的方式來(lái)指定作業(yè)所需vCPU數(shù)。
執(zhí)行以下命令,提交作業(yè)。
qsub -V jobscript.sh
通過(guò)E-HPC Portal提交作業(yè)
具體操作,請(qǐng)參見(jiàn)通過(guò)submitter提交作業(yè)。
相關(guān)文檔
您也可以通過(guò)調(diào)用API接口提交作業(yè)。具體操作,請(qǐng)參見(jiàn)CreateJob。