技术相结合,为高效率使用并行计算机提供解决方案。其基本原则如下:
可扩展性 并行算法是否随处理机个数增加而能够线性或近似线性的加速,这是评价一个并行算法是否有效的重要标志之一。
粗粒度 通常情况下,粒度越大越好。这是因为在每个处理机中有很多需要计算的工作任务,如此可以充分发挥多处理机的作用。并行加速比对细粒度问题一般情况下是不会很高的,这也是为什么并行计算需要求解大规模问题的原因所在。
减少通信 一个高效率的并行算法,通信是至关重要的。提高性能的关键是减少通信量和通信次数。其中通信次数通常情况下是决定因素。
优化性能 一个算法是否有效,不仅依赖于理论分析的结果,也和在实现的过程中采用的技术息息相关。性能主要看单处理机能够发挥计算能力的百分比,然后是并行效率。
常见并行算法
解决并行计算问题,可以采用的算法种类不少,但是经常被使用的算法有以下几种:
区域分解算法 是将区域进行分解的一种方法,早期应用于求解椭圆型偏微分方程。区域分解按照划分方式可分为非重叠的区域分解和重叠的区域分解。
功能分解算法 是将不同功能组成的问题,按照其功能进行分解的一种手段,其目的是逐一解决不同功能的问题,从而获得整个问题的解。
流水线算法 流水线技术是并行计算中一个非常有效的、常用的手段,根据计算的依赖和递推关系制定多任务流水线流程。
分而治之算法 根据计算流程进行分解和整合,分而治之方法在并行计算中起着举足轻重的作用。
同步并行算法 所有计算单元下一步计算需要等待上一次的计算全部完成,串行算法并行化中大部分使用此种算法。
异步并行算法 进行数据交换不需要严格确定在某一时刻,每个处理机按照预定的计算任务持续执行,但通常需要在一定的时候必须进行一次数据交换,以保证算法的正确性。
并行编程模式
并行编程模式主要有如下的三种类型:
主从模式(Master-Slave) 有一个主进程,其他为从进程。在这种模式中,主进程一般负责整个并行程序的数据控制,从进程负责对数据的处理和计算任务,当然,主进程也可以参与对数据的处理和计算。一般情况下,从进程之间不发生数据交换,数据的交换过程是通过主进程来完成的。
对称模式(SPMD) 在这种编程模式中,没有哪个进程是主进程,每个进程的地位是相同的。然而,在并行实现过程中,我们总是要在这些进程中选择一个进行输入输出的进程,它扮演的角色和主进程类似。
多程序模式(MPMD) 在每个处理机上执行的程序可能是不同的,在某些处理机上可能执行相同的程序。
