问题标签 [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.
mpi - 在通过 srun 启动的 MPI 作业中固定进程
我在 SLURM 集群上运行 MPI 作业,并希望将生成的进程固定到节点上的特定核心。这可以包括不同节点上不同数量的进程以及不同节点上不同的固定模式。如果我使用 salloc 分配节点,并为 mpi 进程构建一个等级文件并使用 mpirun 启动进程,这一切都相对容易。
不幸的是,如果分配因超时或抢占等任何原因而被撤销,则在节点上运行的进程将被杀死,但在头节点上执行的 mpirun 不会被杀死,并且从产生可忽略不计的负载变为产生 100它无限期执行的线程的负载百分比。
看起来答案是使用 srun 而不是 mpirun 来启动应用程序,但是如果我这样做,我正在努力找出如何设置进程放置。有人有什么建议吗?
cluster-computing - slurm 集群的最少计算机数量是多少
我想设置一个SLURM 集群。我至少需要多少台机器?我可以从两台机器开始(一台是客户端,一台是客户端和服务器)?
bash - 通过 sbatch 传递命令行参数
假设我有以下简单的 bash 脚本,我想通过 SLURM 提交到批处理服务器:
在这个脚本中,我只想hostname
在一个我通过命令行控制其全名的文本文件上编写输出,如下所示:
不幸的是,我的最后一个命令行参数 (1) 似乎没有通过 sbatch 解析,因为创建的文件没有我要查找的后缀,并且字符串“$1”按字面意思解释:
我环顾了SO和其他地方的地方,但我没有任何运气。本质上,我正在寻找的是等效于启用 Torque 的集群-v
中的实用程序开关。qsub
编辑:正如在底层评论线程中提到的那样,我以艰难的方式解决了我的问题:我没有将一个脚本多次提交到批处理服务器,每个脚本都有不同的命令行参数,而是创建了一个“主脚本”简单地将相同的内容回显并重定向到不同的脚本,每个脚本的内容由传递的命令行参数更改。然后我通过 . 将所有这些提交到我的批处理服务器sbatch
。但是,这并不能回答原始问题,因此我犹豫是否将其添加为我的问题的答案或将此问题标记为已解决。
parallel-processing - slurm 似乎启动了比请求更多的任务
我很难理解 SLURM 从sbatch
脚本启动作业的方式。似乎 SLURM 忽略了--ntasks
参数并srun
立即启动了我的批处理文件中的所有任务。这是一个示例,对 StackOverflow 上此答案的代码稍作修改:
因此,在我的设置中,srun echo
命令正在立即运行,而我希望它在srun sleep 10
命令完成后运行。
我正在使用 SLURM 2.6.5 在我的 8 核个人工作站上安排和提交作业,并且我自己安装了它——因此完全有可能配置失败。以下是 slurm.conf 文件中的一些相关部分:
这是printenv | grep SLURM
运行后的输出salloc --ntasks=1
我很感激任何意见或建议。如果需要更多信息,请告诉我。
谢谢阅读,
汤姆
玩了几遍后更新
我已经取得了一些进展,但我仍然没有完全得到我想要的行为。
如果我使用--exclusive
我可以获得echo
等待步骤的sleep
步骤:
和
但是,如果我正在运行一个多步骤作业,其中每个步骤都需要多个处理器,我仍然不知道如何正确执行此操作,例如
会给我12个stress
进程,也会
那么,如果我希望我的sbatch
脚本占用 6 个处理器并一次启动三个步骤,每个步骤有 2 个处理器,我该怎么办?使用正确srun --exclusive -n 1 -c 2 stress -c 2
吗?
slurm - 如何设置 SLURM 作业的节点顺序?
我有一个带有各种分区的 slurm 设置。在我的 slurm.conf 中,我有一个可以为我的分区运行作业的计算机列表,例如。
pc1 和 pc2 有 3 个内核可用,机架每个有 4 个内核。如果我一次提交 4 个作业,它将分配 3 个给 pc1 和 1 个给 pc2。我想更改这些分配的顺序。具体来说,我希望他们先上机架,然后是 pc2,然后是 pc1。
有什么想法吗?
塔,詹姆斯
python - 如何使用并行化 Python 代码在集群上使用多个节点/核心
我有一段 Python 代码,我在其中使用joblib和multiprocessing使部分代码并行运行。我在桌面上运行它没有问题,我可以使用任务管理器查看它使用所有四个内核并并行运行代码。
我最近了解到我可以访问具有 100+ 20 个核心节点的 HPC 集群。集群使用SLURM作为工作负载管理器。
第一个问题是:是否可以在集群上运行并行化的 Python 代码?
如果有可能,
我是否需要更改 Python 代码才能在集群上运行,以及
需要在作业提交文件中放入哪些#SBATCH 指令来告诉它代码的并行化部分应该在四个内核(或者是四个节点)上运行?
我有权访问的集群具有以下属性:
linux - 为什么我在使用 sbatch SLURM 时不断收到 NonZeroExitCode?
我有一个简单的 test.ksh,我正在使用以下命令运行:
批量测试.ksh
我不断收到“JobState=FAILED Reason=NonZeroExitCode”(使用“scontrol show job”)
我已经确定了以下几点:
- slurmd 和 slurmctld 已启动并正常运行
- “test.ksh”的用户权限是 777。
- 命令“srun test.ksh”(本身,不使用 sbatch)成功没有问题
- 我尝试在“test.ksh”的最后一行输入“return 0”,但没有成功
- 我尝试在“test.ksh”的最后一行输入“exit 0”,但没有成功
- 我尝试在“test.ksh”的最后一行输入“主机名”,但没有成功
- 我尝试在“test.ksh”的最后一行输入“srun hostname”,但没有成功
scripting - 设置 SGE 以在不同节点上运行具有不同输入文件的可执行文件
我曾经使用 SLURM 调度程序处理集群,但现在我或多或少被迫切换到基于 SGE 的集群,并且我正在尝试掌握它。我在 SLURM 系统上工作的事情涉及使用 N 个输入文件运行可执行文件,并以这种方式设置 SLURM 配置文件,
我在 SLURM 中的工作提交脚本包含这一行;
此设置按我的意愿工作 - 使用 10 个节点同时运行具有 10 个不同输入的可执行文件。现在我刚刚过渡到 SGE 系统,我想做同样的事情,但我尝试阅读手册,发现没有什么像 SLURM 那样。您能否告诉我如何在 SGE 系统上实现相同的目标?
非常感谢!
slurm - 为正在运行的 slurm 作业增加时间
我有一份运行由 slurm 管理的 linux 机器的工作。现在该作业运行了几个小时,我意识到我低估了它完成所需的时间,因此--time
我指定的参数的值是不够的。有没有办法通过 slurm 为现有的正在运行的工作增加时间?