谷歌云编程与软件环境技术解析
并行计算类别概述
在并行计算领域,存在多种不同的类别。首先是共享内存类,在计算机游戏搜索和图算法中,由于动态同步通常需要低延迟,共享内存是自然的选择。不过,在大规模重要并行问题中,这类情况并不常见。
类别4在算法上最为简单,其并行组件相互独立。自1988年首次分析以来,该类别的重要性可能有所增加,当时估计其占所有并行计算的20%。网格和云对于这类计算非常适用,因为它不需要不同节点之间进行高性能通信。
类别5指的是不同“原子”问题的粗粒度链接。该领域很常见,并且其重要性预计会不断增加。可以采用两级编程模型,以一种方式指定元问题(工作流)链接,而组件问题则采用本章介绍的方法。网格或云适用于元问题,因为粗粒度分解通常不需要严格的性能。
为了涵盖数据密集型应用,引入了类别6,即MapReduce++。它有三个子类别:
- “仅映射”应用,类似于类别4的轻松并行应用,如文档转换(如PDF转HTML)、密码学中的暴力搜索、参数扫描、基因组装等。
- 经典的MapReduce,包含文件到文件的操作,由并行映射后接并行归约操作组成,例如分布式搜索、分布式排序、信息检索等。
- 扩展的MapReduce版本,涵盖了一些特定的应用场景,如期望最大化算法、线性代数、数据挖掘(包括聚类、K - 均值、确定性退火聚类、多维缩放等)。
以下是MapReduce++子类别与MPI中松散同步类别的比较:
| 子类别 | 输入 | 输出 | 操作 | 应用场景 |
| — | — | — | — | — |
| 仅映射 | 输入 | 输出 | map() | 文档转换、密码学暴力搜索、
超级会员免费看
订阅专栏 解锁全文
63

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



