https://zhuanlan.zhihu.com/p/572368515
最近终于静下心来,解决掉一个困扰我将近一年的技术问题。具体方法倒没有多么复杂高深,反而是对待性能方面的问题,先要找出稳定复现的操作流程,然后才能确保之后的验证过程是有效的。
背景信息
这次具体的问题,是我至少遇到过几次工作站的用户反映:在最新一代的NVIDIA RTX A系列(如A4000)或者T系列(如T2000)专业显卡上运行SolidWorks 2015、2016、2017这些老版本软件时,性能明显比之前的Quadro P系列(如P4000)等慢很多。
其实,如果是SolidWorks 2018及之后的版本,ISV官网上是有解决方案的。如下图:
在https://www.solidworks.com/zh-hans/support/hardware-certification/网页的硬件认证&显卡驱动查询中,如果选择了RTX A4000,然后可选的经过认证SolidWorks版本只有2020到最新的2022。但我用红圈标出的部分,可以下载对应5个版本软件的补丁。
也就是说,如果因为SolidWorks软件本身识别不到较新的显卡型号,没有打开硬件加速(注意,这里指的是常规显卡加速,而不是2020版本之后那个“增强图形性能”)而导致性能问题时,可以通过安装补丁来解决。
对于当前新一代专业显卡,SolidWorks官方只支持到最早2018版本,NVIDIA对此也表示无能为力。以前遇到客户反映这类性能问题时,我们只能建议他们升级软件版本——但仍有部分用户表示出困难:一方面可能是正版软件升级的费用;还有些是现有的模型用老版本SolidWorks设计的,软件升级后需要重新调整否则也会跑的比较慢。
性能问题复现测试
我随便选了一台手头的Dell主机,显卡除了RTX A4000之外,用另一块Quadro M4000老卡作为参照。首先我安装上SolidWorks 2016,并尝试用软件自带的简单性能测试工具跑一个。结果如下:
上面是3块显卡的SolidWorks基准测试结果,由于RTX A4000和M4000跑不出明显差距,我又找来一块1050Ti游戏显卡,表现居然也差不多。唯一有点不同的是,Quadro M4000在SolidWorks 2016下可以正常支持RealView显示特效,而A4000估计是太新了,没有补丁的情况下打不开这个。
显然,由于模型太小难以给现在的显卡产生足够压力,上述测试方案不可用,因为性能问题无法复现。然后我试着用较大的模型手动操作看一看,但我水平有限且不是软件使用方面的专家,再赶上手头有其它事情就把这个放下一段时间。等再想搞的时候,毕竟是有些挑战的问题,得赶上自己状态好:)
昨天,我再次重新制订了测试计划,这次干脆改用权威的SPECapc SolidWorks测试软件。之前我最后一次用是在《基准测试的局限:NVIDIA RTX A4000显卡SOLIDWORKS性能分析》里测的2021新版本,而本次我决定先测2017软件,我初步判断2015-2017版本的问题应该出在同一个地方。
由于以前在《SolidWorks 2020测试:GPU如何速度翻倍 & 赢画质?》等测试中的经验,显卡驱动版本有时对SolidWorks的表现影响不小。这次我也先考虑了,由于支持Quadro M4000最新的驱动版本只到472.84,而RTX A4000对高版本SolidWorks又认证过这个驱动,干脆我就统一先用该版本测试。接着就踩了第二个坑。
注意:对于老型号显卡+老版软件,驱动版本不是越新越好。因为我发现M4000的性能明显不正常。
如上图,SPECapc SolidWorks 2017测试只跑到0.xx分,要知道我3年前测试入门级专业显卡(参见:《Precision 3540移动工作站评测(SolidWorks & Revit实战)》)总分都能跑到1.41。
接下来查询合适的驱动,由于SolidWorks网站已经无法查到2018之前的版本,我去了http://precisionworkstations.com/software-certification-lookup,找到以下有价值的参考信息。
由于Quador M系列显卡有点老,Dell对SolidWorks 2016认证测试的型号不是很全,但M1200也是同一代。换成375.86驱动之后,M4000的性能就满血了。
RTX A4000满血后的跑分、视频对比
接下来就要解决RTX A4000显卡的问题了。显然它用不了375.86那么老的驱动,我尝试过认证驱动中最早的462和最新的516,甚至都无法打开SolidWorks 2017中的RealView。我之前试过网上有人说的改注册表强行打开“小金球”的方法,这一次在A4000上也能用。然后跑SPECapc SolidWorks 2017,依然面临和M4000用高版本驱动一样的性能问题…
既然把本文写出来,就表明最终我找到了解决方法。先看下面对比:
如上图,我并没有列出RTX A4000的原始测试成绩,因为刚一跑起来就看出明显的性能问题,干脆终止了。在经过我“DIY显卡性能补丁”之后,A4000在SolidWorks 2017下终于能跑得比Quadro M4000等前辈更快了。其实这里的瓶颈在CPU——我这台Dell测试机只配置的4GHz左右Turbo频率;再加上老版本SolidWorks还没有“增强图形性能”选项。不过,A4000终归是能正常发挥了。
以上图表是不是不够直观?下面我放上对比视频吧: