可分负载调度:从经典方法到可分负载模型
1. 引言
在处理大规模且计算密集型的应用程序时,如何在并行资源上进行有效的调度是一个关键问题。通常,这些资源会组织成主从式平台。可分负载模型是一种有效的解决方案,它假设可以将总工作量任意分割成不同大小的块,并分配给任意数量的工作节点。这种模型适用于由大量相同、细粒度并行计算组成的应用,在许多科学领域都有广泛应用,如卫星图片处理、多媒体内容广播、大型数据库搜索和地震事件研究等。
2. 动机示例
以地球地震层析成像应用为例,该应用部署在星形处理器平台上。其目的是通过比较模型计算的地震波传播时间和物理设备测量的时间,来验证地球内部结构模型。每个地震事件相互独立,且数量众多,仅1999年就记录了817,101个事件。主处理器负责读取所有数据并分发给工作节点,工作节点独立处理数据,目标是最小化总完成时间(即makespan)。该应用的简化代码如下:
if (rank == MASTER):
raydata = read Wtotal lines from data file
MPI_Scatter(raydata, Wtotal / m, ..., rbuff, ..., MASTER, MPI_COMM_WORLD)
compute_work(rbuff)
这个应用满足可分负载模型的所有假设,因为它由大量细粒度计算组成,且任务之间没有依赖关系。
3. 经典方法
经典方法针对总线型网络进行问题求解。在这种网络中,工作节点异构,计算速度不同,主处理器遵循全单端口
超级会员免费看
订阅专栏 解锁全文

404

被折叠的 条评论
为什么被折叠?



