GPU物理加速对于许多人来说或许是一个十分陌生的概念。NV早在两年前就承诺G80核心将支持GPU物理加速。而如今,随着GT200系列核心的发布,这一承诺终于得以实现。
WylerStudio小组(WST)经过几天的努力,终于得出NV显卡开启GPU物理加速的方法,并与大家一同分享。
首先,请先确定您的显卡支持nVidia的CUDA架构。支持此架构的核心有G80、G92以及GT200等。而其它非顶级核心(如G84、G86、G94等)可能暂时无法支持。我们曾经尝试过在G94核心的9600GT显卡上开启GPU物理加速,虽然性能有小幅度提升,但远不如G80、G92核心那么明显。况且,还存在许多影响因素,比如驱动的版本更新对显示性能也会有小幅度提升。
另外,GPU物理加速会耗费一部分处理性能,所以在GPU性能无法满足要求的情况下,并没有开启GPU物理加速的必要。
目前我们仅使用Windows Vista的Forceware驱动程序进行GPU物理加速的支持。而Windows XP环境下对此技术是否支持还是个未知数。所以如果您使用的是Windows XP系统,我们建议您将系统升级至Windows Vista SP1。
nVidia目前支持GPU物理加速的驱动程序仅支持9800GTX/9800GTX+/GTX260/GTX280,拥有这四款显卡的用户仅需安装支持GPU物理加速的驱动程序和PhysX物理驱动即可打开物理加速。对于驱动不支持的显卡,我们必须采用MOD驱动的方法来开启加速。
这里,我们以G92核心的8800GT为例,为大家讲解如何打开GPU物理加速。本方法仅适用于支持CUDA的GPU。警告:这一动作仅适用于发烧友及硬件玩家,若造成任何硬件损坏或数据丢失,WylerStudio Team不负有任何责任。
首先,需要nVidia官方的177.39 Beta或更高版本的驱动,以及nVidia PhysX 8.06.12或更高版本的物理驱动。
这里,我们以
Forceware 177.41 WHQL/
PhysX 8.06.12版本驱动进行修改。(点击链接下载)
硬件平台:
Intel Core 2 Duo E6750
2.66GHz@3.68GHz
Gigabyte GA-X38-DQ6 rev1.0
OCZ XTC System Elite Edition DDR2-800MHz@1104MHz 5-5-5-18 2T
Galaxy 8800GTE@720/1800/2200MHz
(1)点击显卡驱动的解压程序,会提示选择安装目录,我们建议放置在C:\NVIDIA\WinVista\177.41。

(2)安装完后,驱动安装程序自动启动,并会弹出一个对话框,意为不支持此硬件。
点击确定,我们就可以开始修改驱动了。

(3)打开刚才驱动安装的目录(这里以C:\NVIDIA\WinVista\177.41为例),打开nv_disp.inf。

(4)找到[NVIDIA.Mfg.NTx86.6.0]一行,然后在后面插入这些字段:
%NVIDIA_G80.DEV_0191.1% = nv_G8x, PCI\VEN_10DE&DEV_0191
%NVIDIA_G80.DEV_0193.1% = nv_G8x, PCI\VEN_10DE&DEV_0193
%NVIDIA_G80.DEV_0194.1% = nv_G8x, PCI\VEN_10DE&DEV_0194
%NVIDIA_G80.DEV_0197.1% = nv_G8x, PCI\VEN_10DE&DEV_0197
%NVIDIA_G80.DEV_019D.1% = nv_G8x_DOEB, PCI\VEN_10DE&DEV_019D
%NVIDIA_G80.DEV_019E.1% = nv_G8x_DOEB, PCI\VEN_10DE&DEV_019E
%NVIDIA_G84.DEV_0400.1% = nv_G8x, PCI\VEN_10DE&DEV_0400
%NVIDIA_G84.DEV_0401.1% = nv_G8x, PCI\VEN_10DE&DEV_0401
%NVIDIA_G84.DEV_0402.1% = nv_G8x, PCI\VEN_10DE&DEV_0402
%NVIDIA_G84.DEV_0403.1% = nv_G8x, PCI\VEN_10DE&DEV_0403
%NVIDIA_G84.DEV_0404.1% = nv_G8x, PCI\VEN_10DE&DEV_0404
%NVIDIA_G84.DEV_040A.1% = nv_G8x, PCI\VEN_10DE&DEV_040A
%NVIDIA_G84.DEV_040D.1% = nv_G8x, PCI\VEN_10DE&DEV_040D
%NVIDIA_G84.DEV_040E.1% = nv_G8x, PCI\VEN_10DE&DEV_040E
%NVIDIA_G84.DEV_040F.1% = nv_G8x, PCI\VEN_10DE&DEV_040F
%NVIDIA_G86.DEV_0420.1% = nv_G86_0, PCI\VEN_10DE&DEV_0420
%NVIDIA_G86.DEV_0421.1% = nv_G86_0, PCI\VEN_10DE&DEV_0421
%NVIDIA_G86.DEV_0422.1% = nv_G86_0, PCI\VEN_10DE&DEV_0422
%NVIDIA_G86.DEV_0423.1% = nv_G86_0, PCI\VEN_10DE&DEV_0423
%NVIDIA_G86.DEV_0424.1% = nv_G86_0, PCI\VEN_10DE&DEV_0424
%NVIDIA_G86.DEV_042C.1% = nv_G86_0, PCI\VEN_10DE&DEV_042C
%NVIDIA_G86.DEV_042F.1% = nv_G86_0, PCI\VEN_10DE&DEV_042F
%NVIDIA_G92.DEV_0600.1% = nv_G9x, PCI\VEN_10DE&DEV_0600
%NVIDIA_G92.DEV_0602.1% = nv_G9x, PCI\VEN_10DE&DEV_0602
%NVIDIA_G92.DEV_0604.1% = nv_G9x, PCI\VEN_10DE&DEV_0604
%NVIDIA_G92.DEV_0606.1% = nv_G9x, PCI\VEN_10DE&DEV_0606
%NVIDIA_G92.DEV_0609.1% = nv_G9x, PCI\VEN_10DE&DEV_0609
%NVIDIA_G92.DEV_060C.1% = nv_G9x, PCI\VEN_10DE&DEV_060C
%NVIDIA_G92.DEV_060D.1% = nv_G9x, PCI\VEN_10DE&DEV_060D
%NVIDIA_G92.DEV_0610.1% = nv_G9x, PCI\VEN_10DE&DEV_0610
%NVIDIA_G92.DEV_0611.1% = nv_G9x, PCI\VEN_10DE&DEV_0611
%NVIDIA_G92.DEV_0612.1% = nv_G9x, PCI\VEN_10DE&DEV_0612
%NVIDIA_G92.DEV_0619.1% = nv_G9x, PCI\VEN_10DE&DEV_0619
%NVIDIA_G92.DEV_061A.1% = nv_G9x, PCI\VEN_10DE&DEV_061A
%NVIDIA_G92.DEV_061B.1% = nv_G9x, PCI\VEN_10DE&DEV_061B
%NVIDIA_G92.DEV_061C.1% = nv_G9x, PCI\VEN_10DE&DEV_061C
%NVIDIA_G94.DEV_0622.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0622
%NVIDIA_G94.DEV_0623.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0623
%NVIDIA_G96.DEV_0640.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0640
%NVIDIA_G96.DEV_0641.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0641
%NVIDIA_G96.DEV_0642.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0642
%NVIDIA_G96.DEV_0643.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0643
%NVIDIA_G96.DEV_0644.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0644
%NVIDIA_G96.DEV_0645.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0645
%NVIDIA_G96.DEV_0648.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_0648
%NVIDIA_G96.DEV_065C.1% = nv_G9x_HD, PCI\VEN_10DE&DEV_065C
%NVIDIA_G98.DEV_06E0.1% = nv_G98, PCI\VEN_10DE&DEV_06E0
%NVIDIA_G98.DEV_06E1.1% = nv_G98, PCI\VEN_10DE&DEV_06E1
%NVIDIA_G98.DEV_06E2.1% = nv_G98, PCI\VEN_10DE&DEV_06E2
%NVIDIA_G98.DEV_06E4.1% = nv_G98, PCI\VEN_10DE&DEV_06E4
%NVIDIA_G98.DEV_06E9.1% = nv_G98_HD, PCI\VEN_10DE&DEV_06E9
当然,我们并不需要全部复制,比如采用G92核心的显卡,只要将含有G92的几行复制进去就可以了。

然后,找到[ControlFlags]一行,将下列字段插入到
[nv_C7x.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
这几行之后,并严格控制缩进,即每一部分中间空一行。
[nv_G86_0]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = VideoControl2To20000_AddReg
AddReg = LimitVideoFeatures_AddReg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G86_0.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G86_0.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G86_0.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G98]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = nv_DX10_addreg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G98.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G98.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G98.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G98_HD]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G98_HD.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G98_HD.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G98_HD.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G9x_HD]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G9x_HD.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G9x_HD.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G9x_HD.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G9x]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = nv_DX10_addreg
AddReg = EvictionThreshold_AddReg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G9x.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G9x.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G9x.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G8x]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = LimitVideoFeatures_AddReg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G8x.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G8x.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G8x.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
[nv_G8x_DOEB]
FeatureScore = F6
CopyFiles = nv.KMode, nv.UMode, nv.OpenGL, nv.Panel, nv.Uninstall, nv.Help, nv.PanelClient
AddReg = nv_SoftwareDeviceSettings
AddReg = nv_ControlPanelSettings
AddReg = nv_icdSoftwareSettings
AddReg = DOEB_AddReg
AddReg = Uninstall_AddReg
AddReg = EvictionThreshold_AddReg
AddReg = LimitVideoFeatures_AddReg
AddReg = nv_DX10_addreg
DelReg = nv_ClearRegistrySwitches
RegisterDlls = nv.RegisterDlls
[nv_G8x_DOEB.CoInstallers]
CopyFiles = nv.CoInstaller
AddReg = nv_CoInstaller_AddReg
[nv_G8x_DOEB.Services]
AddService = nvlddmkm, 0x00000002, nv_Service_Inst
AddService = nvsvc,, nv_Service_Inst_2
[nv_G8x_DOEB.GeneralConfigData]
MaximumDeviceMemoryConfiguration = 128
MaximumNumberOfDevices = 4
当然,此步我们也无需复制全部,只需要将与上步字段有关的复制下来即可。
这里以G92 8800GT为例:
然后保存文件,若修改不成功,可重新运行解压程序进行覆盖。
(5)点击Setup.exe安装驱动程序。MOD驱动后驱动程序的安装即可正常进行。
(6)重新启动后,安装PhysX 8.06.12驱动。
至此,NV显卡的GPU物理加速就成功打开了。
另外,GPU-Z中显示出的设备名称可能会存在异常,属于正常现象,不影响使用。
以8800GT为例进行对比:
未开启物理加速(Forceware 177.35 WHQL):

开启物理加速(Forceware 177.41 WHQL/PhysX8.06.12):

CPU得分竟增长了3倍有余,总分也提升了25%左右,性能提升令人惊讶。
需要提醒的是,Futuremark已经对开启GPU物理加速的3DMark Vantage结果进行封杀,所以开启加速后的结果不能登上官方排行榜。
GPU物理加速目前仅支持3DMark Vantage和Unreal Tournament 3进行物理加速的开启,其中UT3的物理加速需要下面的地图并在显示设置中开启硬件物理加速。
附上Unreal Tournament 3开启物理加速的地图
NVIDIA_PhysX_UT3_Mod-Pack.msi
感谢关注!
编辑:WST_曉楓
测试:WST_OnlyHe
拍摄:WST_Daisy
鸣谢:Gigabyte技嘉,Galaxy影驰,Thermaltake曜越,CoolerMaster酷冷至尊
[
本帖最后由 WylerStudio 于 2008-7-23 18:02 编辑 ]