问题标签 [slurm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2214 浏览

config - 配置 SLURM,因此它需要用户指定 --account

我试图弄清楚如何配置 SLURM,以便用户在使用 SLURM 命令(salloc、sbatch、srun)时需要指定 --account。实际上,我想禁用默认帐户行为。

有没有人找到一个简单的方法来做到这一点?

0 投票
1 回答
272 浏览

memory - 在 shell 脚本文件中多次唤醒

我将一个批处理文件发送到一个 slurm 集群,该集群 awks 相同 infile 的字段并附加到输出。前几行有效,但随后突然死亡。它在第二次回响之前就死了。如果有人会调试或向我展示更好的脚本会很好,但我想知道为什么(或是否)bash 文件在一遍又一遍地执行相同的工作时会崩溃。

错误信息:

slurmstepd:get_exit_code 任务 0 因信号而死

字段 12-15 的示例:

0 投票
1 回答
1391 浏览

linux - sacct 中未显示待处理的 slurm 工作

我遇到了slurmwheresacct不显示待处理作业的问题。在下面,您可以看到该工作110061没有出现在 中,sacct但显然在squeue. 关于为什么会发生这种情况的任何想法?

- 编辑 -

这是的输出scontrol show config | grep Acc

0 投票
1 回答
2606 浏览

c++ - 如何将 sbatch 与 SLURM 和 makefile 一起使用?

我正在尝试向 SLURM 提交批处理作业,但我不断收到JobState=FAILED Reason=NonZeroExitCode. 我可以在常规 g++ 上编译和运行代码,但我必须使用 SLURM 来完成学校作业。我以为我正在正确运行它们,并且我从根目录中得到了一个讨厌的语法,告诉我退出在登录节点上运行的脚本。任何帮助,将不胜感激。这是我的批处理文件和我的 Makefile:

生成文件:

0 投票
3 回答
29180 浏览

cluster-computing - 如何从 SLURM 中的节点列表向任何 [子集] 节点提交作业?

我有几千个作业要在具有 16 个节点的 SLURM 集群上运行。这些作业应该只在大小为 7 的可用节点的子集上运行。一些任务是并行的,因此使用单个节点的所有 CPU 能力,而其他任务是单线程的。因此,多个作业应该在单个节点上同时运行。任何任务都不应该在多个节点上产生。

目前我提交的每个工作如下:

但是,此参数使 slurm 等待提交的作业终止,因此使 3 个节点完全未使用,并且根据任务(多线程或单线程),当前活动节点也可能在 CPU 能力方面处于低负载状态.

sbatch强制 slurm 在指定节点上同时运行多个作业的最佳参数是什么?

0 投票
3 回答
3377 浏览

linux - Matlab:-maxNumCompThreads、超线程和 parpool

我在 Linux 集群中的一个节点上运行 Matlab R2014a,该集群具有 20 个内核并启用了超线程。我知道这之前已经讨论过,但我正在寻找一些澄清。以下是我对 Matlab 中线程与内核问题的理解:

  • Matlab 具有固有的多线程功能,并将在多核机器上使用额外的内核。
  • Matlab 以这样一种方式运行它的线程,即把多个 Matlab 线程放在同一个核心上(即超线程)是没有用的。因此,默认情况下,Matlab 将创建的最大线程数是您系统上的内核数。
  • 使用 parpool() 时,无论您创建多少个 worker,每个 worker 将只使用一个物理内核,如本线程所述。

但是,我还读到使用(已弃用)函数 maxNumCompThreads(),您可以减少或增加 Matlab 或其中一名工作人员将生成的线程数。这在几种情况下很有用:

  1. 您想利用 Matlab 的隐式多线程功能在集群节点上运行一些代码,而无需分配整个节点。如果 maxNumCompThreads 曾经被删除,如果有其他方法可以做到这一点,那就太好了。
  2. 您想要进行参数扫描,但参数少于机器上的内核数。在这种情况下,您可能希望增加每个工作人员的线程数,以便利用所有内核。这是最近在这个线程中提出的. 然而,根据我的经验,虽然个别工作人员似乎很乐意使用 maxNumCompThreads() 来增加他们的线程数,但使用“top”命令检查实际 CPU 使用率表明它没有任何效果,即每个工作人员仍然只有可以使用一个核心。发生的事情可能是 parpool 生成的各个 Matlab 进程使用参数 -singleCompThread 运行。我已经确认,如果父 Matlab 进程使用 -singleCompThread 运行,则命令 maxNumCompThreads(n),其中 n > 1 由于 Matlab 在单线程模式下运行而引发错误。所以结果似乎是(至少在 2014a 年),您无法增加并行池工作者的计算线程数。与此相关的是我可以 似乎没有让父 matlab 进程启动比内核更多的线程,即使计算机本身启用了超线程。同样,它将愉快地运行 maxNumCompThreads(n),其中 n > # 个物理内核,但 top 显示 CPU 利用率为 50% 的事实表明并非如此。那么发生了什么,或者我误解了什么?

编辑:更明确地提出我的问题:

  1. 在 parfor 循环中,为什​​么不设置 maxNumCompThreads(n),当 n > 1 似乎工作?如果是因为工作进程是用-singleCompThread 启动的,为什么maxNumCompThreads() 不像在以-singleCompThread 启动的父进程那样返回错误?
  2. 在父进程中,为什么不使用 maxNumCompThreads(n),其中 n > # 物理核心,做任何事情?

注意:我之前在 Matlab 答案上发布了这个,但没有收到任何反馈。

Edit2:看起来(1)中的问题是我使用的测试代码的问题。

0 投票
1 回答
386 浏览

multithreading - slurm中Matlab的物理与逻辑核心分配

我是 slurm 集群上的用户,该集群被配置为考虑每个物理内核都有两个 CPU 进行分配。默认情况下,Matlab 每个物理内核最多生成一个线程,因为 Mathworks 已确定 Matlab 使用超线程没有任何好处。那么我是否适合为每个任务/parpool 工作程序请求两个 CPU,即使我只会生成一半的线程数?例如,如果我有一份需要 10 名工人的工作,我会说-c 20

0 投票
1 回答
163 浏览

scheduling - 是否可以修改或添加层到 SLURM 调度

我是使用 SLURM 的计算集群上的非付费用户。

有时,我有长时间运行的多个工作,这些工作阻塞了付费用户的队列。由于这个原因,我的工作被管理员取消了。目前,我对可用的节点数量设置了上限。虽然我不反对这种安排的公平性,但就完成工作而言,这对我来说是个问题,特别是因为我看到没有运行任何作业的空闲节点,而我只是坐等作业通过节点上限……

以此作为背景信息,这是我的两个问题:

  1. 管理员是否可以暂停然后恢复作业 - 一个作业,或用户的所有作业,或一组作业?从管理员的角度来看,这是否暂停/恢复繁重?

  2. 我想应该可以创建付费与非付费用户的列表。并且当付费用户名使用 sbatch 提交时,自动指示 SLURM 暂停非付费用户名的一个或多个工作,并在付费用户的工作完成后恢复。这甚至可能吗?如果是,是否超出了常规 SLURM / 农场管理员的技能范围?

有人可以建议任何其他解决方案(如果我上面的问题是不合理或荒谬的)?

谢谢!

0 投票
2 回答
2812 浏览

batch-processing - End batch job before kill via walltime

I am running a batch job with SLURM. The process I start in the jobfile is iterative. After each iteration, the program can be killed softly by creating a file called stop. I would like such a stop command to be issued authomatically one hour before the job is killed via the walltime limit.

0 投票
2 回答
196 浏览

parallel-processing - 如果我运行的子作业多于分配的核心数会怎样

所以我有一个 sbatch(slurm 作业调度程序)脚本,我在其中通过 3 个脚本处理大量数据:foo1.sh、foo2.sh 和 foo3.sh。

foo1.sh 和 foo2.sh 是独立的,我想同时运行它们。foo3.sh 需要 foo1.sh 和 foo2.sh 的输出,所以我正在构建一个依赖项。然后我必须重复 30 次。

让我们说:

这个想法是您启动 foo1_1 和 foo2_1 但由于 foo3_1 必须等待其他两个作业完成,我想进行下一次迭代。下一次迭代将启动 foo1_2 foo2_2 并且 foo3_2 将等待等等。

在某个时候,使用 srun 启动的子作业的数量将高于 --ntasks=30。会发生什么?它会等待之前的工作完成(我正在寻找的行为)吗?

谢谢