我正在try 使用Slurm在我的集群(单 node )上并行运行多个命令. 这是我的情况:

  • 我有N个命令要运行
  • 我的群集中有M个物理核心(M=4)

由于每个命令都需要一个物理核心和M<N,我希望最多只能同时执行M个命令.

问题是,当我运行sbatch命令时,所有N个命令都会执行.我try 使用--ntasks参数,但没有成功.可能我使用了错误的Slurm参数.

这是我正在使用的文件:

############# file name: ./run_parallel_commands.sh #############
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=1G

./command-1 &
./command-2 &
# ...
./command-N &
wait

并且它在运行时被执行:

$ sbatch ./run_parallel_commands.sh

有什么建议吗? 提前谢谢您.

推荐答案

您就快到了;您拥有的参数应该没有问题.需要做的只是命令的执行.您必须使用srun命令执行任务.

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=4
#SBATCH --mem-per-cpu=1G

srun ./command-1 &
srun ./command-2 &
# ...
srun ./command-N &
wait

Linux相关问答推荐

我想显示包含一个方括号的行,方括号可以是开括号,也可以是闭括号.

Linux 'column' 实用程序的使用

如何在具有多种可能性的linux shell中获取最大值和最小值?

如何使用 gdb 调试堆栈分段错误?

8 个半小时范围的 Crontab 表达式

仅显示 tcsh 或 bash 中作为符号链接的文件和文件夹

使用带有 gnome-keyring 的 Git 凭证助手作为 Sudo 时出错

如何构建在 Android 上运行的本机(命令行)可执行文件?

如何在 linux 'screen' 中搜索任何单词

如何告诉 CMake 将构建文件放在哪里?

如何从 linux 的命令行将 Sublime Text 2 文件打开到选项卡,而不是新窗口

为 django 项目安装 memcached

将 CMake 项目导入 Eclipse CDT

Docker Volume 没有挂载任何文件

如何设置errno值?

Linux命令将一个文件复制到多个文件

在 shell 脚本的 for 循环中迭代行而不是单词

bash / Makefile中双美元符号的含义是什么?

网络共享文件夹上的 GIT 存储库中的并发性

在linux中根据内容拆分文件