POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 5443|回复: 52
打印 上一主题 下一主题

物理计算这么热闹,转篇文章过来好了,基本说的比较正确

[复制链接]
跳转到指定楼层
1#
发表于 2008-8-14 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
物理大战新篇章

  2008年6月,NVIDIA与AMD-ATI先后发布了自家新一代高阶产品GT200(GeForce GTX 280/260)与RV770(Radeon HD 4850/4870),我们在惊诧于新产品的极限性能时,众多新技术引用也是玩家关注的重点,例如NVIDIA的CUDA架构,AMD-ATI的GPGPU解决方案等。在众多的技术当中,物理加速技术由于震撼的视觉体验及两家不同的解决方案再次成为了人们关注的焦点。
  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最终选择了前者。
  物理加速技术在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模式的第二块显卡来进行物理加速。

  从上图中可以看出,Havok FX API通过DirectX将数据发给GPU驱动,如果游戏或者驱动不支持SLI物理,那么将不会发送物理数据,反之则交给GPU 2进行物理计算,计算结果则返回给Havok API。
  与NVIDIA的物理解决方案类似,AMD-ATI同样采用Havok FX引擎,同样基于多卡互联CrossFire来实现物理加速,第二块显卡来进行GPU物理加速。
  当时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的解决方案。
  无论是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+的。
  实质上讲无论是CTM接口,还是现在的CAL/Beook+,AMD-ATI执行物理加速的概念都没有变,那就是GPGPU的并行能力进行物理运算,而NVIDIA方面可以真正称的上市GPGPU物理加速还是从CUDA开始的。另外我们也注意到,之前无论NVIDIA还是AMD-ATI在展示自己物理运算时都是基于双卡技术,而如今他们更愿意谈论单卡。
2#
 楼主| 发表于 2008-8-14 14:46 | 只看该作者
明天—技术与现实之间的抉择
  那么物理加速技术的明天到底是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加速上,我们先来看一下最简单的物理加速计算过程。[size=-1]小熊在线www.beareyes.com.cn
  无论PhysX引擎还是Havok引擎物理计算都基于以下步骤:
  Integrate整合初步计算
Collide碰撞判定
Solve Collisions碰撞结果计算
  在Integrate整合初步计算阶段,进行物理对象的一些初始物理状态的初始化,包括速度、加速度等各项信息,为后面的运算做准备。Collide 碰撞判定进行一些对象之间的碰撞检测,并以对的形式进行处理(因为碰撞总是两个物体相互的),Solve Collisions碰撞结果计算阶段则是对碰撞的后处理,包括碰撞后的速度等。Solve Collisions碰撞结果计算阶段是最复杂的,那么我们可以看出物理计算是一个对并行计算非常依赖的运算。[size=-1]小熊在线www.beareyes.com.cn

Solve Collisions
  我们看到,物理运算所需的大量并行计算正是GPU所具备的优势,利用GPU做物理运算确实是天经地义的事,那么是不是说物理计算目前就是该由GPU来负责呢?在回答这个问题之前我们先来看一下NVIDIA在近期发布的PhysX驱动,搭配PhysX驱动在运行3DMark Vantage CUP测试第二个场景的时候,由于GPU接替(或者说是加速)物理运算,使这个场景成绩暴增,可以看出GPU取代CPU物理加速时的决定性优势,而在NVIDIA最新发布虚幻3物理地图演示中,我们却可以看到如下的成绩:

1680×1050

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协同操作,总之,一切皆有可能,我们拭目以待……
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2008-8-14 14:47 | 只看该作者
最后,个人无责任推论:
1、如果Intel坚持用CPU实现物理计算,则Havok必死,不用想。CPU不可能放弃x86指令,为了提升x86指令的执行性能,CPU的并行计算能力在很长时间内不可能和GPU相比。PhysX不会等到CPU的计算能力超过GPU那天才开始发展。
2、如果PhysX大行,AMD自然会跟进,A-Fan也不用急,到时候估计显卡都换了两三代了。就算是旧卡也不用怕,这是软件上就能解决的问题。
3、Larabee出来之后,Intel会改变态度,迅速推出Havok FX,短期内Larabee独占,然后通过扯皮、权利金等手段授权给NV和AMD。
4、Havok受到大部分游戏厂商广泛支持后,MS突然推出DX11.X或者DX12,包含DirectPhysics子集,一统江湖。
5、Intel、AMD、NV提供硬件支持DirectPhysics……
至于显卡性能问题,游戏厂商会自己去平衡的,A-Fan不需要说太多N卡连显卡性能都不够,支持物理计算多余之类的问题。现在是因为GPU物理计算还未流行,开发时自然把GPU运算能力都放到画面上,等GPU物理计算流行了,游戏厂商自然会根据当时硬件的能力,在画质和性能上做出很好的平衡。我相信像Crysis这么NC,无冬2这种烂引擎的游戏还是少数。
回复 支持 反对

使用道具 举报

4#
发表于 2008-8-14 14:48 | 只看该作者
无论哪种标准,未来必须走硬件加速的道路,看看PhysX能否抓住这个机会。
回复 支持 反对

使用道具 举报

5#
发表于 2008-8-14 14:51 | 只看该作者
原帖由 harleylg 于 2008-8-14 14:47 发表
如果Intel坚持用CPU实现物理计算,则Havok必死,不用想。CPU不可能放弃x86指令,为了提升x86指令的执行性能,CPU的并行计算能力在很长时间内不可能和GPU相比。


一相情愿,larrabee是干嘛用的
havok不会死,havok FX已经死了


larrabee是CPU
回复 支持 反对

使用道具 举报

6#
发表于 2008-8-14 15:03 | 只看该作者
原帖由 the_god_of_pig 于 2008-8-14 15:51 发表


一相情愿,larrabee是干嘛用的
havok不会死,havok FX已经死了


larrabee是CPU


{closedeyes:]真搞笑。。。那主板不用cpu了
回复 支持 反对

使用道具 举报

7#
发表于 2008-8-14 15:09 | 只看该作者
原帖由 红发IXFXI 于 2008-8-14 15:03 发表


{closedeyes:]真搞笑。。。那主板不用cpu了

应该说主板不用显卡了。{closedeyes:]
回复 支持 反对

使用道具 举报

8#
发表于 2008-8-14 15:13 | 只看该作者
原帖由 红发IXFXI 于 2008-8-14 15:03 发表


{closedeyes:]真搞笑。。。那主板不用cpu了


谁说PCI-E上只能插显卡了{lol:]
回复 支持 反对

使用道具 举报

9#
发表于 2008-8-14 15:23 | 只看该作者
这个就比较全面了。
amd从硬件层来讲支持physx应该没问题。
但是支持哪个物理加速,以后谁是标准,肯定还左右不定。

[ 本帖最后由 疯一样的男子 于 2008-8-14 15:25 编辑 ]
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2008-8-14 15:28 | 只看该作者
原帖由 the_god_of_pig 于 2008/8/14 14:51 发表


一相情愿,larrabee是干嘛用的
havok不会死,havok FX已经死了

larrabee是CPU


我的理解是传统CPU实现的就是现在的Havok,Havok FX是当时的叫法,意思是硬件加速实现的Havok,至于是什么硬件并不重要,AMD、NV用GPU来实现,也许Creative有兴趣插一脚用X-Fi的运算芯片来实现,又或者那家小公司说他们退出专门的Havok硬件加速卡。如果Intel完全放开了,大家都可以用各自的方式去实现Havok,那么就可以叫Havok FX吧,也许最终名字不是这个,不过是个叫法而已。

所以我的意思是如果Havok一直只支持CPU的话,表现必然不如PhysX,早晚使得PhysX变成事实标准。就算LRB出来了,也要看AMD支持谁,事实上,如果AMD现在支持PhysX的话,PhysX马上就会变成物理计算的事实标准,各大游戏厂商马上跟风。LRB能占多大份额,Havok在上面表现如何,都是有遥远的事。不过AMD现在也不会扶持去NV就是了。

LRB是不是CPU的问题,我只能这么说,PC一定是要有CPU的,但可以没有LRB……
回复 支持 反对

使用道具 举报

11#
发表于 2008-8-14 15:45 | 只看该作者
原帖由 harleylg 于 2008-8-14 15:28 发表


所以我的意思是如果Havok一直只支持CPU的话,表现必然不如PhysX


为什么?依我看Havok不会支持任何GPU,larrabee不算GPU,但Larrabee进行物理加速性能不会弱{wink:]
回复 支持 反对

使用道具 举报

12#
发表于 2008-8-14 16:17 | 只看该作者
原帖由 kvip 于 2008-8-14 15:47 发表


那就等出来了以后再看哇.



你以为Havok FX 挂掉是谁的旨意{lol:]
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2008-8-14 16:25 | 只看该作者
原帖由 the_god_of_pig 于 2008/8/14 15:45 发表


为什么?依我看Havok不会支持任何GPU,larrabee不算GPU,但Larrabee进行物理加速性能不会弱{wink:]


Havok如果支持LRB,但不对NV、AMD不开放的话,除非LRB一出来就把NV和AMD完全干掉,不过可能么?既然LRB暂时不去跟AMD、NV争夺GPU市场,又限制了Havok在这两家产品上的表现。结果只有三个:
1、AMD去支持PhysX,毕竟对AMD来说,Intel的威胁性更强一点。然后两家游戏GPU提供商同时支持PhysX,PhysX成为事实标准,Havok死掉。为了拉拢AMD对抗Intel,NV很有可能成立一个子公司,双方各占部分股份。
2、AMD自己再搞一个物理标准出来。然后进入三国时代。
3、第三方搞一个物理标准,然后AMD、NV都去支持。这件事情除了MS好像别人很难干起来,因为NV、Intel已经有自己的标准了。Havok还是死掉。
回复 支持 反对

使用道具 举报

14#
发表于 2008-8-14 16:28 | 只看该作者
原帖由 harleylg 于 2008-8-14 16:25 发表


Havok如果支持LRB,但不对NV、AMD不开放的话,除非LRB一出来就把NV和AMD完全干掉,不过可能么?既然LRB暂时不去跟AMD、NV争夺GPU市场,又限制了Havok在这两家产品上的表现。结果只有三个:
1、AMD去支持PhysX, ...


A,N都支持PX也无妨啊,主要看游戏厂商支持谁,Havok可以用x86+Intel有钱足以使绝大部分游戏厂商倒戈{lol:] {victory:]
回复 支持 反对

使用道具 举报

15#
 楼主| 发表于 2008-8-14 16:48 | 只看该作者
原帖由 the_god_of_pig 于 2008/8/14 16:28 发表


A,N都支持PX也无妨啊,主要看游戏厂商支持谁,Havok可以用x86+Intel有钱足以使绝大部分游戏厂商倒戈{lol:] {victory:]


如果在LRB出来之前,PhysX已经形成事实标准的话,Havok就需要去兼容PhysX了……这可不是很容易的事……
如果Intel有钱就行的话,现在大家用的就不是X86的Core2,而是IA64的安腾桌面版了……
回复 支持 反对

使用道具 举报

16#
 楼主| 发表于 2008-8-14 16:53 | 只看该作者
原帖由 yngwie 于 2008/8/14 16:30 发表
厂商会主动优化,某厂不用和NV一样主动出击


不主动出击的后果就是FPS性能虽然强了,但是效果差一截……

如果性能足够的话,你要200FPS滴普通效果呢?还是要60FPS+物理效果?
回复 支持 反对

使用道具 举报

17#
发表于 2008-8-14 17:04 | 只看该作者
原帖由 harleylg 于 2008-8-14 16:48 发表


如果在LRB出来之前,PhysX已经形成事实标准的话,Havok就需要去兼容PhysX了……这可不是很容易的事……
如果Intel有钱就行的话,现在大家用的就不是X86的Core2,而是IA64的安腾桌面版了……


larrabee是基于x86的通用CPU,在通用方面其可用性不是任何GPU可以比的,效率和较容易编程足够让游戏厂商主动找上门来{victory:] {victory:]

而且不仅仅是物理加速,以后还会有XX加速,XXX加速,只要是基于密集浮点运算的功能,Larrabee都可以相对容易实现。而A/N的GPU实现起来就要麻烦得多{lol:]
回复 支持 反对

使用道具 举报

18#
发表于 2008-8-14 17:04 | 只看该作者
有个东西叫RUNS GREAT ON!
别以为就只有The Way....
和Intel比有钱??比号召力?{titter:]
回复 支持 反对

使用道具 举报

头像被屏蔽
19#
发表于 2008-8-14 17:20 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

20#
发表于 2008-8-14 18:02 | 只看该作者
PC上的HAVOK授权免费,收费只针对CONSOLE。INTEL支持哪个很大程度也会看MS的倾向。估计PhysX挂掉的可能性要大一些。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-1-31 02:01

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表