矩阵计算、多项式求值、求解线性方程组等是典型的数值计算问题,解决类似这些数值计算问题的并行算法称为并行数值算法。非数值计算的例子有排序、选择、搜索和匹配等,它们更侧重于关系比较而非数值计算。
同步算法是指算法的各个进程的执行必须相互等待的一类算法;而异步算法是指算法的各个进程的执行不必相互等待的一类算法。严格的异步算法很少,多数算法都需要异步执行的过程中夹杂异步操作。分布算法是指由通信链路连接的多个节点协同完成问题求解的一类算法。
确定性算法(Deterministic Algorithm)是指算法的每一步都能明确的指明下一步的动作的一类算法。随机算法(Randomized
Algorithm)是指算法的每一步都随机的从指定范围内选取若干参数,由此确定算法的下一动作的一类算法。
本章重点研究同步的、确定的、分布存储的并行算法。对数值和非数值并行算法给予同样的重视程度。先从非数值算法(并行排序)开始,中间是稠密矩阵运算和稀疏矩阵运算等数值算法,最后回到遗传算法等非数值算法。
之所以从并行排序而不是矩阵运算开始,是因为排序所操作的数据结构是一维的,它比二维的矩阵要简单,容易入手。
在进行并行算法设计的过程中,对参与计算的数据的划分以及数据到处理器的映射十分重要,它直接关系着算法性能(加速比、效率等、可扩展性)的优劣。另外,不同的并行体系结构对于并行算法的性能也有重要的影响,很多算法是直接体系结构相关的,所以经常会看到同样的串行算法在网格互联结构和超立方体结构的并行化方式也各不相同。
|