You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ElmerFEM有限元分析:Slurm单节点串行执行多任务配置求助

问题解决:单节点串行执行多Slurm任务以适配ElmerFEM分区计算

你的需求完全可以实现,当前脚本报错的核心原因是:你设置了--ntasks-per-node=8,结合--cpus-per-task=1,Slurm会默认尝试在单个节点上同时启动8个任务(每个任务占用1核),但你的节点只有4个物理核心,集群找不到满足8核需求的节点,因此报错。

要实现5个4核节点,每个节点串行执行8个任务(总计40个任务),推荐使用Slurm任务数组来精准控制并发数,修改后的脚本如下:

#!/bin/bash
#SBATCH --job-name=elm_x
#SBATCH --output=log/%x-%A_%a.out
#SBATCH --error=log/%x-%A_%a.err
#SBATCH --nodes=5
#SBATCH --cpus-per-task=1
#SBATCH --ntasks-per-node=1  # 限制每个节点同时仅运行1个任务
#SBATCH --array=1-40%5       # 创建40个任务实例,同时最多运行5个(刚好占满5个节点)

# 传递分区参数给ElmerSolver_mpi,需根据你的实际分区配置调整
# 示例为总分区数40,当前任务对应第SLURM_ARRAY_TASK_ID个分区
srun --mpi=pmix /usr/bin/ElmerSolver_mpi case.sif -partition $SLURM_ARRAY_TASK_ID 40

关键配置说明:

  • --array=1-40%5:生成编号1到40的任务数组,%5限制同时运行的任务数为5,刚好匹配你可用的5个节点,每个节点每次仅处理1个任务,完成后自动启动下一个,直到该节点的8个任务全部执行完毕
  • --ntasks-per-node=1:强制每个节点同一时间仅启动1个任务,从根源避免节点内存不足的问题
  • 分区参数:ElmerFEM需要明确当前任务对应的分区编号和总分区数,示例中的-partition $SLURM_ARRAY_TASK_ID 40需根据你的仿真实际情况调整(如果分区文件是按case_${SLURM_ARRAY_TASK_ID}.sif命名,则需修改启动命令加载对应文件)

注意事项:

  1. 务必提前创建脚本中指定的log目录,否则会因无法写入日志文件报错
  2. 这种串行执行方式确实会大幅降低计算效率,但完全适配你当前的资源限制需求

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:43:14