并行编程:原理、挑战与实践
1. 并行与并发的概念引入
在一些场景中,并行和并发能显著提升效率。以国际象棋比赛为例,原本一位象棋大师要进行10场比赛,采用串行方式(一场接一场地进行),假设每场比赛10分钟,每步棋选手用时50秒,大师移动到下一桌用时6秒,总共需要101分钟。
若俱乐部聘请了第二位象棋大师,采用并行方式,每位大师只需进行5场比赛。若依旧采用串行方式比赛,比赛总时长变为50.5分钟(101 / 2)。但如果采用并发且并行的方式,两位大师同时进行各自的5场比赛,每位大师每6秒走一步棋并移动到下一桌。这样,比赛总共进行11轮,移动时间仅需30秒(因为每位大师只需在5张桌子间移动),整个比赛用时为11 * 56 + 11 * 30 = 616 + 330 = 946秒,即15.77分钟,这是几种比赛方式中用时最短的。
需要注意的是,并发是算法的属性,而并行是机器的属性。
2. 并行计算机架构分类
计算机科学家早在50年前就认识到并行性可用于提高性能和处理大规模问题。下面介绍几种不同的并行计算机架构:
- Flynn分类法 :1966年,Michael Flynn提出了计算机架构的分类法,最初包含四种模型架构:
- SISD(单指令流,单数据流) :这是经典的冯·诺依曼单处理器计算机架构,一次只有一个程序运行,处理单一数据流。
- MISD(多指令流,单数据流) :该架构中多个不同程序在同一数据流上执行,可能产生不同结果,程序同步运行。采用这种架构的机器非常罕见,例如尝试用多种不同算法在不同
订阅专栏 解锁全文
314



被折叠的 条评论
为什么被折叠?



