利用 Spot计算资源降低Ansys LS-DYNA运行成本

原解决方案由 HPC 高级合作伙伴解决方案架构师 Dnyanesh Digraskar 和高级合作伙伴开发经理 Amit Varde 撰写发布在 AWS HPC Blog

本文在速石平台FCC-E环境中复现.

先说结论 : 同样运行10个Job,每个144个MPI任务. 通过 lsdyna-spotless 执行的任务相比按需集群, 作业总时长增加了7%, 但成本降低了63%.

解决方案简述

lsdyna-spotless 是一组工具包, 用来在AWS Spot实例上运行LS-DYNA仿真. Github地址 : lsdyna-spotless 它的架构如下 :

任务按以下步骤执行 :

  1. 用户在Head Node 上提交一个/一组 Ansys LS-DYNA作业
  2. 手动指定拆分为多个MPI任务
  3. 在每个计算节点都存活一个 poll , 用来轮训所有MPI任务的EC2元数据中的实例中断信号
  4. 在接收到中断信号时, 正在进行的模拟/仿真会创建一个检查点(checkpoint)并将其保存到共享位置 /shared 中, 这里head节点和compute节点都能够访问
  5. 作业守护进程, job-restarter, 能够在计算资源恢复(重新申请)后, 重新将任务提交到队列中

环境设置

  1. 下载安装最新的Ansys LS-DYNA版本
  2. 从lsdyna-spotless的github地址下载工具包并解压
  3. 在 env-vars.sh 中配置自定义选项
  4. 讲 MPPDYNA 变量设置为Ansys LS-DYNA 可执行文件的路径
  5. 在环境变量中配置License服务器以及Slurm队列
export LSTC_LICENSE_SERVER="IP-address-license-server"
export SQQUEUE="your-SLURM-queue-name"
  1. 使其它相关环境变量生效
source env-vars.sh
  1. 将解压后的lsdyna-spotless工具包复制到以下目录
cp * /shared/ansys/bin

提交任务

假设每个作业都位于其自己的唯一命名目录中,并具有自己的 SLURM 作业脚本, Ansys LS-DYNA 的main input deck 为 main.k 提交作业命令 :

start-jobs 2 72 spotq.slurm job-1 job-2 job-3

提交的作业 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

如果需要停止任务,请执行:

stop-jobs

统计由于Spot中断造成的时间开销

利用calc-timing 统计任务的完成时间, 本次在2台c5.18xlarge Spot上启用了一组10个job,每个job包含144个MPI任务, 以下是10个job运行时间输出 :

结论

通过合理的配置, 在Spot实例上运行Ansys LS-DYNA仿真, 能够节约高达60%的成本

参考文档

Amazon EC2 Spot 实例
Spot 白皮书
LS-DYNA spotless Github
Cost-optimization on Spot Instances using checkpoint for Ansys LS-DYNA

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

利用 Spot计算资源降低Ansys LS-DYNA运行成本
返回顶部

显示

忘记密码?

显示

显示

获取验证码

Close