我想知道是否有适合这种情况的框架。
例如,我有3个从属计算机,10个处理任务,每个任务都有一定的处理时间,并且任务之间存在处理依赖性。因此,如何有效地将10个任务分配给3个从属计算机,让它们执行高性能计算。 考虑到从机之间存在通信开销。例如,无关紧要的任务放在从属上。
以下是示例代码,
任务1.(node1)
callback receive(msg){
print(msg);
reply(ack);
}
loop(){
...// initializing
..// do computing
..// sampling data.
prepare_packet(&packet);
send(packet, len(packet), node2);
wait_for_packet(TIME_OUT);
delay(1000);
}
任务2(节点2)
callback receive(msg){
print(msg);
reply(ack);
}
loop(){
...// initializing
..// do computing
..// sampling data.
prepare_packet(&packet);
send(packet, len(packet), node1);
wait_for_packet(TIME_OUT);
delay(1000);
}
以上是用于说明处理任务及其关系的简单示例。 我们发现节点1(任务1)和节点2(任务2)之间存在通信行为。如果节点1和节点2在不同的计算机上执行,则执行速度可能会因各种计算机性能而有所不同。然后,每个节点都将等待另一个节点来执行任务。
例如,当节点1在时间(t1,t5)内执行wait_for_packet
时,它将等待并查看是否有来自节点2的数据包,以确定是否可以触发回调函数receive
。
那么,是否有任何计算框架可以满足上述要求? 谢谢!