并行算法的高进基于一系列操作的,在编程过程中必须执行这些操作来准确的完成工作而不会产生部分结果或者错误结果。
并行算法大致操作如下:
- 任务分解 task decomposition
- 任务分配 task assignment
- 聚合 agglomeration
- 映射 mapping
任务分解
将程序分解为可以在不同处理器执行的多个任务/一系列指令以实现并行性。
分解方法
- 按范围分解
- 按功能分解
任务分配
将任务分配给各种处理器的机制
聚合
为也提升性能将小任务合并成大任务的过程
映射
指定任务由哪个处理器处理
目标:减少总体的执行时间
有两个矛盾的策略:
- 需要频繁通讯的任务应该由同一个处理器处理以增强局部性
- 可以并行执行的任务应该由多个处理器处理以增强并行性
动态映射
无论全局还是局部,对于不同的问题都有不同的负责均衡算法。