- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近在看 this post关于mpirun
对比mpiexec
和 this post关于srun
对比sbatch
, 但我想知道如何 mpirun
与 slurm 和 srun
有关.
通常在我看到的例子中,文件被发送到 sbatch
有srun <program>
在它们中执行 MPI 程序,但我有时会看到使用 mpirun
的程序或 mpiexec
反而。但是,我不明白为什么要这样做。如 another question I recently asked 中所示, 似乎使用 mpirun
或 mpiexec
可能会产生各种(依赖于实现?)错误,没有理由不使用 srun
.
这是否准确,或者您是否有充分的理由想要使用 mpirun
或 mpiexec
而不是 srun
在 slurm 管理的集群上执行程序?
最佳答案
这个问题在很大程度上取决于您使用的 MPI 的风格及其与 SLURM 的集成。
就我自己而言,我完全理解这是个人偏好的问题,我想说的是,必须在众多不同的集群和环境中穿梭,我会尽量减少可变性的范围。因此,如果 SLURM 在我运行的集群上可用,我将尝试通过 SLURM 和 sbatch 对我的代码进行所有运行时调整,并让 MPI 继承它们。
为此,我将定义我想要什么以及我希望如何从我的 #SBATCH
提交我的 MPI 代码提交参数:节点数、每个进程的核心数、每个节点的进程数等。然后,MPI 启动有望通过 mpirun、mpiexec 或 MPI 库提供的类似命令尽可能简单。例如,大多数(如果不是全部)最近的 MPI 库可以直接检测到作业已在 SLURM 中提交并继承 SLURM 的进程放置,而无需任何额外的工作。通常,例如对于 Intel MPI,我会使用 mpirun -bootstrap slurm <mycode>
并且所有进程都按预期放置。事实上,这个-bootstrap slurm
选项甚至可能不是必需的,但我保留它以防万一。
相反,使用 srun
而不是图书馆的 mpirun
或 mpiexec
将要求 MPI 代码已与 SLURM 的流程管理库链接。这可能是也可能不是这种情况,所以这可能会或可能不会做你想要的。但更重要的是,即使它确实有效,与仅使用 MPI 默认启动器相比,它不会给您带来任何额外的优势,因为 SLURM 在通过 sbatch
提交作业时已经完成了流程管理。 .所以对我来说,除了极少数快速和脏测试的情况外,每当 SLURM 用于批处理调度时,srun
不使用,而是 MPI 的 mpirun
或 mpiexec
默认命令。
关于mpi - slurm 管理的集群上 mpirun 的任何用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51300165/
我在 slurm 中使用 sbatch 运行了很多作业,如下所示: #!/usr/bin/env python #SBATCH --job-name=Python #SBATCH --array=1-
我想让安排作业的用户使用 -t, --time= 列出任何作业时间限制.但是,当用户没有设置时间限制时,我想强加一个默认时间限制,例如 1 小时。我在 slurm.conf 中找不到任何设置来执行此操
例如,您需要运行30个srun作业,但要确保每个作业都在特定节点列表中的一个节点上运行(具有相同的性能,以公平地比较时序)。 你会怎么做? 我试过的 srun --nodelist=machineN[
据我们所知,SLURM 可以在作业完成时发送电子邮件。 除此之外,类似于作业完成时的邮件机制: [问] SLURM 是否可以在任何作业完成时触发脚本(由前端 SLURM 用户实现)? 示例解决方案:这
有没有办法找出作业被 slurm 取消的原因?我想将达到资源限制的情况与所有其他原因(如手动取消)区分开来。如果达到资源限制,我也想知道是哪一个。 最佳答案 slurm 日志文件明确包含该信息。它还会
我观察到当我运行 SLURM 作业时,它可以在其他文件夹路径上创建文件,也可以删除它们。他们可以通过 SLURM 作业访问其他文件夹/文件并对其进行更改,这似乎很危险。 $ sbatch run.sh
我想为 slurm 中的批处理作业指定每个内核的最大内存量 我可以看到两个 sbatch 内存选项: --mem=MB maximum amount of real memory per n
我知道对于特定的工作 ID,我可以使用 scontrol hold $JOBID。 如何保留多个 ID 的作业或/和保留一系列作业 ID 的作业(例如 scontrol hold 294724-294
我对 cpu 如何与内存通信知之甚少,所以我不确定这是否是一个“正确”的问题。 在我提交给 slurm 集群的作业脚本中,该脚本需要从存储在工作字典中的数据库中读取数据。我想监视运行此脚本所使用的内存
我正在整理一个 snakemake slurm 工作流程,并且我的工作目录被 slurm 输出文件弄得杂乱无章。我希望我的工作流程至少将这些文件定向到我的工作目录中的“slurm”目录。我目前的工作流
我正在努力理解如何使用 SLURM 在同一节点中运行多个进程。 假设我想运行一个具有 100 个不同输入参数的程序。例如,这就是我在笔记本电脑上所做的: for i in `seq 100`; do
sinfo仅显示当前状态( alloc 、 idle 等)和 Slurm 节点的时间限制。 squeue似乎只显示用户自己提交的作业,而不显示其他用户提交的作业。 有没有办法知道其他用户分配的节点何时
我有一个需要处理的文本文件列表(约 200 个文件)。所以我试图为此任务提交一个 slurm 作业数组,但我找不到解决方案。我尝试过的是通过循环遍历文件来提交多个作业(约 200 个作业)来完成一个任
我知道如何使用 cgroups(分配内存、cpu 使用...)和 slurm(提交、暂停/停止工作)。我想知道 cgroups 如何与 slurm 一起工作。当我向 slurm 提交作业时,我可以在哪
我有一堆作业在 slurm 中作为数组作业运行: 123_[1-500] PD my_job 0:00 me 123_2 R my_job 9:99 me 123_3 R
作为管理员,我需要为给定的工作赋予最大的优先级。 我发现提交选项如:--priority=或 --nice[=adjustment]可能有用,但我不知道我应该为它们分配哪些值,以便为工作提供最高优先级
我想提交一个数组作业来处理 100 个任务,每个任务只使用一个 CPU。我可以访问具有 10 个节点和 24 个内核的集群,每个节点都激活了超线程。我用 --array=1-100%24 限制并发作业
我有一些脚本发送到我可以使用 sbatch 访问的集群。但是,我想暂停这些正在运行的脚本,而不必取消它们的工作,因为它们已经运行了一段时间。 有没有办法在不取消他们已经完成的工作的情况下暂停/暂停当前
我有一份运行由 slurm 管理的 Linux 机器的工作。现在作业已经运行了几个小时,我意识到我低估了它完成所需的时间,因此我指定的 --time 参数的值不够。有没有办法通过 slurm 为现有正
是否可以扩展 SLURM 中命令 sacct 的 JobName 列中使用的字符数? 例如,我目前有: JobID JobName Elapsed NCPUS
我是一名优秀的程序员,十分优秀!