在 slurm 中跨节点分发 python 代码

问题描述 投票:0回答:1

我有一个计算成本高昂的模拟函数,我希望将其分布到多节点集群上。代码看起来像这样:

input_tasks = [input_0, input_1, ..., input_n]
for i in input_tasks:
    expensive_function(i)

我正在从具有高计算能力的节点运行代码,并且希望将函数输入分发到具有不同计算能力的许多节点。最高的计算节点应该优先,并且如果空闲,总是接下一个任务。下面写了我想要做的伪代码。

input_tasks = [input_0, input_1, ..., input_n]
available_nodes_ranked_by_compute = [node_0, node_1, ..., etc]
While(input_tasks): 
   i = input_tasks.pop(0)
   #get best current node or wait for a node to free up
   node_i = available_nodes_ranked_by_compute.pop(0)
   expensive_function(i, node_i)
   #add node back to avaiable node list when its done
   available_nodes_ranked_by_compute.append(node_i)
   #re-sort available nodes by compute 
   

我对分布式计算和SLURM的使用相对较新,所以我不确定如何检查当前是否正在使用特定节点。我想要一种方法来维护动态列表/堆,以维护集群上当前未使用的节点,以便我可以使用它来执行所有任务。有没有基本的方法来做到这一点?

python partitioning distributed-computing slurm hpc
1个回答
0
投票

您可以直接从终端/控制台使用

sinfo
进行检查,它将显示所有节点,您可以提交作业,slurm 将根据作业的优先级分配/排队作业https://slurm.schedmd。 com/sinfo.html

© www.soinside.com 2019 - 2024. All rights reserved.