问题标签 [sbatch]
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.
python - 如何使用 python 命令打开我大学集群上的 .bov 文件?该程序在集群上运行并创建 .bov 文件
该程序是分开的。一旦它运行,我将.bov
文件放在另一个我称之为输出的目录中。
然后我输入,然后是模块加载allpy
,python,然后是我想要的任何 python 代码。但我不知道如何打开这些.bov
文件。
arrays - 用于相同脚本但具有不同输入参数的 SLURM sbatch 作业数组并行运行
我有一个问题,我需要启动相同的脚本但输入参数不同。
假设我有一个脚本myscript.py -p <par_Val> -i <num_trial>
,我需要为每个. N
par_values
x0
x1
par_values
M 的每次试验都几乎达到了我正在处理的集群的时间限制(而且我没有特权来改变它)。所以在实践中我需要运行NxM
独立的工作。
因为每个批处理作业都具有相同的节点/cpu 配置,并调用相同的 python 脚本,除了更改输入参数,原则上,在伪语言中,我应该有一个sbatch
脚本应该执行以下操作:
脚本的每次调用本身就是一个批处理作业。查看sbatch doc,该-a --array
选项似乎很有希望。但就我而言,我需要更改NxM
我拥有的每个脚本的输入参数。我怎样才能做到这一点?我不想编写NxM
批处理脚本,然后按照本文txt
的建议将它们列在文件中。这里提出的解决方案似乎也不理想,因为这是工作数组的情况。此外,我想确保所有脚本同时启动,并立即终止上述脚本的调用,以免与时间限制冲突,我的整个工作将被系统终止并仍然不完整(然而,因为每个NxM
NxM
作业在此限制内,如果它们并行但独立运行,则不会发生)。
dependencies - sbatch 传递依赖作业的退出代码
我有一些从 sbatch 开始的工作,例如
现在第三个作业在 a 或 b 完成后排队:
如何将任务 a 和 b 的退出状态传递给 c 的脚本?
python - 是否可以使用 SRUN 而不是 SBATCH 在后台运行 SLURM 作业?
我试图在后台运行 srun 的 slurm 作业。不幸的是,现在由于我必须通过 docker 运行事情,使用 sbatch 有点烦人,所以我试图找出是否可以一起避免这一切。
根据我的观察,每当我跑步时,说:
并关闭我运行命令的窗口(以避免接收所有打印语句)并打开另一个终端窗口以查看命令是否仍在运行,似乎我的运行脚本由于某种原因被取消或其他原因。由于它不是通过 sbatch 它不会向我发送带有错误日志的文件(据我所知)所以我不知道它为什么关闭。
我也试过:
在终端中将控制权交还给我。不幸的是,如果我这样做,它仍然会继续在我的终端屏幕上打印东西,这是我试图避免的。
本质上,我通过 ssh 登录到远程计算机,然后执行 srun 命令,但似乎如果我终止 ssh 连接的通信,则 srun 命令会自动终止。有没有办法阻止这种情况?
理想情况下,我想基本上发送脚本以运行并且不会以任何原因取消它,除非我取消它scancel
并且它不应该打印到我的屏幕上。所以我理想的解决方案是:
- 即使我退出 ssh 会话,也要继续运行 srun 脚本
- 即使关闭我发送命令的窗口,也继续运行我的 srun 脚本
- 继续运行我的 srun 脚本,让我离开 srun 会话,而不是打印到我的屏幕上(即基本上运行到后台)
这将是我的想法解决方案。
对于想知道 sbatch 问题的好奇人群,我希望能够做到(这是理想的解决方案):
但是,正如人们知道的那样,它不起作用,因为 sbatch 接收到的命令 docker 不是“批处理”脚本。本质上一个简单的解决方案(这对我的情况并不适用)是将 docker 命令包装在批处理脚本中:
不幸的是,我实际上正在使用我的批处理脚本来编码我正在运行的任务的大量信息(有点像配置文件)。所以这样做可能会影响我所做的工作,因为它们的基础文件正在改变。通过将作业直接发送到 sbatch 可以避免这种情况,因为它实际上创建了批处理脚本的副本(如本问题所述:在运行期间更改发送到 sbatch 的 bash 脚本是个坏主意?)。所以我的问题的真正解决方案是让我的批处理脚本包含我的脚本所需的所有信息,然后以某种方式在 python 中调用 docker 并同时传递所有信息。不幸的是,其中一些信息是函数指针和对象,所以我什至不清楚如何将这样的东西传递给在 python 中运行的 docker 命令。
或者也许能够直接运行 docker 到 sbatch 而不是使用批处理脚本也可以解决问题。
job-scheduling - Snakemake 在使用 --immediate-submit 选项运行时过早删除临时文件
--immediate-submit
当我使用and提交作业时--dependency=afterok:{dependencies}
,临时文件甚至在依赖临时文件的规则启动之前就被删除了。以正常方式运行时,它工作得很好。有没有其他人遇到过这个问题?
Snakemake 脚本
提交命令
Snakemake 输出消息
错误信息
作业正在以适当的依赖关系提交。../mybatch.py 是 sbatch 的自定义包装脚本。这是我的代码中的错误还是错误?我在这里先向您的帮助表示感谢。
matlab - 抑制服务器上 MATLAB 中的所有警告
我正在使用glmfit()
10 6次在服务器(使用 SBATCH slurm)上运行批处理分析,并且它不断输出在我在 local 上运行时未出现的警告文件。我收到多种警告类型
所有警告都生成在glmfit()
withwarning(message(...))
结果我无法查看我的调试输出。我warning('off','all')
在分析中包含在每个脚本的顶部,但我仍然收到多个警告输出到我写入的输出文件中
我已经尝试删除该-e
行,但仍然收到错误日志(因为它们是 MATLAB,而不是系统错误)。
slurm - Slurm:是否可以通过 sbatch 提供或更改已提交作业的 pid
当我们通过 提交作业时sbatch
,pid 到按增量顺序给出的作业。根据我的观察,这个顺序又从 1 开始。
//如果可能,目标是更改提交的批处理作业的 ID。
[Q1]比如slurm下有个正在运行的job。当我们重新启动节点时,作业是否继续运行?它的 pid 是否会更新或保持原样?
[Q2]是否可以使用集群所有者想要提供的唯一 id 提供或更改已提交作业的 pid?
感谢您宝贵的时间和帮助。
slurm - Sbatch 和 srun SLURM sch
我已经花了大约一周的时间来让 sbatch 作业脚本提交到多个节点。我有两个带有 (2)sockets (12)cores/socket (2)threads/core 的计算节点。我有一个简单的 c 程序来计算斐波那契数列(没有多线程或 mpi 只是一个单进程单核程序)。
现在我有脚本 fib.sh,其中包含 30 行“srun ./fibonacci &”,我做 ./fib.sh 第一个 12 个作业在第一个节点 1 上运行,接下来的 12 个在另一个节点 2 上运行,其余的正在等待状态这是我想要的。
但是,当我尝试使用 sbatch 获得相同的行为时,所有任务都在 node1 上运行,这不是我想要的。我使用 -n1 -N2, --cpus-per-task=1 调整了#SBATCH 标志,但没有得到想要的结果。如果有人能对此有所了解,我将不胜感激。
如果需要,以下是我的 slurm.conf 的一部分
下面是sbatch脚本
arrays - 用于相同脚本但具有不同输入字符串参数的 SLURM sbatch 作业数组并行运行
我的问题和这个类似,不同的是我的不同论点不是数字而是字符串。
如果我有一个脚本(myscript.R),它接受两个字符串作为参数:“text-a”、“text-A”。我的 sbatch 的 shell 脚本是:
现在我有几个不同的输入字符串要运行:
我想用文本组合运行 myscript.R,例如:
但如果我将它们放在同一个 shell 脚本中,它们将按顺序运行。我只知道#SBATCH -a 0-10
当参数是索引时我可以使用。如果我想同时提交四个脚本,并且每个脚本都具有完全相同的设置(尤其是每个都需要分配-c 12
),我该怎么做?
谢谢!
parallel-processing - SLURM `srun` vs `sbatch` 及其参数
我试图了解 SLURMsrun
和sbatch
命令之间的区别。我会对一般性的解释感到满意,而不是对以下问题的具体答案,但这里有一些具体的混淆点,可以作为起点,让我了解我在寻找什么。
根据文档,srun
用于提交作业,sbatch
用于提交作业以供以后执行,但我不清楚实际区别,它们的行为似乎是相同的。例如,我有一个有 2 个节点的集群,每个节点有 2 个 CPU。如果我srun testjob.sh &
连续执行 5 次,它将很好地排队第五个作业,直到 CPU 可用,就像 execution sbatch testjob.sh
.
为了使问题更具体,我认为一个好的起点可能是:有哪些事情我可以用一个做而我不能用另一个做,为什么?
这两个命令的许多参数是相同的。看起来最相关的是--ntasks
, --nodes
, --cpus-per-task
, --ntasks-per-node
。这些是如何相互关联的,它们对于srun
vs有何不同sbatch
?
一个特别的区别是,如果没有可执行权限,srun
则会导致错误,即会愉快地运行它。导致这种情况的“幕后”发生了什么?testjob.sh
chmod +x testjob.sh
sbatch
该文档还提到了脚本srun
内部常用的。sbatch
这就引出了一个问题:它们如何相互交互,它们各自的“规范”用例是什么?具体来说,我会单独使用srun
吗?