日志档案

发表于 2008-8-6 18:48:59

0

标签: GPU  CPU  

GPU会取代CPU?

早在2002年,GPU供应商就将32位浮点技术搭载在GPU中,期待研究人员和开发人员会将GPU超强的计算能力用于应用程序而不是图形。但早期的GPU是用类似OpenGL或Cg的图形API编程的,这些API很难且大多数开发人员也不熟悉,另外,由于GPU内部缓存远远小于CPU,它只能执行预定好的任务,并不能像CPU那样去执行自定义的任务,所以尽管GPU浮点运算速度要远远高于CPU,但它还不能染指CPU的领域。

  但2006年出现在G8系列GPU的CUDA技术让形势出现了转变——从G80开始,传统的GPU管线模型被改变(统一构架可以动态分配渲染单元),使得它能以可编程处理进行工作。而NVIDIA的CUDA技术准确的定义应该是“CPU+GPU工作模式的可编程软件环境”,CPU和GPU的界线正由此变得模糊。

  CUDA不仅仅用于GPU编程,CUDA环境能够统一串行CPU编程以及采用GPU并行计算。串行计算是顺序处理的计算方式,并行计算则是一个问题可以被分割为并行处理的计算方式。而实际的应用程序会包含很多功能—— 一部分适合于串行处理而另一部分适合于并行计算,因此就有必要统一CPU和GPU编程
。通过将并行计算放在GPU上而同时将串行计算放在CPU上,应用程序可以从这两种计算中充分受益。

  不难看出,CUDA正在试图解决多核CPU在多线程软件开发上的困境并以此作为GPU进入计算领域的基础:在多核或者是集群CPU上进行并行计算,开发人员必须要用软件的工具解决并行计算问题,CUDA正是创建了一个可以统一并行和串行计算的环境,该环境包括一个C语言编译器,一个独立于图形驱动之外的专门的计算驱动程序,以及标准的CPU类型的工具,包括像调试程序和分析等。

  值得注意的是CUDA采用的是C语言,C语言编译器使开发人员能够以标准C语言对CPU和GPU编程——这可以更方便的影响到习惯于C语言而不是图形编程语言的通用计算领域中的大量开发人员;计算驱动程序是一种包含在标准NVIDIA驱动程序中的专用的驱动程序。CUDA驱动程序为超高速传递信息的方法等计算功能而进行了优化,此类信息传递涵盖了CPU与GPU之间的传输。

  的确,CPU在并行计算上的不足让GPU找到了机会。CPU以很小的单位管理数据并顺序地进行处理。信息的每个部分都必须等待着经过单独的执行单元。单独的执行单元非常灵活,但不能并行地处理信息,CPU进行高速串行计算还需要依赖高频率和大缓存;GPU被设计用于进行一种完全不同的处理方式。GPU的架构可以轻松解决并行计算问题,在GPU 内部具有快速存储系统,并且最多可有128个处理器,每个处理器都可以同时采用并行方式计算一部分数据,此外,GPU 硬件设计能够管理数千个并行线程。这数千个线程全部由GPU创建和管理而不需要开发人员进行任何编程和管理。

  对GPU来说,进入通用计算领域是锦上添花的业务,而对于CPU来说则是出现了令人不安的状况。AMD收购了ATi,计划在2009年推出内建GPU核心的Fusion处理器,而Intel也正忙着推出整合GPU的Nehalem。

系统分类: IC设计与软件   |   用户分类: 无分类   |   来源: 原创

    阅读(793)    回复(3)  

最新评论