--- title: Embarassingly Parallel Algorithms localeTitle: 令人尴尬的并行算法 --- ## 令人尴尬的并行算法 在并行编程中,令人尴尬的并行算法是在进程之间不需要通信或依赖的算法。与需要在任务之间进行通信的分布式计算问题(尤其是中间结果)不同,令人尴尬的并行算法很容易在缺乏真正超级计算机集群中使用的特殊基础结构的服务器场上执行。由于令人尴尬的并行算法的性质,它们非常适合基于互联网的大型分布式平台,并且不会受到并行减速的影响。令人尴尬的并行问题的反面是固有的串行问题,根本无法并行化。 令人尴尬的并行算法的理想情况可归纳如下: * 在计算开始之前定义所有子问题或任务。 * 所有子解决方案都存储在独立的存储器位置(变量,数组元素)中。 * 因此,子解决方案的计算是完全独立的。 * 如果计算需要一些初始或最终的通信,那么我们称之为几乎令人尴尬的并行。 许多人可能会想到“令人尴尬”一词的词源。在这种情况下,令人尴尬的是与尴尬无关;事实上,这意味着过多 - 这里指的是“令人尴尬的容易”的并行化问题。 令人尴尬的并行问题的一个常见例子是由图形处理单元处理的3d视频渲染,其中每个帧或像素可以在没有相互依赖性的情况下处理。其他一些例子是蛋白质折叠软件,可以在任何计算机上运行,​​每台机器完成一小部分工作,生成所有子集,随机数和蒙特卡罗模拟。