SLURM 每个节点提交多个任务?

2024-04-09

我发现了一些非常相似的问题,这些问题帮助我得到了一个似乎有效的脚本,但我仍然不确定我是否完全理解为什么,因此这个问题..

我的问题(示例):在 3 个节点上,我想在每个节点上运行 12 个任务(总共 36 个任务)。此外,每个任务都使用 OpenMP,并且应使用 2 个 CPU。在我的例子中,一个节点有 24 个 CPU 和 64GB 内存。我的脚本是:

#SBATCH --nodes=3
#SBATCH --ntasks=36
#SBATCH --cpus-per-task=2
#SBATCH --mem-per-cpu=2000

export OMP_NUM_THREADS=2

for i in {1..36}; do
    srun -N 1 -n 1 ./program input${i} >& out${i} &
done

wait

这似乎按照我的要求工作,在一个节点上连续运行任务,直到该节点上的所有CPU都在使用中,然后继续在下一个节点上运行进一步的任务,直到再次使用所有CPU,等等。

我的问题..我不确定这是否真的是它的作用(?),因为我没有完全理解 srun 关于 -n 的手册页,而且我以前没有使用过 srun 。 我的困惑主要来自“-n”:在 -n 的手册页中,它说“默认情况下每个节点有一个任务,..”,所以我预计如果我使用“srun -n 1”,则只会有一个任务在每个节点上运行,情况似乎并非如此。 此外,当我尝试例如“srun -n 2 ./program”似乎只是将完全相同的程序运行两次作为两个不同的任务,无法使用不同的输入文件..我想不出为什么这会有用?


您的设置是正确的,只是您必须使用--exclusivesrun 选项(在这种情况下与sbatch).

至于你关于有用性的评论srun,可以根据环境变量改变程序的行为$SLURM_TASK_ID,或 MPI 程序的排名。您的困惑源于这样一个事实:您的程序没有编写为并行的(除了 2 个 OMP 线程),而srun旨在启动并行程序,大多数时候基于MPI https://en.wikipedia.org/wiki/Message_Passing_Interface.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SLURM 每个节点提交多个任务? 的相关文章

  • 如何优化2个相同的内核,占用率50%,可以在CUDA中同时运行?

    我在 CUDA 中有 2 个相同的内核 报告理论占用率为 50 并且可以同时运行 但是 在不同的流中调用它们会显示顺序执行 每个内核调用的网格和块尺寸如下 Grid 3 568 620 Block 256 1 1 With 50 regis
  • 在 Typescript 中实现 Bull 队列

    我尝试在 Typescript 和 NestJS 中实现 Bull 队列 我的代码 Injectable export class MailService constructor InjectQueue mail private reado
  • Slurm:为什么在 sbatch 中使用 srun?

    在 sbatch 脚本中 您可以直接启动程序或脚本 例如可执行文件myapp 但在许多教程中人们使用srun myapp反而 尽管阅读了有关该主题的一些文档 我不明白其中的区别以及何时使用这些语法 我希望这个问题足够精确 SO的第一个问题
  • Mvapich2 缓冲区别名

    我使用 MAPICH2 启动 MPI 程序并收到此错误 Fatal error in PMPI Gather Invalid buffer pointer error stack PMPI Gather 923 MPI Gather fai
  • 在 SLURM 中运行没有顶级脚本的二进制文件

    在 SGE PBS 中 我可以像在本地一样向集群提交二进制可执行文件 例如 qsub b y cwd echo hello 将提交一个名为 echo 的作业 该作业将单词 hello 写入其输出文件 我如何向 SLURM 提交类似的工作 它
  • 在 IBM Cloud 上使用 Spectrum LSF 管理数据

    在 IBM Cloud 上使用 Spectrum LSF 管理数据 在云环境中处理 HPC 工作负载时 要解决的一个关键挑战是如何以最佳方式管理运行工作负载所需的数据 以及可能需要分析以进行进一步处理和决策的输出 通过使用部署在 IBM C
  • MVC3 网站内的作业调度程序

    我正在寻找一些指导 以获取在我的 MVC3 网站内部使用的作业计划程序设置 我一直在寻找 Quartz NET 来解决这个问题 但在网上找不到有关设置的指导 以确保它在网站运行时运行 考虑到上述信息 我知道在 IIS 中设置作业调度程序有几
  • 使用 MPI 和 openMP 并行运行代码时扩展性较差

    我有以下实现 int main int argc char argv int n runs 100 Number of runs int seed 1 int arraySize 400 initialise the random numb
  • onStartJob 和 onStopJob 无法在 android 中运行后台线程

    实际上我想使用 JobScheduler 进行通知 无论应用程序是否处于活动状态 我是 android 新手 首先只是尝试运行后台 AsyncTask 来检查它是否工作正常 但它不起作用 这是我的 JobService 代码 public
  • 如何检索 slurm 脚本的内容?

    我几天前提交了一份工作 现在仍在运行 但我忘记了内容script sh那天 还有script sh已被删除 您知道如何恢复该脚本的内容吗 在最新版本中 您可以使用以下命令检索您自己作业的作业脚本 scontrol write batch s
  • 从intentservcie回调到jobservice

    我有一个作业调度程序 可以触发 Jobservice 的 onStartjob 在 onStartJob 中 我启动一个意图服务来完成工作 工作完成后 我希望intentservice对jobservice进行回调 以便可以调用onjobf
  • OpenMP 和 C++11 多线程

    我目前正在从事一个混合高性能计算 HPC 和交互性的项目 因此 HPC 部分依赖于 OpenMP 主要是具有大量相同计算的 for 循环 但它包含在具有 GUI 和多线程的更大框架中 目前通过 c 11 线程实现 std thread an
  • Firebase jobdispatcher 未在指定窗口内触发

    我正在实施 Firebase Jobdispatcher 触发时间指定在 10 到 20 秒之间 这是我安排工作的代码 public static void scheduleCompatibleJob Context context Fir
  • 用累积值表示设置时间

    调度问题有很多系列 我正在研究一个问题 我有一系列的工作 任务 需要从一个家庭过渡到另一个家庭 需要重新配置机器 设置时间 我在用着cumulatives 2 3 解决这个问题 但我不确定设置时间如何 可以表达 在这个小例子中 我有 10
  • --ntasks 或 -ntasks 在 SLURM 中起什么作用?

    我正在使用SLURM http slurm schedmd com 使用一些计算集群 它有 ntasks or n 我显然已经阅读了它的文档 http slurm schedmd com sbatch html http slurm sch
  • 如何获取 SLURM 作业所用脚本的原始位置?

    我正在使用脚本启动 SLURM 作业 并且脚本必须根据其在脚本本身内部获取的位置来工作SCRIPT LOCATION realpath 0 但 SLURM 将脚本复制到slurmd文件夹并从那里开始工作 这会搞砸进一步的操作 在移动 复制之
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft
  • 为了实现快速读/写性能(在 Python/pandas 中),推荐的 HDF5 压缩是多少?

    我曾多次读到 在 HDF5 中打开压缩可以带来更好的读 写性能 我想知道什么理想的设置可以在以下位置实现良好的读 写性能 data df to hdf format fixed complib complevel chunksize 我已经
  • MPI_Isend 和 MPI_Irecv 似乎导致死锁

    我在 MPI 中使用非阻塞通信在进程之间发送各种消息 然而 我似乎陷入了僵局 我用过PADB see here http padb pittman org uk 查看消息队列并得到以下输出 1 msg12 Operation 1 pendi
  • 如何每天在特定时间触发 akka 调度程序?

    我创建了一个 Akka 的调度程序 每天在固定时间发送邮件 例如每天上午 6 00 那么如何称呼演员呢 我的意思是我应该使用什么逻辑 谢谢 只需计算现在和接下来的下午 6 点之间的差异 将其作为初始延迟 然后每 24 小时重复一次

随机推荐