这里有几个数据点;自己决定是否算是一场革命。
并行硬件
在2005年左右,英特尔和AMD都开始批量生产2核台式x86 CPU(奔腾D和Athlon 64),时钟速度约为3 GHz。
PlayStation 3于2006年发布,其功能单元具有3.2 GHz的8 + 1核。
2006年,GeForce 8系列发布。它由大量(〜100个)通用“流处理器”组成,与图形专用单元相反。大约在2007年,CUDA 1.0规范发布,允许一些通用计算在大规模并行NVidia硬件上运行。
从那以后,这种趋势一直在继续。
假设现在,2013年,英特尔和AMD都提供4、8和16核CPU,时钟速度略高于4 GHz。双核和四核设计普遍用于低功耗设备,例如笔记本电脑和智能手机。
所有这些都是批量生产的消费级日常计算机硬件。
软件
CUDA于2007年发布,然后于2008年发布OpenCL,从而允许在大型(非图形)计算中使用大规模并行GPU。该模型广受欢迎;许多托管公司(例如Amazon)都提供用于一般计算任务的GPU。
Go于2009年发布,具有非常便宜的抢占线程(“ goroutines”),并允许有效地表达高度并发的算法。
Akka工具包于2009年发布,适用于Java和Scala,支持基于角色的并发。
Erlang(一种高度并发的语言)的使用量有所增加。
并发与并行
注意,要利用并行硬件,并不一定需要软件并发,也就是说,要在计算中处理执行线程。并行,非交互过程解决了许多问题,其中每个过程都是传统的顺序程序。
并行处理可以利用更多传统语言和并行框架,例如map-reduce或MPC或OpenMP。对于这样的框架,在同一CPU晶体上存在多个内核在概念上与仅在集群中拥有更多CPU并没有太大的区别。区别主要是速度。
到目前为止没有免费的午餐
在高端,CPU速度仍徘徊在5 GHz左右。随着更好的技术(例如石墨烯晶体管)的出现,频率可能会在未来再次上升,但可能不会很快上升。