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

如何用srun单次启动代码并分配8个CPU与MPI任务?

解决ORCA在无SSH集群上的srun参数配置问题

核心需求

在单节点上仅执行一次execute.sh脚本,同时为脚本内的ORCA程序分配8个CPU核心,满足其8个MPI任务的运行要求。

正确的srun参数配置

使用以下命令调用execute.sh:

srun --nodes=1 --ntasks=1 --cpus-per-task=8 --exclusive ./execute.sh

参数解释

  • --nodes=1:限定任务在单个节点运行,匹配你的单节点计算逻辑
  • --ntasks=1:仅启动一个任务实例,确保execute.sh只执行一次
  • --cpus-per-task=8:为该任务分配8个CPU核心,供ORCA的MPI进程使用
  • --exclusive:独占节点资源(可选),避免其他任务抢占内存或CPU,保证/dev/shm的使用稳定性

配套的execute.sh调整

在execute.sh中,需正确启动ORCA并行任务,确保它能使用分配的8个核心:
如果ORCA通过MPI启动:

# 假设ORCA路径已加入环境变量
mpirun -np 8 orca your_input.inp > your_output.out

如果ORCA支持直接指定核心数:

# 在输入文件中添加%pal nprocs 8 end,或直接用命令行参数
orca your_input.inp > your_output.out %pal nprocs 8 end

为什么之前的配置失败

  • N_Tasks=1、CPUs=8:虽然分配了8个CPU,但ORCA尝试启动8个MPI进程时,srun默认限制单个任务仅能初始化1个MPI进程槽,导致MPI无法启动足够进程
  • N_Tasks=8、CPUs=1:srun会为每个任务实例执行一次execute.sh,因此脚本被重复运行8次,不符合单实例启动的需求

额外优化建议

由于你使用/dev/shm作为临时目录,建议通过srun的--mem参数分配足够内存,避免内存不足:

srun --nodes=1 --ntasks=1 --cpus-per-task=8 --mem=64G --exclusive ./execute.sh

(64G可根据你的计算需求调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:53:29