我想使用 MPI 开发一个任务调度程序,其中有一个主处理器和多个工作/客户端处理器。每个工作进程都拥有计算所需的所有数据,但从主进程获取要处理的索引。计算完成后,worker 返回一些数据给 master。问题是有些进程会很快,有些会很慢。
如果我运行一个循环,以便主节点在每次迭代时发送和接收(阻塞/非阻塞)数据,那么它无法继续下一步,直到它从分配给它的上一个索引中接收到来自当前工作线程的数据。最重要的是,如果一个工作程序花费太长时间来计算,那么它就会成为限制因素,即使使用非阻塞技术,主程序也无法继续为下一个工作程序分配索引。是否可以跳过分配给工人并继续下一步。
我开始认为 MPI 可能不是执行此操作的范例。 python会是一个很好的任务调度平台吗?
这绝对可以使用MPI_Irecv()
and MPI_Test()
。主进程需要做的就是为每个工作进程发布非阻塞接收,然后在循环中测试每个工作进程的传入数据。如果一个进程完成,则向其发送一个新索引,为其发布一个新的非阻塞接收,然后继续。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)