我一直在尝试将一些现有进程移至改进后的 Linux 集群,该集群现在在 slurm 上运行。我以为我已经完成了,但我现在的问题是尝试让多个核心运行。
这是我的提交脚本。
#!/bin/bash
#
#SBATCH --job-name=test_mpi
#SBATCH --output=res_mpi.txt
#
#SBATCH -n 4
#SBATCH --time=10:00
srun mkdir -p /tmp/tedhyu/new
srun cp Ru13.in /tmp/tedhyu/new/lcao.in
srun cp ~tedhyu/atom_pbe/* /tmp/tedhyu/new
srun cd /tmp/tedhyu/new
srun -N 1 -n 4 --chdir=/tmp/tedhyu/new mpiexec ~tedhyu/bin/origin1_centos6.4_mpich2_quest_265c.x
当我“qstat -n”时,它只显示一个核心:
作业 ID 用户名 队列名称 SessID NDS TSK 内存时间 使用 S 时间
11778 tedhyu 原子 test_mpi -- 1 4 -- 00:10 C 00:00
node3-5/4
这是我输出的前几行,显示只有 1 个核心正在运行:
srun: error: node3-5: tasks 0-3: Exited with exit code 1
MPINFO::: Global Communicator :::
MPINFO::: Global Context = **** :::
MPINFO::: Global Size = 1 :::
MPINFO::: Global Root = 0 :::
MPINFO::: Global Rank = 0 :::
DEV: VDW development version
全局大小应等于 4
如果有人能指出我正确的方向...谢谢!
答案1
不要在脚本的最后一行使用 srun。只需使用 mpirun 或 mpiexec 启动可执行文件即可。
srun 的作用:启动其后命令的 $SLURM_NTASKS 实例(每个保留的 CPU 核心一个)。您不希望这样,您希望 mpiexec 将任务派生到 CPU。例如你的最后一行可以是
mpirun -np $SLURM_NTASKS ./myexecutable.exe