大多数的通用计算平台都支持串行应用,即程序是按顺序执行的。而并行编程是要想让许多计算同时进行,其前提是大问题可以分割成许多能够同时求解的小问题。但是,究竟什么问题需要并行编程?字处理需要吗?恐怕不需要。语音识别用并行处理恐怕会比改进串行算法更有效。计算机人希望大力提高计算能力,而用户关心的是性能价格比。关键是并行编程的方法。布朗大学一位教授说:“我可以让四核处理器都在忙于工作。但多于四核,我们必须重新思考。”


      解决并行编程问题,并不在于并行语言或开发框架。现在已经有OpenMP,和OpenCL。这些都是框架。我们需要的是高级的并行概念,以及渐进式的并行编程途径。所谓渐进式,就是不能丢掉已有的串行和并行程序。可喜的是现在已经有了一些串行程序并行化的工具,虽然它们的应用范围还很有限。最明智的办法是分析程序中潜在的并行性。


      1967年计算机体系结构专家吉恩.阿姆达尔提出过一个定律阿姆达尔定律,说:在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比(见图)。譬如说,你的程序50%是串行的,其他一半可以并行,那么,最大的加速比就是2。不管你用多少处理器并行,这个加速比不可能提高。在这种情况下,改进串行算法可能比多核处理器并行更有效。最近,我们国家对多核处理器炒得火热。我们有些人有一个特性,只有外国人喊出一个新东西、新名词,我们马上跟上,跟着起哄。要知道,国外有些东西的炒作,其实是有目的的,也许是为他公司的利益,也许是故意让我们上当的。应该小心谨慎才是。对于多核处理器,与之相适应的关于并行计算的基础研究应该摆在第一位。

      “阿姆达尔定律”的结论让人沮丧,但到了20世纪80年代晚期,Sandia国家实验室的科学家们在对具有1024个处理器的超立方体结构上观察到了3个实际应用程序随着处理器的增加发生线性加速的现象,科学家John L. Gustafson基于此实验数据在1988年提出了一个新的计算加速系数的公式:
      s(p) = p+(1-p)f
      与“阿姆达尔定律”一样,S(p)代表加速系统,p代表处理器数量,f代表算法中串行部分所占的比例。
      Gustafson定律说明在许多实际的应用程序中得到接近线性的加速效果是可能的。
      “阿姆达尔定律”的问题出在它的前提过于理想化。因为并行算法通常能处理比串行算法更大规模的问题,即使算法仍然存在着串行部分,但由于问题规模的不断扩大,往往会导致算法中串行部分所占比例的持续减少。
      Gustafson定律又点燃了人们继续研制集成更多处理器(或集成更多执行核的处理器)的计算机系统的热情。可以预测,未来的计算机将集成更多的处理器,当前双核个人电脑的普及只不过是一个开始罢了。

 

 

看完之后,对更多多核处理器类内容有兴趣?来论坛找找!

http://djt.qq.com/bbs/forum.php