作者hsz0566 (HSZ)
看板VideoCard
标题[转录] Havok VS PhysX 漫谈物理加速世界!
时间Sun Jan 18 18:12:46 2009
(图文)
http://financenews.sina.com/sinacn/304-000-106-109/2008-06-30/2046826610.html
Havok VS PhysX 漫谈物理加速世界!
2008-06-30 20:46:30
作者:小熊在线-孤竹の子
物理大战新篇章
2008年6月,NVIDIA与AMD-ATI先後发布了自家新一代高阶产品GT200(GeForce GTX
280/260)与RV770(Radeon HD 4850/4870),我们在惊诧于新产品的极限性能时,众多
新技术引用也是玩家关注的重点,例如NVIDIA的CUDA架构,AMD-ATI的GPGPU解决方案等。
在众多的技术当中,物理加速技术由于震撼的视觉体验及两家不同的解决方案再次成为了
人们关注的焦点。
http://images2.sina.com/newscenter/cr/2008/0630/3474720608.jpg
NVIDIA发布的CUDA 2.0开发包中蕴含了PhysX物理加速技术,NVIDIA的意向是使用GPU
通过CUDA架构来实现物理加速;而作为同时拥有CPU与GPU业务的AMD自然会选择CPU+GPU为
主导的Havok物理引擎。2007年9月Intel闪电收购Havok之後,NVIDIA与AMD-ATI的GPU物理
加速计算就显得非常尴尬,因为Intel收购Havok的目的就是使Havok引擎专注于CPU物理运
算,为了对抗Intel(亦或是说CPU),NVIDIA收购了Ageia及其PhysX引擎,使PhysX引擎
专注于GPU物理运算。AMD-ATI如何选择物理加速方案在RV770之前业界充满了猜测,因为
无论是Havok还是PhysX引擎,都是竞争对手的产品,而为了AMD更加长远的Fusion计划,
AMD-ATI最终选择了前者。
http://images2.sina.com/newscenter/cr/2008/0630/1434870327.jpg
物理加速技术在2006年Ageia发布物理PhysX加速卡时被人们所关注,甚至有人笑称3D
加速成就了3DFX,而物理加速将成就Ageia,但是由于Ageia采用的是PhysX硬件物理卡加
速方式,而物理卡又价格不菲,虽然Ageia也出售PhysX引擎,但是由于没有PhysX硬件加
速卡支持的话效率会降低,在加上NVIDIA与AMD-ATI当时都采用了Havok引擎作为标准,因
此一直没有受到游戏开发商及广大玩家的重视。而Havok引擎在很长一段时间都是致力于
CPU软件加速,但是随着Havok 4.0工具中Havok FX的发布就不一样了,Havok FX引擎是通
过GPU来进行物理加速,主要针对当时的PhysX引擎。
关于GPU与CPU在做物理运算时的差距这里就不多做介绍了,有很多这方面的文章可寻
,总体来说GPU运行物理运算可以是四核CPU的十几倍到几十倍不等,比PPU有几倍到几十
倍的性能提升。而我们这里主要探讨的NVIDIA与AMD-ATI GPU加速昨天、今天与明天!
昨天─殊归同途的Havok FX引擎
Havok FX发布于2006年中,前文已经提到,Havok FX引擎是通过GPU来进行物理加速
,当时的NVIDIA与AMD-ATI都不约而同的支持Havok FX引擎,首先来看NVIDIA的NVIDIA
SLI Physics技术,NVIDIA是采用SLI模式的第二块显卡来进行物理加速。
http://images2.sina.com/newscenter/cr/2008/0630/1102043780.jpg
从上图中可以看出,Havok FX API通过DirectX将数据发给GPU驱动,如果游戏或者驱
动不支持SLI物理,那麽将不会发送物理数据,反之则交给GPU 2进行物理计算,计算结果
则返回给Havok API。
与NVIDIA的物理解决方案类似,AMD-ATI同样采用Havok FX引擎,同样基于多卡互联
CrossFire来实现物理加速,第二块显卡来进行GPU物理加速。
http://images2.sina.com/newscenter/cr/2008/0630/735875314.jpg
当时AMD-ATI的X1000系列GPU的设计理念是搭建智能化的芯片架构,使得芯片内部的
运算灵活性增强,根据外部接口API的不同,可以实现完全不同的运算任务,并且命名为
DPP(Data Parallel Processing )并行数据处理架构。
虽然同样采用了Havok FX引擎,并且都是双卡互联形式实现,但是两家的解决方案却
大相径庭:NVIDIA是通过DirectX API来实现物理加速,而AMD-ATI则是通过数据并行计算
架构提取(Data Parallel Processing Architecture Abstraction )直接与Havok FX引
擎交换数据,让Havok FX引擎直接与GPU沟通,而不需要通过Direct3D和OpenGL API,
AMD-ATI着名的Close To Metal(CTM)接口就是在这个时期提出的。简单的理解就是,
AMD-ATI的实现方式是“GPGPU”通用计算的形式来做物理运算,而NVIDIA是让显卡通过
DirectX以“GPU”的工作方式在做物理加速(其实也是GPGPU应用范畴)。
至于两种方案的优劣其实讨论起来真的没有意义,因为实际上除了NVIDIA与AMD-ATI
自家演示的小DEMO与视频之外,目前支持GPU物理加速的游戏几乎没有,大部分使用到物
理加速的游戏还都是使用CPU物理加速的方式,包括我们熟知顶级大作《Crysis》、《使
命召唤4:现代战争》等等……
今天─PhysX决战Havok FX
当NVIDIA宣布CUDA集成PhysX物理引擎时,很多人都会认为PhysX引擎只支持GPU物理
加速技术,这也是AMD-ATI选择Havok FX引擎的主要原因。然而实际上PhysX引擎最初是只
支持CPU与PPU,而不支持GPU,即使是融入CUDA之後,PhysX引擎也仍然支持CPU物理加速
。之所以给人PhysX引擎只支持GPU物理加速的错觉,是因为NVIDIA表示今後将大力发展
GPU物理加速,但这并不表示PhysX引擎排斥CPU或者CPU+GPU的解决方案。
http://images2.sina.com/newscenter/cr/2008/0630/3053286272.jpg
无论是GPU还是CPU、PPU、Cell(PS3)都可以通过HAL翻译层来实现软、固质体动力
(Soft or Rigid Body Dynamics)、通用碰撞侦测(Universal Collision Detection)、有
限元素分析(Finite Element Analysis)、流体动力(Fluid Dynamics)、毛发模拟(Hair
Simulation)以及更先进的布料模拟(Cloth Simulation)、自然模拟(Natural Motion)
等在内新颖技术。
通过CUDA通用接口,PhysX引擎将NVIDIA GPU中的Thread Scheduler(线程管理器)
模拟成Control Engine(控制引擎CE),而Streaming Processors来模拟Vector
Processing Engine(矢量处理引擎,VPE),其中CE控制引擎负责任务的指派,相当于PhysX
中的主管机构,而真正的物理运算任务则是由VPE矢量引擎来完成,最後通过Data
Movement Engine(数据移动引擎DME)输出。关于最新GT200物理运算的优势已经被NVIDIA
吹的天花乱坠,这里就不多介绍了,感兴趣的朋友参见《NVIDIA夺面双雄 GT200全球同步
首测》一文。
而AMD-ATI则继续选择Havok FX引擎,不过RV770系列实现物理加速的方法也已经不同
于之前的CrossFire双卡解决方案,之前Radeon X1000系列是通过据并行计算架构提取直
接与Havok FX引擎相连接(其实也可以通过Direct3D和OpenGL API),然而由于对抗CUDA
的原因,AMD-ATI也需要自己的GPGPU规范,而AMD-ATI则选择了苹果公司力推的通用计算
行业标准OpenCL,它能与图形硬件及多核CPU相协调以提高系统的整体性能,而AMD-ATI的
Havok物理加速技术就是基于CAL/Brook+的。
http://images2.sina.com/newscenter/cr/2008/0630/3875924325.jpg
实质上讲无论是CTM接口,还是现在的CAL/Beook+,AMD-ATI执行物理加速的概念都没
有变,那就是GPGPU的并行能力进行物理运算,而NVIDIA方面可以真正称的上市GPGPU物理
加速还是从CUDA开始的。另外我们也注意到,之前无论NVIDIA还是AMD-ATI在展示自己物
理运算时都是基于双卡技术,而如今他们更愿意谈论单卡。
明天─技术与现实之间的抉择
那麽物理加速技术的明天到底是Havok FX引擎还是PhysX引擎的天下?我们先来看一
下双方的阵营:PhysX引擎目前只有NVIDIA一家支持,有消息称AMD-ATI目前也正在与
NVIDIA商榷授权的问题,那麽有可能AMD-ATI最终也支持PhysX引擎;Havok FX引擎目前已
经得到AMD-ATI的支持,加上Havok的所有者Intel,目前构成了Intel+AMD-ATI对抗NVIDIA
的局面。
物理加速阵营对比
支持引擎 加速态度
Intel Havok CPU
AMD-ATI Havok(PhysX引擎正在商榷) CPU+GPU
NVIDIA PhysX引擎 GPU
三方对于物理加速是由GPU还是由CPU执行的态度开篇已经阐明,实际上这场物理大战
最终的抉择就是落在了到底是CPU加速还是GPU加速上,我们先来看一下最简单的物理加速
计算过程。
无论PhysX引擎还是Havok引擎物理计算都基于以下步骤:
Integrate整合初步计算
Collide碰撞判定
Solve Collisions碰撞结果计算
在Integrate整合初步计算阶段,进行物理对象的一些初始物理状态的初始化,包括
速度、加速度等各项信息,为後面的运算做准备。Collide 碰撞判定进行一些对象之间的
碰撞检测,并以对的形式进行处理(因为碰撞总是两个物体相互的),Solve Collisions
碰撞结果计算阶段则是对碰撞的後处理,包括碰撞後的速度等。Solve Collisions碰撞结
果计算阶段是最复杂的,那麽我们可以看出物理计算是一个对并行计算非常依赖的运算。
http://images2.sina.com/newscenter/cr/2008/0630/278219283.jpg
Solve Collisions
我们看到,物理运算所需的大量并行计算正是GPU所具备的优势,利用GPU做物理运算
确实是天经地义的事,那麽是不是说物理计算目前就是该由GPU来负责呢?在回答这个问
题之前我们先来看一下NVIDIA在近期发布的PhysX驱动,搭配PhysX驱动在运行3DMark
Vantage CUP测试第二个场景的时候,由于GPU接替(或者说是加速)物理运算,使这个场
景成绩暴增,可以看出GPU取代CPU物理加速时的决定性优势,而在NVIDIA最新发布虚幻3
物理地图演示中,我们却可以看到如下的成绩:
http://images2.sina.com/newscenter/cr/2008/0630/1190808272.jpg
1680×1050
http://images2.sina.com/newscenter/cr/2008/0630/3747144617.jpg
2560×1600
GPU进行物理加速在进行很少使用到图形渲染的3DMark Vantage CPU测试第二个场景
,以及较低分辨率下进行游戏时,GPU物理加速确实效果令人满意,但是随着分辨率的增
加,GPU物理加速在游戏中的表现就不在我们想象的那样完美,对比CPU加速,有些场景甚
至还有成绩的下降!
这是游戏中GPU与CPU的关系决定的,在游戏中,显卡大多数都是在满负荷运行,这时
根本无暇分身做物理运算,因为无论运算靠的也是流处理器!那麽这时CPU在做什麽?游
戏是非抢占型程序,也就是说如果可以的话游戏不会全部榨干CPU性能,所以我们在进行
游戏时经常看到CPU的占用率并非100%,如果是4核CPU而游戏又不支持多核的话,那麽这
时CPU的性能就在浪费!
实际的情况已经很明了,GPU确实非常做物理运算,但是实际情况却是GPU心有余而力
不足,利用目前闲置的CPU来做物理加速似乎是最好的选择,而如果我们有两块显卡的话
也许就解决了GPU自顾不暇的问题,这是不是让你想到了当初NVIDIA及AMD-ATI都不约而同
选择Havok FX物理加速的原因──一块显卡做图形渲染,一块显卡做物理加速!
今後物理的发展最终走向何方?也许会是GPU强大到做物理加速如现在的视频解码,
也许是今後游戏继续榨干显卡的性能,由多核CPU闲暇来做物理计算,也许是Fusion的
CPU+GPU协同操作,总之,一切皆有可能,我们拭目以待……
相关文章:
NV与Intel的决斗!显卡的未来不属于AMD
http://financenews.sina.com/sinacn/304-000-106-109/2008-03-02/1853718849.html
PhysX物理战争,GeForce大战AGEIA物理加速卡。
http://www.50fs.tw/fstw/news/tonews.action?n=6987
--
_ˍˍˍˍˍˍˍ
/\ˍˍˍ
/\ˍˍˍ
//\/\ˍˍˍ
/\/\//\ˍˍˍˍˍˍ_
__ˍˍˍˍˍˍ
/\ˍˍˍ
/\ˍ_ˍ
/\ˍˍˍ
/\ˍˍˍˍˍ_
/\ˍˍˍˍˍ_ˍˍ_
_ˍˍˍˍˍˍ
//\/\/\ˍˍˍ_
//\ˍˍˍˍˍˍˍˍ
/\ˍˍˍˍˍˍˍ_ˍ_
_ˍ_ˍˍˍˍ
/\ˍˍˍ
/\ˍˍˍˍˍ_
//\ˍˍˍˍˍ_
/\ˍˍˍˍˍˍˍˍ_ˍ_
_ˍˍˍˍˍ
/\ˍˍˍ
/\ˍˍˍ
/\ˍˍˍ
/\ˍˍˍ_
/\ˍˍˍˍˍˍˍˍˍ_ˍ_
__ˍˍˍˍ
/\ˍˍˍ
/\ˍˍˍˍ_
//\/\ˍˍˍ
//\/\/\ˍˍˍˍˍˍˍ_
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.68.80.80
1F:→ hsz0566:打算用消费劵买二手ASUS PhysX P1物理加速卡...XD 01/18 18:16
2F:→ hsz0566:於是找了些资料 分享过来~ 01/18 18:16
3F:推 steve90370:好文!有看有推! 01/18 18:39
4F:推 pipi5867:nv真正要担心的是被这两大cpu&晶片组厂商玩.. 01/18 19:35
5F:推 netsphere:PhysX物理减速卡 01/18 20:04
6F:→ hsz0566:对ATi的用户而言还是加速卡啦 只是爽度没nV高阶卡高 XDD 01/18 20:18
7F:推 sdk:CUDA PhysX应该不支援rigid body cd...只有soft body... 01/18 23:07
8F:→ VictorTom:推一个 01/19 00:20