如何在集群上并行运行Dymola以利用HPC算力支持多用户仿真任务提交
集群部署Dymola可行性
可以在HPC集群上部署运行Dymola,完全满足课题组多用户提交仿真作业、充分调用集群算力的需求。Dymola原生支持无GUI的命令行运行模式,适配SLURM、PBS等主流集群作业调度系统,搭配浮动许可证即可实现多用户同时授权使用,你已经掌握的单机多核并行配置方法在集群单节点上也可以直接复用。
跨多节点并行仿真操作步骤
Dymola跨节点并行分两种常用场景,操作方式分别如下:
- 批量多工况/参数扫描场景(最常用,门槛最低)
这类场景下多个仿真任务之间没有数据交互,直接通过集群作业调度系统的作业数组功能分发任务即可,不需要修改仿真模型。以SLURM调度器为例,提交脚本参考如下:#!/bin/bash #SBATCH --job-name=dymola_batch #SBATCH --array=1-50 # 按你的工况数量调整,示例为同时提交50个工况 #SBATCH --nodes=1 #SBATCH --cpus-per-task=8 # 按你单机并行需要的核数调整 #SBATCH --mem=16G #SBATCH --output=dymola_job_%a.out # 加载集群Dymola环境,路径按集群实际配置调整 module load dymola/2023 # 启动无界面Dymola运行对应工况,$SLURM_ARRAY_TASK_ID为当前作业的工况编号 dymola -nogui -s "你的模型文件.mo" -override "caseId=$SLURM_ARRAY_TASK_ID" - 单模型分布式求解场景
如果是单个超大复杂度模型需要跨节点拆分求解,需要先将模型按弱耦合子系统拆分,开启Dymola的MPI分布式求解支持,操作流程如下:- 所有计算节点提前安装同版本的MPI库(OpenMPI、MPICH均可,推荐用Dymola官方适配的版本)
- 编译模型时添加
-m参数开启MPI编译选项 - 提交作业时指定多节点资源,通过mpirun启动仿真,参考脚本如下:
#!/bin/bash #SBATCH --job-name=dymola_distributed #SBATCH --nodes=4 # 按需要的节点数调整 #SBATCH --ntasks-per-node=8 #SBATCH --mem=64G module load dymola/2023 openmpi/4.1.5 mpirun dymola -nogui -m -s "拆分后的分布式模型.mo"
注意:单模型跨节点求解的性能收益和模型拆分合理性高度相关,如果子系统之间数据交互频率很高,跨节点通信开销会抵消算力提升,建议先做小规模测试验证效率后再大规模使用。
你提到的多核并行参数配置参考界面如下:
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

