原解決方案由 HPC 高級(jí)合作伙伴解決方案架構(gòu)師 Dnyanesh Digraskar 和高級(jí)合作伙伴開(kāi)發(fā)經(jīng)理 Amit Varde 撰寫(xiě)發(fā)布在 AWS HPC Blog
本文在速石平臺(tái)FCC-E環(huán)境中復(fù)現(xiàn).
先說(shuō)結(jié)論 : 同樣運(yùn)行10個(gè)Job,每個(gè)144個(gè)MPI任務(wù). 通過(guò) lsdyna-spotless 執(zhí)行的任務(wù)相比按需集群, 作業(yè)總時(shí)長(zhǎng)增加了7%, 但成本降低了63%.

解決方案簡(jiǎn)述
lsdyna-spotless 是一組工具包, 用來(lái)在AWS Spot實(shí)例上運(yùn)行LS-DYNA仿真. Github地址 : lsdyna-spotless 它的架構(gòu)如下 :

任務(wù)按以下步驟執(zhí)行 :
- 用戶(hù)在Head Node 上提交一個(gè)/一組 Ansys LS-DYNA作業(yè)
- 手動(dòng)指定拆分為多個(gè)MPI任務(wù)
- 在每個(gè)計(jì)算節(jié)點(diǎn)都存活一個(gè) poll , 用來(lái)輪訓(xùn)所有MPI任務(wù)的EC2元數(shù)據(jù)中的實(shí)例中斷信號(hào)
- 在接收到中斷信號(hào)時(shí), 正在進(jìn)行的模擬/仿真會(huì)創(chuàng)建一個(gè)檢查點(diǎn)(checkpoint)并將其保存到共享位置 /shared 中, 這里head節(jié)點(diǎn)和compute節(jié)點(diǎn)都能夠訪問(wèn)
- 作業(yè)守護(hù)進(jìn)程, job-restarter, 能夠在計(jì)算資源恢復(fù)(重新申請(qǐng))后, 重新將任務(wù)提交到隊(duì)列中
環(huán)境設(shè)置
- 下載安裝最新的Ansys LS-DYNA版本
- 從lsdyna-spotless的github地址下載工具包并解壓
- 在 env-vars.sh 中配置自定義選項(xiàng)
- 講 MPPDYNA 變量設(shè)置為Ansys LS-DYNA 可執(zhí)行文件的路徑
- 在環(huán)境變量中配置License服務(wù)器以及Slurm隊(duì)列
export LSTC_LICENSE_SERVER="IP-address-license-server"
export SQQUEUE="your-SLURM-queue-name"
- 使其它相關(guān)環(huán)境變量生效
source env-vars.sh
- 將解壓后的lsdyna-spotless工具包復(fù)制到以下目錄
cp * /shared/ansys/bin
提交任務(wù)
假設(shè)每個(gè)作業(yè)都位于其自己的唯一命名目錄中,并具有自己的 SLURM 作業(yè)腳本, Ansys LS-DYNA 的main input deck 為 main.k 提交作業(yè)命令 :
start-jobs 2 72 spotq.slurm job-1 job-2 job-3
提交的作業(yè) spotq.slurm 示例為:
#!/bin/bash
#SBATCH -J job # Job name
#SBATCH -o job.%j.out # Name of stdout output file
INPUTDECK="main.k"
if ls d3dump* 1>/dev/null 2>&1; then
mode="r=$(ls -t d3dump* | head -1 | cut -c1-8)"
op="restart"
else
mode="i=$INPUTDECK"
op="start"
fi
# create/overwrite checkpoint command file
echo "sw1." >switch
# launch monitor tasks
job_file=$(scontrol show job $SLURM_JOB_ID | awk -F= '/Command=/{print $2}')
srun --overcommit --ntasks=$SLURM_JOB_NUM_NODES --ntasks-per-node=1 $SQDIR/bin/poll "$SLURM_JOB_ID" "$SLURM_SUBMIT_DIR" "$job_file" &>/dev/null &
# Launch MPI-based executable
echo -e "$SLURM_SUBMIT_DIR ${op}ed: $(date) | $(date +%s)" >>$SQDIR/var/timings.log
srun --mpi=pmix_v3 --overcommit $MPPDYNA $mode
echo -e "$SLURM_SUBMIT_DIR stopped: $(date) | $(date +%s)" >>$SQDIR/var/timings.log
如果需要停止任務(wù),請(qǐng)執(zhí)行:
stop-jobs
統(tǒng)計(jì)由于Spot中斷造成的時(shí)間開(kāi)銷(xiāo)
利用calc-timing 統(tǒng)計(jì)任務(wù)的完成時(shí)間, 本次在2臺(tái)c5.18xlarge Spot上啟用了一組10個(gè)job,每個(gè)job包含144個(gè)MPI任務(wù), 以下是10個(gè)job運(yùn)行時(shí)間輸出 :

結(jié)論
通過(guò)合理的配置, 在Spot實(shí)例上運(yùn)行Ansys LS-DYNA仿真, 能夠節(jié)約高達(dá)60%的成本
參考文檔
Amazon EC2 Spot 實(shí)例
Spot 白皮書(shū)
LS-DYNA spotless Github
Cost-optimization on Spot Instances using checkpoint for Ansys LS-DYNA
關(guān)于fastone云平臺(tái)在EDA及其他行業(yè)應(yīng)用上的具體表現(xiàn),可以點(diǎn)擊以下應(yīng)用名稱(chēng)查看:
- END -
我們有個(gè)為應(yīng)用定義的EDA云平臺(tái)
集成多種EDA應(yīng)用,大量任務(wù)多節(jié)點(diǎn)并行
應(yīng)對(duì)短時(shí)間爆發(fā)性需求,連網(wǎng)即用
跑任務(wù)快,原來(lái)幾個(gè)月甚至幾年,現(xiàn)在只需幾小時(shí)
5分鐘快速上手,拖拉點(diǎn)選可視化界面,無(wú)需代碼
支持高級(jí)用戶(hù)直接在云端創(chuàng)建集群
掃碼免費(fèi)試用,送300元體驗(yàn)金,入股不虧~
