问题标签 [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.

0 投票
1 回答
1278 浏览

python - 在迭代列表中的项目的 python 脚本中使用 slurm 创建作业

背景:
我编写了一个 python 脚本来将文件从格式转换为另一种格式。此代码使用文本文件 ( subject_list.txt) 作为输入,并遍历该文本文件中列出的源目录名称(数百个目录,每个目录包含数千个文件),转换它们的内容并将它们存储在指定的输出目录中。

问题:
为了节省时间,我想在高性能集群 (HPC) 上使用此脚本并创建作业以并行转换文件,而不是按顺序遍历列表中的每个目录。

我对 python 和 HPC 都很陌生。我们的实验室以前主要用 BASH 编写,无法访问 HPC 环境,但我们最近获得了 HPC 的访问权限,并决定切换到 Python,所以一切都很新。

问题:
python 中是否有一个模块可以让我在 python 脚本中创建作业?我找到了关于多处理子进程python 模块的文档,但我不清楚我将如何使用它们。还是我应该采取不同的方法?我还在 stackoverflow 上阅读了一些关于一起使用 slurm 和 python 的帖子,但是我被太多的信息和没有足够的知识来区分要拾取的线程所困扰。任何帮助是极大的赞赏。

环境:
HPC:Red Hat Enterprise Linux Server release 7.4 (Maipo)
python3/3.6.1
slurm 17.11.2

管家部分代码:

我坚持的部分:

编辑 1:
dcm2niix 是用于转换的软件,可在 HPC 上使用。它采用以下标志和路径-o -b y ouputDirectory sourceDirectory

编辑2(解决方案):

0 投票
2 回答
1449 浏览

slurm - How to update job node number in Slurm?

I have a pending job and I want to resize it. I tried:

#xA;

It does not work.

Note: I can change the walltime using scontrol. But when I try to change number of nodes, it failed. It looks like I can change the nodes according to this page http://www.nersc.gov/users/computational-systems/cori/running-jobs/monitoring-jobs/.

0 投票
1 回答
1953 浏览

cluster-computing - 如何获取任务 A 节点的 IP/主机名并通过 SLURM 传递给任务 B?

我有一个(本土)集群网络基准测试,我正在尝试使用 SLURM 调度程序运行。基准测试使用标准的客户端/服务器架构,该架构在启动时需要客户端可执行文件的服务器 IP 地址(或主机名)参数。

通常我会编写一个服务器脚本,它将 grep 主网卡的地址并将信息删除到共享文件系统上,但 AFAIK 不会在集群节点上工作。我也知道有一个 SLURM_JOB_NODELIST 环境变量允许脚本从我的 sbatch 脚本中查看集群中所有节点的列表,但我看不出这在这种情况下有什么用处。

如何确定调度程序选择哪个节点来运行基准服务器并将该信息在启动之前/启动时传递给客户端任务?

0 投票
1 回答
178 浏览

r - 在没有 R 文件的情况下在 shell 中并行运行 R 代码

我有以下 .sh 文件,可以使用 sbatch 在集群计算机上运行:

壳牌.sh

我的问题是 MyFile.R 和 MyFile2.R 看起来几乎一样:

我的文件

我的文件2.R

事实上,我需要为大约 100 个文件执行此操作。由于它们都加载了一些 R 文件,然后使用不同的参数运行实验,我想知道是否可以在不为每次运行创建新文件的情况下执行此操作。我想并行运行所有进程,所以我认为我不能只创建一个 R 文件。

我的问题是:是否有某种方法可以直接从 shell 运行该进程,而无需为每次运行创建一个 R 文件?所以我可以做类似的事情

而不是shell.sh的最后三行?

0 投票
1 回答
4564 浏览

slurm - 在文件输出中使用 SBATCH 作业名称作为变量

使用 SBATCH,您可以使用以下语法在自动生成的输出文件中使用作业 ID %j

我一直在寻找一种类似的语法来使用作业名称而不是作业 ID。有没有人可以参考%j样式语法中可以引用的其他 slurm/sbatch 值?

0 投票
2 回答
2527 浏览

slurm - slurm:如何在另一个用户下提交作业并防止读取其他用户的文件?

基于以下线程;我正在尝试在另一个用户下发送工作。

我以main_user, 和 slurm 作业的身份登录,main_user这样做rm -rf /home/main_user是非常危险的。

为了防止这种情况,我想在main_user's 目录下的另一个用户的权限下运行作业。我认为,如果我能够设法通过 new created 提交作业user,则该用户无权更改我的任何文件,期望用户正在运行他的作业的文件夹。

创建新用户:

Approach_1:在 main_user 的目录下以 newUser 身份运行:

Approach_2:在目录下新创建的用户文件夹中运行作业home


但现在我收到以下待处理消息:


更新:

我试图通过使用@Dmitri Chubarov 的评论在另一个用户下提交工作:sudo su - newuser ; sbatch run.sh

这似乎是解决方案。在我这样做sudo su - newuser之后sbatch run.sh ,它会阻止newuser源代码更改其他用户的文件夹。


另外,我只是想防止用户不访问任何其他用户存储的任何重要数据。chmod go-rwx /home/*chmod 700 ~/*使其他用户的文件夹无法访问;这可能是一个有用的解决方案吗?

0 投票
1 回答
920 浏览

slurm - 将系统变量插入 SBATCH

我想问你是否可以将全局系统变量传递给#SBATCH 标签。

我想做一些这样的想法

批次文件

这不是workink,所以这就是我问你的原因。

0 投票
2 回答
366 浏览

arrays - Slurm Array Job:可能在同一节点上输出文件?

我有一个具有四个节点 A、B、C 和 D 以及 Slurm 版本 17.11.7 的计算集群。我正在为 Slurm 阵列工作而苦苦挣扎。我有以下 bash 脚本:

该脚本生成以下文件:

  • 输出_*txt,
  • 错误_*txt,
  • 根据 ${SLURM_ARRAY_TASK_ID} 命名的文件

我在我的计算集群节点 A 上运行 bash 脚本,如下所示

500 个作业分布在节点 AD 之间。此外,输出文件存储在节点 AD 上,相应的阵列作业已在其中运行。在这种情况下,例如,大约 125 个“output_”文件分别存储在 A、B、C 和 D 上。

有没有办法将所有输出文件存储在我提交脚本的节点上,在这种情况下,在节点 A 上?也就是说,我喜欢将所有 500 个“output_”文件存储在节点 A 上。

0 投票
1 回答
149 浏览

r - R 脚本在外部集群上运行而没有性能提升

我正在使用一种主题建模方法,该方法在我的 RStudio 计算机上运行良好,但它需要很长时间。所以我使用的是linux集群。但是,我似乎也要求很多容量,它并没有真正加快速度:

对不起,我是新手......所以这就是我在选美外壳中使用的:

我很确定有某事。我的输入有误,因为:

  • 它并不是真的更快(但我的 R 代码当然也可能很慢 - 所以我尝试了具有不同计算类型的各种 R 代码)
  • 无论我使用的是 1 还是 200 个节点,相同 R 脚本的计算都需要几乎完全相同的时间(不过应该至少有 244 个节点)
  • 回显结果未提供完整信息,并且我没有收到电子邮件通知

所以这些是我的典型结果:

有人可以帮忙吗?太感谢了!

编辑: 正如 Ralf Stubner 在他的评论中指出的那样,我不在 R 代码中进行并行化。我完全不知道该怎么做。这是一个示例计算:

...以及缩短的“真实代码”:

0 投票
1 回答
57 浏览

python - 如何告诉 slurm 缓存配置文件以进行多次提交

我有三个脚本:

config.yaml并且script.pyslurm.sh

我正在Slurm使用slurm.sh调用script.py文件的文件将作业提交给作业调度程序,并且script.py文件从文件中加载配置config.yaml

它看起来像这样:

sbatch slurm.sh

现在,我更改config.yaml并提交另一份工作。但是,如果两个作业都在队列中,则config.yaml文件将被覆盖,并且两个作业将使用相同的配置。

有没有办法告诉slurm调度程序也缓存config.yaml文件?我知道这不是slurm.sh文件。