slurm:Slurm 作业的源代码及其依赖文件应该存储在哪里?

slurm: Where should the source code of Slurm job along with its dependent file should be stored?

[Q] 我的源代码大小为 10 MB,但它取决于 1GB 的文件。我只是想知道 Slurm 作业的源代码及其依赖文件应该存储在哪里?如果由管理员负责,建议采用哪种方法?有没有关于这个的文档?

比如我有一个控制器,后面有10个计算节点运行。

(case-1) 如果job的源代码存储在controller的存储中,当我们通过sbatch提交job时,源代码是否传输到计算节点,当job更新任何将写入的文件时回到控制器的本地存储? ,因此控制器和计算节点之间应该有文件传输,这可能 I/O 使用率很高。

(case-2) 如果有多个计算节点,因为当我提交我的工作时他们动态选择,我应该将源代码写入他们所有的本地存储吗?

(case-3),所有计算节点都应该快速访问共享内存吗?

一个计算集群通常有多个文件系统(存储文件的存储位置)可供用户访问,具有不同的范围和目的。例如:

  • 一个'home'文件系统,由所有计算节点共享,为稳定性(备份、高可用性等)而构建,用户可以在其中存储他们的代码、配置文件等

  • 一个'scratch'文件系统,由所有计算节点共享,为性能而不是稳定性而构建(并行文件系统,无备份等)

  • 一个'TMP'文件系统,所有节点不同,用于临时文件,通常在每个作业后清理

对于 10 节点集群和一个控制器,您应该至少将存储从控制器导出到具有 NFS 的计算节点。您可以将所有文件存储在那里。如果jobs只是在开始的时候顺序读取数据,那应该没问题。

如果作业在整个作业过程中随机读取数据,您可以将数据复制到计算节点的本地磁盘上。或者,您可以在计算节点上安装一个 BeeGFS 文件系统,将所有磁盘集中到一个系统中,以便可以从所有节点访问文件,并为每个节点配置副本。

如果作业在其生命周期内随机写入大量数据,它们应该写入本地节点存储,然后在作业结束时复制回主文件系统。