EDN China > 其它文章 > 微处理器与DSP > 多媒体处理器 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

GPGPU:CPU门口的野蛮人?

作者:lunan?? 2008年03月17日 ?? 收藏0
EDN博客精华文章?? 作者:lunan 

  离飞思卡尔CTO Lisa T.Su在他们的FTF大会上发表有关“半导体竞争的关键在于能否从‘频率’以外的地方寻找并实现差异化技术”的观点不到两个月,我在北京的一场有关NVIDIA GPU技术讲解会的现场再次听到了类似的观点。不同之处在于,Lisa T.Su对“差异化技术”的定义重点落在“多核处理器”上,而NVIDIA的专家强调的则是GPU在通用计算领域令人惊讶的“可能性”。

  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加上加速器高得多的性能。 


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

CPU? GPU? NVIDIA?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈