对 slur 很陌生。如何让 slurm 在我的 Linux 集群上运行多个核心作业?

对 slur 很陌生。如何让 slurm 在我的 Linux 集群上运行多个核心作业?

我一直在尝试将一些现有进程移至改进后的 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

相关内容