关于通用计算

这个文章的开篇来自于Nvidia的CUDA。类似的GPU加速技术已经发展了很多年,并且日趋成熟。从最初仅仅只能用来硬解高清的视频,到现在发发展到视频编码/物理加速/并行计算等多种功能为一体,这样日新月异的变化的确令人感到惊叹。但是我们真的需要这样的通用计算吗?

CUDA-logo-jegx

什么是CUDA?引用来自维基百科的解释——

CUDA(Compute Unified Device Architecture,统一计算架构[1])是由NVIDIA所推出的一种集成技术,是该公司对于GPGPU的正式名称。通过这个技术,用家可利用 NVIDIA的GeForce 8以后的GPU和较新的Quadro GPU进行计算。亦是首次可以利用GPU作为C-编译器的开发环境。NVIDIA营销的时候[2],往往将编译器与架构混合推广,造成混乱。实际 上,CUDA架构可以兼容OpenCL或者自家的C-编译器。无论是CUDA C-语言或是OpenCL,指令最终都会被驱动程序转换成PTX代码,交由显示核心计算。

我们需要CUDA吗?

类似的GPU加速技术已经发展了很多年,并且日趋成熟。从最初仅仅只能用来硬解高清的视频,到现在发发展到视频编码/物理加速/并行计算等多种功能为一体,这样日新月异的变化的确令人感到惊叹。

首先来看到这张图,这是来自于Google的搜索趋势——

viz

虽然这仅仅只是搜索量的变化,并不能直接反映CUDA的流行趋势,但是他在一定程度上可以说明用户对于一个焦点问题的关注。而现在这样的趋势,已经足够说明现在CUDA究竟是多么的热门。

这里有篇来自THG的详细评测,值得一看《CUDA-Enabled Apps: Measuring Mainstream GPU Performance》。从中,我摘录两张图,是TMPGEnc的编码时间测试。

 image006 image007

左边为使用了GPU加速的转换时间,右边是仅使用CPU转换所需的时间(时间越短越好)。

可以明显的看出,CUDA在这其中发挥了明显的效果。而实际上,在我亲自使用Mediacoder进行的测试来看,CUDA的效果完全可以用梦幻来形容——至少比纯CPU转码加速了50%以上。

CUDA绝对是有意义的

CUDA之前的硬件加速

在几年之前,曾经十分流行过一种由Ageia推出的PhysX物理加速卡。

PPU-3D-L (1)

物理处理器(Physics Processing Unit,PPU)是电脑专门用来处理物理运算的微型处理器,尤其应用在电子游戏上。物理学上的刚体动力学、碰撞侦测、流体力学、头发模拟、衣物模拟和对 象破坏等效果,均可以这种处理器进行运算。这个概念源自于减轻中央处理器(CPU)的负担,和使用显示核心取代CPU进行绘图运算的原理一样。有关物理数 据也可以单纯以一般的CPU去计算,但在速度方面会比PPU慢得多。

via 维基百科

物理引擎,一直是现今的游戏十分重视的内容。但是真正被广大玩家所熟悉,应该是Half Life2开始,重力枪的出现让每个人玩家感受到了物理引擎的神奇和强大。当时HL2所使用的物理引擎是Havok。Havok至今仍然是一款优秀的物理引擎,但是在当时,他有一个问题——这是一款纯粹使用CPU进行计算的引擎。这就给PhysX带来了机会。

于是,这个插在PCI插槽上的小玩意,可以在游戏支持物理效果的同时,带来明显的加速效果——因为他不需要再使用本身任务就已经很繁重的CPU进行计算,而是使用了独立的芯片,也就是PPU来进行计算,因而明显的提高了效率。

物理加速卡在一段时间之内曾经十分风靡过,也带来了很高的玩家反响。CUDA的前身也正是被Nvida收购的PhysX。

不幸的是,直到被Nvidia收购,关于PhysX的争议几乎从未停止过。虽然他带来了有效的提高,但是高昂的售价严重影响了玩家对于他的热情。相对而言,Havok可以在不需要更换配件的情况下,获得同样的游戏体验,

除了PhysX的物理加速卡,在多年前还有一种多功能卡,同样风靡,一度成为电脑的标准配件。

20090609174554-1230740379

在486以前,电脑机板的集成度相对较低,基本上没有集成显卡、声卡、网卡,再早一些的也不是南北桥的构架! 那时的主板,最多也只提供一个IDE口给硬盘用。甚至连串、并口都没有! 所以,为了扩展的需要,多功能卡就应运而生了!

via 百度百科

在那个年代,孱弱的CPU性能几乎不能播放视频文件,甚至不能看主流的VCD,令人头疼。但是解决的方法也很简单,就是安装一块多功能卡。

多功能卡在那个年代,发挥了极大的功能,真正将多媒体的概念与个人电脑连接在了一起,也为PC的普及立下了一定的贡献。直到Intel的MMX指令集随着奔腾处理器一同出现,极大的改善了CPU的多媒体性能,才彻底终结了各种多功能卡百花齐放的时代。

历史的传承

上述提到的几种技术,无论是PhysX的物理加速卡,还是MMX出现之前的多功能卡,都有一个共同的特征:他们迎合了那个时代的发展趋势,在没有更先进技术出现的时候,发挥了极大的效果

最典型的当属多功能卡。现在很多用户可能都无法想象,“多媒体电脑”这一概念在当时有着多么巨大的吸引力,而带来这一切革命的源头,如今却只能静静 的躺在垃圾堆里。这并非是因为他自身有着多大严重的问题和失误,而仅仅只是被更好的技术所代替了而已。多媒体卡被MMX指令集所代替,而物理加速卡则被 CUDA所代替。

他们已经完美的完成了自己的历史使命,并且把接力棒交给了后人。我们应该为此而感到欣慰。

历史的重现?

3dfx_logo

回过头来让我们再看看CUDA。他和这些前辈们有着太多的相似。然而,还有着更加相似的产品——曾经大名鼎鼎的3dfx Glide。

Glide 是由3dfx公司开发的Voodoo系列专用的3D API。它是第一个PC游戏领域中得到广泛应用的程序接口,它的最大特点是易用和稳定。随着Direct3D和OpenGL的兴起,已逐渐失去了原来的地位

via 百度百科

随着Voodoo的推出,3dfx在显卡市场已经占据了统治性的地位。为了巩固这样的地位,3dfx推出了专属的图形API接口Glide。Glide的推出获得了广大游戏厂商的支持,当年的数款大牌游戏纷纷使用Glide开发,也让他一时之间风头无二。

可惜的是,因为3dfx自身的问题,Voodoo显卡性能已经逐渐和同期的竞争对手越拉越远,Glide也随之而淡出了我们的视线。

CUDA,与Glide是何等的相似?他们本身都是非常优秀的技术,在当时都占据了相当不错的市场份额,也都收到了主流市场的欢迎。最重要的是,他们都是由一个公司所主导的封闭技术

在这个时候,技术本身是否优秀已经显得不那么重要。重要的是,当这个公司一旦因为种种原因消失,这个技术也会立刻随之而消失。即使他已经在当时占据了相当的市场份额,也不例外。

封闭还是开源

opensource_logo

于是,我们一不小心,回到了这个最原始,也是最富有争议的问题上来了。事实上,我们之前一直在讨论的话题,无非也就是与此。

一个由大型商业公司所主导的封闭技术,通常会比同时期的开源技术要优秀很多,并且会迅速占领市场;但是随着这个公司的种种原因,这样的封闭技术也会迅速的随之而消失,消失的速度之快令人震惊。

究竟,我们需要的是一个优秀但是封闭,仅针对当时市场情况的技术;或是一个开源,可能进展缓慢,但是却能够持续不断更新的技术呢?这实在是一个永恒的话题。

综合来看,两种技术其实各有优劣,我相信,各位读者每个人的心中,都有一个属于自己的答案。但是无论怎样,由商业公司所主导的闭源技术,无疑在短时间内推动了整个业界的前进,这是大多数开源项目都难以做到的。

通用计算

在文章的最后,让我们回到最初的问题吧,关于通用计算。

通用计算的一个前提,必然是通用。而现在的这些所谓的“通用计算”,都有一个前提:需要专用的硬件配合

无论是CUDA,还是他的前辈们,虽然在短暂的时间内确实有力的推动了市场的前进,但是从长远的结果来看却未必能够收到理想中的效果。当有一天,商业行为因为种种原因失败,专用硬件也会随之而退出市场,于是这种与硬件相关的技术也会因为没有了用武之地,而立刻消失。

这就是我们所需要的通用计算吗?

可以试想一下,如果这样的通用计算流行起来,会发生怎样的事情——

  • 首先,CPU的作用被不断的削弱,性能持续裹足不前。不过这还不算什么
  • 多媒体加速卡开始死灰复燃。随之而一起的可能还有视频解码卡,浮点数运算卡,智能AI卡……
  • 每一个主流软件都需要一种或者几种以上的专用加速卡,每多使用一种可以提高30%性能

或许这样的事情,距离我们已经不大遥远了。

CUDA的通用计算在当前确实有他自己的意义,但是从长远来看,这一趋势必须死。

posted @ 2010-11-21 10:36 子福当自强 阅读(...) 评论(...) 编辑 收藏
悟道2012