CATIA环境里专业显卡的VBO性能分析
一、CATIA及VBO背景介绍
由法国Dassault(达索)系统公司开发的CATIA是CAD/CAM领域最高端的软件,该软件原本运行于IBM UNIX工作站上,驱动系统为VM/CMS,从V5版本之后开始移植到个人PC平台上,使其强大的功能走进了更多的企业设计人员。与UG、PRO/E等高端软件相比,CATIA在曲面造型方面具有独特的优势,是任何三维CAD软件所不能比拟的,因而广泛应用于航空、航天、汽车、船舶等行业的复杂曲面造型设计中,现在国内外几乎所有的飞机设计制造行业都使用CATIA。
使用CATIA的航空企业包括了Boeing、Dassault、Bombardier、Lockneed Martin等知名公司;汽车领域Renault、Toyota、Karman 、Volvo、Chrysler等公司也是CATIA的用户。在造船、消费品、高科技电子、厂房制造、装配等领域拥有大量的客户。
CATIA软件提供了从概念设计到最终产品的全套跨行业解决方案,其功能模块可以用车载斗量来描述。包括零件设计、装配设计、交互式工程绘图、结构设计、创成式工程绘图、钣金设计、三维功能公差与标注设计、模具设计、航空钣金设计、线架和曲面设计、阴阳模设计、焊接设计、自由风格曲面造型、创成式曲面优化、汽车A级曲面造型、汽车白车身接合、快速曲面重建、基于草图的自由风格曲面造型、电路板设计、电气线束展平设计等数十项设计、加工、知识管理等子系统。
我们从“惠普HP xw8400工作站CATIA机械设计应用测试”一文开始进行CATIA图形测试至今,发现了一个规律:相同架构不同档次的NVIDIA Quadro FX显卡(从FX 370到FX 3700)在CATIA测试中表现完全相同,而SolidWorks下的差距也不明显(部分大模型例外)。这不禁让我们怀疑Dassault软件的图形引擎是否充分发挥了专业显卡的OpenGL硬件加速?在这种情况下购买2000元以上的中高端专业显卡运行这2个软件还有没有意义?
另外,在“NVIDIA和AMD_ATI专业显卡谁更强?-FireGL V5600对决Quadro FX1700”一文中,我们通过测试发现ATI FireGL专业显卡在CATIA中的表现明显不如NVIDIA Quadro FX,这是由于没有开启VBO功能的缘故。
AMD/ATI与Dassault合作研发的VBO技术
VBO(Vertex Buffer Objects,顶点缓冲对象)是OpenGL API的一个扩展函数,AMD/ATI与Dassault合作研发的一项技术,用于提升CATIA和SolidWorks软件中的3D图形速度,充分发挥专业显卡的OpenGL硬件加速能力。VBO技术能够将多边形和纹理数据放置在显存中,这样CPU与GPU之间的指令 / 数据传输就不再受到系统内存的带宽限制。AMD宣称VBO能带来5~10倍的性能提升(估计是相对于非专业显卡而言),事实上如果能够在现有的图形工作站基础上将速度提高一倍,就已经相当惊人了。
AMD/ATI官方公布的VBO在CATIA中性能提升情况
打开VBO功能的前提条件
1.CATIA V5R18 SP4以上或者V5R19;SolidWorks 2009或以上
2.目前主流AMD/ATI FirePro (FireGL) 专业显卡… NVIDIA Quadro FX?
3.添加Windows系统环境变量(CATIA)
在以上3个条件中,由于VBO是最近几年才有的技术,因此使用CATIA V5R18 SP3、SolidWorks 2008或者之前版本的用户只有更新软件版本才可以使用该功能。VBO到底会给FirePro(FireGL)带来多大的性能提升?NVIDIA的Quadro FX系列专业显卡是否也能够支持VBO?我们将通过下文中的应用测试来让大家了解。CATIA默认并不会打开VBO功能,需要在Windows系统下添加环境变量才能实现(见下图);而SolidWorks 2009直接就能够支持,不需要专门的设置。
“CAT_VBO_ALLOWED”变量的值可以设为“1”或“2”,由于没有这方面的详细资料,我们并不清楚两种模式在实现原理上的差别,后面我们会用测试来比较它们的效果。另外,如果把这个变量值设置为0,VBO功能不会打开。
测试平台 #p#page_title#e#
硬件配置
主机 惠普HP xw4600工作站
芯片组 Intel X38 Express
CPU Intel Core 2 Duo E8300 2.83GHz 6MB/1333MHz FSB
内存 2GB DDR2-800 ECC 双通道
硬盘 Seagete 7200.10 160GB SATA 7200rpm
显卡 AMD/ATI FirePro V5700 NVIDIA Quadro FX 3700
软件配置
操作系统 Windows XP Professional SP2
显卡驱动 ATI Catalyst 8.543 NVIDIA Forceware 178.46
应用软件 CATIA V5R19(VBO打开/关闭)
SolidWorks 2009、2007 SP0.0
测试软件 CATBench2005
SPECapc for SolidWorks 2007
显示器分辨率 1280×1024
其它 关闭垂直同步
说明:我们选择了AMD的FirePro V5700中端专业显卡进行测试,并使用NVIDIA Quadro FX 3700作为对比,分别测试2款显卡在打开VBO之前和之后两种情况下的CATIA图形速度。CATBench 2005测试软件是针对CATIA V5R14 SP5设计的,不过我们本次进行的图形部分(CATBench2005G)测试只是用到其中的模型,其对比结果依然具有实际的参考意义。SPECapc for SolidWorks 2007是专门用于测试2007版本的SolidWorks软件,在2009下运行会出现“重新保存模型”的提示,但是仍然能够正常完成并得到结果。我们只是用来对比2个版本之间的测试成绩高低,分析VBO在其中起到的作用。
二、CATIA V5R19 VBO性能测试
注:“VBO=1”代表VBO功能打开,变量值设为1;“VBO=2”代表VBO打开且变量值设为2。以下相同
CATBench2005G的测试成绩是“以参考系统所用的时间为基准,被测系统的总运行时间占参考系统的百分比”,因此得分越小代表图形速度越快。我们看到,无论是ATI FirePro(FireGL)还是NVIDIA Quadro FX专业显卡都能从VBO技术中明显获益。FirePro V5700在打开VBO之后只用了不到之前一半的测试时间,速度提高超过了一倍。在默认情况下(VBO关闭),FirePro在CATIA中的表现大幅落后与Quadro;而在启用VBO功能时,二者的表现已经相当接近。在3个单项成绩中,VBO在线框显示模式中带来的性能提升多于着色模式,特别是Quadro FX显卡(估计NVIDIA专业显卡驱动之前对CATIA着色应用的优化已经相当好了,进一步改善的余地已经不大)。
VBO目前存在的一些问题
这里要特别说明一下:我们通过测试发现,VBO环境变量设为“1”时要比“2”的性能更好一些,不过暂时还有一些小问题。Quadro FX 3700显卡(VBO=1)在测试中关闭模型打开另一个模型时,会随机出现CATIA停止响应的情况,只能强行结束程序;FirePro V5700的问题没有这么严重,但也会发生重新载入模型后性能异常下降(类似于VBO失效)的情况,只有退出CATIA软件再启动才能解决。因此,我们最终记录的Quadro FX测试成绩是VBO变量设为“2”时的结果。相信NVIDIA和AMD/ATI在注意到这个问题后能够通过升级显卡驱动来解决。
另外,在部分显示模式下,打开VBO前后的模型效果也有一些区别。见下方截图:
Auto Driveline(汽车传动杆)模型线框——VBO关闭
Auto Driveline(汽车传动杆)模型线框——VBO打开
我们看到,在打开VBO之后,Driveline模型线框显示下多出了一些连线。
Auto Body(汽车车身)模型隐含线显示——VBO关闭
Auto Body(汽车车身)模型隐含线显示——VBO=1
Auto Body(汽车车身)模型隐含线显示——VBO=2
我们还注意到,VBO环境变量设为“1”和“2”时,隐藏线模式的显示效果与打开VBO之前也有所区别。当VBO=1时,模型显示中增加了很多条参考辅助线;而VBO=2时则比较差强人意,基本没有看到隐藏线。 #p#page_title#e#
除了上面列出的几个问题,测试中VBO的总体表现还是让人满意的。下面我们将列出测试中7个不同大小的模型显示速度提高的详细情况,让大家实实在在感受一下VBO带来的好处。
不同模型帧速度、可视化时间测试详细结果
以上是每个测试模型在“着色+线框”、着色和线框3种显示模式下速度的平均值。在前两个小模型(文件大小:1~2MB)上,VBO的作用似乎不明显;而Holland Submarine(潜水艇)和Auto Driveline两个模型测试中的效果最好。其中A卡(FirePro V5700)和N卡(Quadro FX 3700)在潜水艇模型上的帧速度分别由9.3、13.7上升至24.9和28.3,而汽车传动模型也由10帧或者更低提升到将近20帧/秒,主观上感觉操作时的流畅度大为提高。VBO带来的提升幅度与模型大小(从上到下依次增大)没有必然的联系,倒是和模型的特征关系密切。
再来看一下后面5个相对大一些模型的具体测试成绩:
Engine Assembly(发动机装配)模型 3.6MB
我们在这里看到的差距比前面的“平均帧速度”明显更大,AMD/ATI和NVIDIA专业显卡在打开VBO后性能提高了1~3倍。产生这种差异与CATBench2005测试结果表对图形帧速度的计算方法有关,因为测试中的原始记录都是可视化时间(Visualization Time),也就是模型旋转过程中显示每一帧所用的平均时间(见下图),单位是ms(毫秒),然后通过“1/((1/Frequency*)+(Xxx/1000))”这个工式计算出帧速度。其中“Xxx”就是Excel表格中的一项时间记录,除以1000之后其单位就由毫秒变成了秒,此时还要加上一个参数(Frequency*是表格内置的一个函数)后,再被1除得到结果。当然CATIA Community对软件本身的了解肯定要比我们深入的多,加上去的“参数”应该是图形可视化之外的环节消耗的时间。不过这样计算出的“帧速度”好像比实际值要小一些,特别是在测试小模型时,由于可视化时间的记录值较小,受到的“影响”更大。例如前面提到那2个最小的模型,在超过50帧/秒之后就看不到明显的变化了。
CATBench2005图形测试
在Engine Assembly这个并不算太大的模型中,不同模式下VBO产生的性能提高幅度大小依次为:“着色+线框及隐含线”、“着色+线框”、着色和线框,也就是说显示效果越复杂提升就越大。尽管ATI FirePro(FireGL)因此受益更多,但最终成绩NVIDIA Quadro还是更胜一筹(也不排除是FX 3700本身定位更高的缘故)。
Auto Body Front(汽车前部分车身)模型 12.4MB
Auto Body Front是BMW(宝马)汽车提供的模型,比前面几个更大一些。测试中VBO的优势没有发动机模型那么大,Quadro FX 3700在着色模式下甚至不升反降,可见NVIDIA专业显卡178.46版驱动对VBO的支持还有待改进。
Holland Submarine(潜水艇)模型 20.2MB
潜水艇模型测试中VBO的效果非常好,AMD/ATI和NVIDIA专业显卡在不同显示模式下的速度分别提高了2~5倍。打开VBO后Quadro FX 3700仍然保持一定的领先。
Auto Driveline(汽车传动杆)模型 63.5MB
Auto Driveline模型是BMW汽车的传动装置。随着模型的增大,可视化时间的延长和帧速度的下降是正常的。不过VBO的作用还是非常明显,优化后的成绩FirePro V5700与FX 3700基本处于同一水平。
Auto Body(汽车车身)模型 86.6MB
Auto Body Front是BMW提供的汽车车身模型。在本次测试中最大的这个装配体上,VBO功能带来的提升没有前面几个模型那么大,尤其是着色显示方式下。这可能与该模型在色彩方面的特征相对简单有关。
三、SolidWorks 2007 vs. 2009
由于SolidWorks 2009版本直接支持VBO,不需要专门的设置,因此这部分不是本文的重点,更像是比较SolidWorks 2007和2009之间的性能差距。我们在2个版本的软件中分别运行SPECapc for SolidWorks 2007测试包,发现AMD/ATI FirePro和NVIDIA Quadro FX专业显卡在2009下的成绩都出现了一定的下降。不过这并不代表2009的性能就比2007差,因为使用的测试软件是专为SolidWorks 2007设计的,里面用到的模型也都为该版本优化过。下面我们来看一下具体的图形测试时间记录。 #p#page_title#e#
我们看到前面4项小模型测试在SolidWorks 2009中用的时间都大大超过2007,而后面几个大模型2009版本就表现出了明显的优势,无论FirePro V5700还是Quadro FX 3700都能从VBO功能上获益。总体表现上FX 3700依然更胜一筹,不过V5700在最后一个大发动机模型中领先。
SolidWorks 2009中的模型显示效果
SolidWorks 2009默认会打开RealView显示功能,模型在预览模式下的显示效果会好很多(诸如光照和反射等,但是没有了透明?)。而在SolidWorks 2007下AMD FirePro V5700显卡使用8.543版本驱动时无法打开RealView,NVIDIA Quadro FX 3700虽然能够选中该功能,但是GTX赛车模型的显示却没有变化(见下图)。我们估计,2009版本小模型测试成绩不佳可能与RealView有关,因为它多少会消耗一定的资源。
SolidWorks 2007中的模型显示效果
下面是AMD官方的SolidWorks VBO技术演示视频:
总结——VBO应用展望
在本文的测试中,VBO功能给CATIA和SolidWorks大模型应用带来的性能提升还是相当大的,而且关键还是在现有硬件平台(工作站和专业显卡)无需添加任何设备的前提下。尽管该技术目前还存在一些小问题,但对主流应用没有大碍。因此我们认为VBO是厂商给用户提供的一个免费蛋糕。
SolidWorks 2009自身集成了VBO功能,软件厂商的宣传会倾向于新版本软件在性能上的优化,因此大家容易忽略这个特性。而CATIA默认并未打开VBO,也没有公开宣传,说明它还有一些不成熟的地方。然而我们在测试中实在的感受到了速度变化,大模型的处理更加流畅,能够直接带来工作效率的提高,我想这已经足够了。
从本文中,我们可以看出硬件厂商和ISV(Independent Software Vendors,独立软件供应商)之间联盟的重要性。软件针对流行的硬件进行优化,才能够最大限度的发挥出硬件的性能,同时提升软件应用的效率。整个工作站行业,惠普在这方面应该说是做得比较好的,HP和Dassault也是多年的合作伙伴。然而作为惠普工作站优势之一的PTF性能调优软件中的Hypertune模块早已不再对CATIA提供支持,只剩下UGS NX的优化,关于VBO功能之前也没见到HP有相关的宣传。
由于VBO是在OpenGL基础上开发的技术,因此NVIDIA Quadro FX专业显卡也同样能够受益,不过我们还是应该感谢AMD/ATI FireGL团队对此作出的努力。
至本文截稿之时,我们测试了NVIDIA较新的181.20版专业显卡驱动,发现该驱动对VBO的支持更好,在环境变量设为“1”时不再出现CATIA停止相应的情况,而且性能进一步提高。然而有趣的是:中低端的Quadro FX 570和顶级产品FX 5800的表现似乎相同,这不禁让我们怀疑VBO到底发挥的是硬件性能还是专业显卡的OpenGL驱动?总之今后我们还会进行VBO方面的测试,继续关注该技术的发展。
对于正在使用图形工作站和专业显卡的CATIA用户,都可以按照本文中提到的方法(添加系统环境变量)打开VBO功能,亲自体验一下它带来的改善。近期准备采购硬件设备的用户也应该关注一下这方面,以更好的优化资金利用。