NVIDIA有关专家对GPU同CPU在计算性能上的性能比较似乎让人再次感受自去年开始的“GPGPU同CPU竞争愈演愈烈”的话题,CPU的传统领域正在遭遇强悍的挑战……但显然,NVIDIA还并不想过早地让人们认为GPU想要取代CPU,并且非常小心地澄清了二者应用领域的不同。
从硬件到软件的改变
这种事情(取代CPU)是否会发生呢?也许我们该看看GPU是如何从着色器变成完全可编程处理器的。早在2002年,GPU供应商就将32位浮点技术搭载在GPU中,期待研究人员和开发人员会将GPU超强的计算能力用于应用程序而不是图形。但早期的GPU是用类似OpenGL或Cg的图形API编程的,这些API很难且大多数开发人员也不熟悉,另外,由于GPU内部缓存远远小于CPU,它只能执行预定好的任务,并不能像CPU那样去执行自定义的任务,所以尽管GPU浮点运算速度要远远高于CPU,但它还不能染指CPU的领域。
但2006年出现在G8系列GPU的CUDA技术让形势出现了转变——从G80开始,传统的GPU管线模型被改变(统一构架可以动态分配渲染单元),使得它能以可编程处理进行工作。起先,我把NVIDIA的CUDA技术理解为一种应用于GPU的动态负载平衡技术,但更准确的定义应该是“CPU+GPU工作模式的可编程软件环境”——我相信,CPU和GPU的界线正由此变得模糊。
Andy Keane是NVIDIA 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创建和管理而不需要开发人员进行任何编程和管理。
Walter Mundt-Blum是NVIDIA公司专业解决方案事业部全球销售副总裁,在介绍NVIDIA两款计算产品Quadro和Tesla时,他引用了大量的事例来证明GPU在数据计算领域的优越性:神经建模如果只用CPU进行数据处理,大概需要花2.7天的时间,用GPU只需要30分钟;一家致力于CPU计算的公司Acceleware引入了一个手机天线设计项目,在进行电磁场模拟时,一个双核3.2GHz CPU需要15小时,而一个GPU只需要15分钟;在利用华盛顿大学的研究人员发布的Matlab代码(数学计算程序)进行编程时,使用CPU+GPU得到了17倍性能提升;牛津大学计算实验室的一个关于LIBOR应用的研究也采用了金融计算研究用途的GPU,结果显示,即便与专门的加速设备比较,GPU也能提供远比一个单独CPU或CPU加上加速器高得多的性能。
我想,CPU阵营究竟能在多大程度上坦然接受这些对比?如果偏图形计算的Quadro对CPU领域尚不构成直接冲击,那Tesla足以让CPU阵营警觉。Tesla的定位是在主板级以及桌面电脑产品用于加速PC及工作站的计算速度,旨在让科学家和工程师利用GPU强大的并行计算能力强化自己的工作站,在桌面上实现大规模计算集群的计算能力。NVIDIA还为GPU推出了1U系统,针对数据中心应用,适合几台计算服务器以及数千台计算服务器的协作,满足大规模计算的需要。
Walter Mundt-Blum很高兴Tesla让数据中心没有GPU的现状成为过去。我的看法是:即使Tesla目前以协处理服务器的形式出现,它依然在取代CPU的传统领地。当然,NVIDIA截止目前的官方态度一直是强调GPU不会代替CPU,表示CPU可以解决无关联性的的数据处理,比如操作系统、数据库、产能、临时压缩、递归算法等;GPU则适合关联性强的海量数据处理,如石油天然气、地震资料处理、金融风险建模、医疗成像、有限元计算、生物序列匹配。
CPU阵营的态度
如果人们对“Telsa大胜Intel V8系统”这样的新闻标题已经不再感到新鲜的话,以Intel为首的CPU阵营肯定不会无动于衷。事实上,他们在去年甚至更早以前就已经开始布局。Intel的视觉计算小组 Visual Computing Group首席构架师Douglas Carmean曾表示:Intel未来的超多核处理器采用了类似GPU的构架,该处理器内核约10mm2,耗电量仅6.25W,单线程的运算能力仅为目前处理器的1/3,但它拥有4个线程,并且是16向量的FPU浮点运算单元。Intel还为此种架构设计了可以动态为各个核心分配的大容量缓存。
一位FPGA公司的亚太区行销董事对我感叹道,从目前的应用需求看,半导体技术过剩了,CPU和GPU的创新从芯片设计向应用设计转移,其实都是在寻找新的增长点。我同意这个说法。也许这是一个不容易说清楚的事情,变化还在继续,或者说刚刚开始。对GPU来说,进入通用计算领域是锦上添花的业务,而对于CPU来说则是出现了令人不安的状况。AMD收购了ATi,计划在2009年推出内建GPU核心的Fusion处理器,而Intel也正忙着推出整合GPU的Nehalem。如果NVIDIA开始强调自己是计算而非图形芯片供应商,那么有人认定GPGPU是站在CPU门口的野蛮人也就不足为奇了。
用户144206 2008-5-3 17:13
用户1200847 2008-4-23 21:04