并行程序
串行程序面向单核处理器,不利用多核性能;并行程序是需要利用多核性能的程序,编写并行程序需要调节各个核的工作:通信,负载平衡,同步。
核:中央处理器或者CPU的代名词
并行程序编写方法:任务并行和数据并行
任务并行:将待解决问题所需要执行的任务分配到各个核
数据并行:待解决问题所需要处理的数据分配到各个核通信:一个核或者多个核将自己的结果发送给其它核
负载平衡:每个核任务量大致相同
并行程序设计
1.划分
将大任务拆分成小任务,发掘问题的并发性;
2.通信
小任务之间需要进行哪些通信;
3.凝聚或聚合
第一步所确定的任务与通信结合为更大的任务;
4.分配
将上一步聚合好的任务分配到进程/线程中。
程序评估
编写并行程序的主要目的是提高性能,那么如何评估程序?
1.加速比和效率
加速比(Speedup)
S=TserialTparallel
当在p核系统上运行程序时,最佳预期 S=p
效率
E=Sp
2.可扩展性
以 m 为倍率增加程序所用的进程/线程数,若存在相应的
k 使得输入规模 n 增加为n∗k 时,效率 E 恒定,则称该程序是可扩展的。
粗略地将,如果一个程序可以处理规模不断增加的问题,就是可扩展的。
强可扩展的:
∀m>0,k=1
弱可扩展的: ∀m>0,k=m
参考文献
1.Peter S.P.《并行程序设计导论》[M].机械工业出版社,2012,8.