- 实践,极端的从做中学
- 必须理解和欣赏硬件,才能有效地编写并行软件(代码)
- 第一次作业:使用ISPC语言探索如何利用并行性(多核和SIMD)
- 第二次作业:涉及GPU即图形处理单元,GPU最初是为了加速图形处理而开发的,现在成为从单芯片获得卓越性能的方式
- 第三次作业:研究共享内存并行性。将多核概念扩展为有一组处理器,可以独立执行程序,但共享一个公共内存,
一个处理器写入的数据可以被另一个处理器读取 - 最后一次作业:使用消息传递模型。一台包含多个处理器的机器,(被视为)拥有独立的内存,如果想相互通信,就必须显式地发送消息
并行计算——让东西运行得更快
- 期末项目:大约两次作业的工作量
- eg.某个应用领域可以从加速中受益
- 留意你的各种想法
- 合作的有效性:
鼓励谈论更高层次的想法,不希望分享实际实现代码的细节相关内容,或性能数据。希望利用英伟达,英特尔这样公司的网页和数据,不允许使用github查看或上传作业副本
一、并行计算的历史背景
并行计算来源于对快速计算的需求
eg.物理模拟需要大量数据,要计算很多微分方程
政府实验室预算充足,且有高性能需求,所以人们开始使用多个处理器来加速计算。
- 第一台并行机器之一是在卡内基梅隆大学建造的,叫做C.mmp,是一台
有16个处理器的机器。- 80年代,西摩·克雷设计了使用
向量处理(我们下周会讨论)以及多CPU的超级计算机。他的机器非常昂贵且非常快,处理器数量相对较少,但每个都非常快。- 然后有一家来自麻省理工学院的初创公司叫Thinking Machines,他们的机器设计非常不同。他们的方法是拥有
大量非常弱的小处理器。例如,他们早期的一台机器中有65,000个单比特处理器。他们也非常擅长制造有很多闪烁灯的机器,这很适合演示,也适合科幻电影中人们想看到计算机在做某事。
后来,数据库人员发现并行机器是处理事务非常好的方式。他们弄清了如何将重要算法,数据结构和数据库分布在多个处理器上。
结果:数据库市场比科学计算市场更大
二、微处理器的发展与转折点
- 计算机领域,硬件的发展呈指数级增长
什么让处理器性能增长?
- 更宽的数据路径:提升到一次处理
32位数据 - 流水线设计:缩短
每条指令的执行时间,提高效率 同时执行多条指令:让硬件在指令流中向前看,找到彼此不依赖的独立指令。如果找到,可能能够同时出发,比如最多四条指令
真正比其他东西更有帮助的是时钟速率变得更快
即小晶体给处理器派发操作,处理器逐步执行。时钟速率也呈指数级增长。
英特尔营销:性能=时钟速率
在很长一段时间,时钟速率是驱动性能的主要因素。
功率密度与多核
但有一个问题,就是产热。
当芯片变热时你要散热,否则它会融化。在英特尔早期只有几瓦特,根本不热,但随着事物呈指数级改进,随时钟速率上升,热密度也会上升
功率密度:芯片表面每平方厘米产生多少瓦特
例如,英特尔奔腾处理器热得可以煎鸡蛋(我猜是一个小鸡蛋),它就像一个热板一样热。你可能听说过散热器这些东西,它们是处理器顶部的金属片,帮助散发其热量。这还不算太糟,虽然有点热,但展望未来,时钟速率在呈指数级增长,随着热密度开始继续呈指数级增长,芯片表面将像核反应堆内部一样热,这听起来很热,很糟糕。然后我们将达到火箭喷嘴的水平,然后我们正在朝着达到太阳表面的热密度的路径前进。显然,有些事情可能会出错。
他们无法再解决如何冷却这些芯片而不使其熔化的技术问题。
所以,之后的新世界是,既然我们不能让时钟速率更快。不过,你能做的是在一个芯片上放置多个核心
这就是为什么今天一切都与多核有关。
三、并行计算成为必然
参考博客:CMU-15-418并行计算笔记-全