多节点SLURM纯python解决方案

多节点SLURM纯python解决方案,python,nodes,slurm,Python,Nodes,Slurm,我正在从事一个项目,在SLURM集群上执行多节点python脚本。解决方案应该是p2p。问题是我真的不知道从哪里开始。不过,我应该先广播,对吗?找出哪些节点分配给我的作业(4个节点),然后利用每个节点的1/4部分作业(?)。每个节点都必须跟踪作业的哪一部分已经完成,对吗?我听到有人提到一个基于文件的解决方案,但我不太明白。希望你们能帮我。而且,不应该使用MPI或类似的东西 (我应该提交的工作是读取一个大文件,并处理该文件的每一行)你说总体任务是读取一个大文件并处理每一行 首先,你需要一个划分工作

我正在从事一个项目,在SLURM集群上执行多节点python脚本。解决方案应该是p2p。问题是我真的不知道从哪里开始。不过,我应该先广播,对吗?找出哪些节点分配给我的作业(4个节点),然后利用每个节点的1/4部分作业(?)。每个节点都必须跟踪作业的哪一部分已经完成,对吗?我听到有人提到一个基于文件的解决方案,但我不太明白。希望你们能帮我。而且,不应该使用MPI或类似的东西


(我应该提交的工作是读取一个大文件,并处理该文件的每一行)

你说总体任务是读取一个大文件并处理每一行

首先,你需要一个划分工作的策略。如果磁盘速度非常慢,网络速度非常快,让一个进程读取整个文件,然后将其发送给其他进程可能是有意义的,但更可能的情况是,您希望分配读取任务

您通常可以在流程之间不进行显式通信的情况下执行这些操作。只需让第一个进程读取文件的前25%字节,然后继续读取,直到它看到更多的换行符。第二个进程读取文件中25%到50%的内容,然后继续执行,直到看到更多的换行符。等等

这样,您只需在启动时告诉流程三个事实:

  • 文件路径
  • 将处理文件的进程数(N)
  • 每个特定进程(0到N)的索引,以便推断要读取的部分

  • 的确但是我已经有你在清单上列出的东西了。问题是SLURM随机为我的作业分配了4个节点。现在,我必须弄清楚,在python内部,哪些节点分配给了我的作业,然后运行主脚本,为每个节点分配作业的一部分。然后,客户端脚本将分别完成20%的任务。那么,如何将节点列表检索到python中?@ReneBults:启动一个包含4个任务的SLURM“array job”。然后从Python中阅读
    os.environ['SLURM\u ARRAY\u TASK\u ID']
    ,了解它是哪个任务。