- 已加入
- 4/5/08
- 訊息
- 1,394
- 互動分數
- 8
- 點數
- 38
英文原址:http://www.techreport.com/discussions.x/19216
中文翻譯:http://www.cnbeta.com/articles/115753.htm
測試原文:http://realworldtech.com/page.cfm?ArticleID=RWT070510142143&p=1
Nvidia公司一直把PhysX遊戲引擎當作宣傳GPU計算能力強於CPU的噱頭,而且幾年來多款遊戲也確實采用了這種GPU加速技術,
這類遊戲開啟PhysX之後確實物理特效華麗不少,不過如果沒有打開GPU硬件加速,只用CPU來計算物理特效,那麼遊戲的流暢度就會大打折扣。
不過,我們曾指出,有些這樣的遊戲在用CPU處理物理特效時只使用了單線程技術,而物理特效本身是可以很方便地使用類似多線程的技術來處理的,
實際上在打開GPU硬加速時情況便是如此,因此遊戲廠商此舉很有故意放著處理器的多核條件不用的作弊之嫌。
更糟糕的是,RealWorld Technologies網站的作者David Kanter最近的研究讓這些遊戲廠商的作弊嫌疑又加重了幾分。
他使用Intel的VTune進程查看工具分析了多款支持PhysX特效的遊戲,結果發現當這些遊戲使用CPU處理物理特效時,
大部分的代碼使用的仍然是老舊的x87浮點算數指令,而不是早已深入人心,並且效率高得多的SSE擴展指令,
他在自己的文章中寫道:
x87已經在故紙堆裏埋了好些年了,Intel/AMD這5年來都一直在勸說開發者使用更快的SSE擴展指令集來編寫程序。
在目前市面上的處理器裏,SSE指令的完成同樣任務的速度很輕松就能達到x87指令的1.5-2倍。
而這些PhysX引擎還在使用x87指令,這顯然對CPU非常不利也不夠公平,
讓我們對GPU在處理PhysX引擎時是否真如官方宣傳的那麼高效率也打上了一個問號。
Kanter還進一步分析稱,這些遊戲廠商在應用CPU的SSE指令方面幾乎不存在任何技術上的困難,
雖然x87指令的精度和兼容性會稍微好些,但是在遊戲中根本不需要考慮這些問題,從開發難度上講,
使用SSE甚至還有可能會減輕開發者的負擔,他表示:「單就CPU運行PhysX引擎方面講,
要使用SSE 指令集一點也不費事(坦率說還有可能比用x87指令開發更省事些)。」
也就是說,即使在PhysX引擎只支持CPU單線程處理的條件下,其實其執行性能本該也還有很大的提升空間。
把缺乏多線程支持與還在使用x87指令的情況綜合起來考慮,我們認為Nvidia公司的PhysX引擎用最好聽的話來講就是優化得太差,
講的難聽點就是有意為之。當然PhysX引擎的主動權握在Nvidia手上,他們可以愛怎麼玩就怎麼玩。
但是這種過火的行為也可能會帶來一些惡果,Kanter在文中這樣總結道:
....Nvidia可以愛怎麼玩就怎麼玩,不過這種行為對開發者和消費者而言毫無益處,
而且也會讓人們對他們口中成天掛著的什麼GPU比CPU 性能更好的鬼話產生很大的懷疑。
PhysX Logo曾經是那些支持Nvidia顯卡遊戲的一大賣點,不過現在看來這個Logo似乎又有了新的一層含義,
那就是讓所有非Nvidia的其它硬件設備跑得更慢。
Experimental Setup
3.2GHz Nehalem (Bloomfield)
Nvidia GTX 280 GPU
3GB of memory (3 DIMMs)
Windows 7 (64-bit)
nvcuda.dll version 8.17.11.9621
PhysX version 09.09.1112
To test PhysX, we used the Cryostasis tech demo and also the Dark Basic PhysX Soft Body Demo
and analyzed the execution using Intel’s VTune.
Chart 1 – Process level view of PhysX applications
Chart 2 – Thread level view of PhysX applications
Chart 3 – Module level view of Cryostasis
Chart 4 – Module level view of SoftBodies.exe
中文翻譯:http://www.cnbeta.com/articles/115753.htm
測試原文:http://realworldtech.com/page.cfm?ArticleID=RWT070510142143&p=1
Nvidia公司一直把PhysX遊戲引擎當作宣傳GPU計算能力強於CPU的噱頭,而且幾年來多款遊戲也確實采用了這種GPU加速技術,
這類遊戲開啟PhysX之後確實物理特效華麗不少,不過如果沒有打開GPU硬件加速,只用CPU來計算物理特效,那麼遊戲的流暢度就會大打折扣。
不過,我們曾指出,有些這樣的遊戲在用CPU處理物理特效時只使用了單線程技術,而物理特效本身是可以很方便地使用類似多線程的技術來處理的,
實際上在打開GPU硬加速時情況便是如此,因此遊戲廠商此舉很有故意放著處理器的多核條件不用的作弊之嫌。
更糟糕的是,RealWorld Technologies網站的作者David Kanter最近的研究讓這些遊戲廠商的作弊嫌疑又加重了幾分。
他使用Intel的VTune進程查看工具分析了多款支持PhysX特效的遊戲,結果發現當這些遊戲使用CPU處理物理特效時,
大部分的代碼使用的仍然是老舊的x87浮點算數指令,而不是早已深入人心,並且效率高得多的SSE擴展指令,
他在自己的文章中寫道:
x87已經在故紙堆裏埋了好些年了,Intel/AMD這5年來都一直在勸說開發者使用更快的SSE擴展指令集來編寫程序。
在目前市面上的處理器裏,SSE指令的完成同樣任務的速度很輕松就能達到x87指令的1.5-2倍。
而這些PhysX引擎還在使用x87指令,這顯然對CPU非常不利也不夠公平,
讓我們對GPU在處理PhysX引擎時是否真如官方宣傳的那麼高效率也打上了一個問號。
Kanter還進一步分析稱,這些遊戲廠商在應用CPU的SSE指令方面幾乎不存在任何技術上的困難,
雖然x87指令的精度和兼容性會稍微好些,但是在遊戲中根本不需要考慮這些問題,從開發難度上講,
使用SSE甚至還有可能會減輕開發者的負擔,他表示:「單就CPU運行PhysX引擎方面講,
要使用SSE 指令集一點也不費事(坦率說還有可能比用x87指令開發更省事些)。」
也就是說,即使在PhysX引擎只支持CPU單線程處理的條件下,其實其執行性能本該也還有很大的提升空間。
把缺乏多線程支持與還在使用x87指令的情況綜合起來考慮,我們認為Nvidia公司的PhysX引擎用最好聽的話來講就是優化得太差,
講的難聽點就是有意為之。當然PhysX引擎的主動權握在Nvidia手上,他們可以愛怎麼玩就怎麼玩。
但是這種過火的行為也可能會帶來一些惡果,Kanter在文中這樣總結道:
....Nvidia可以愛怎麼玩就怎麼玩,不過這種行為對開發者和消費者而言毫無益處,
而且也會讓人們對他們口中成天掛著的什麼GPU比CPU 性能更好的鬼話產生很大的懷疑。
PhysX Logo曾經是那些支持Nvidia顯卡遊戲的一大賣點,不過現在看來這個Logo似乎又有了新的一層含義,
那就是讓所有非Nvidia的其它硬件設備跑得更慢。
Experimental Setup
3.2GHz Nehalem (Bloomfield)
Nvidia GTX 280 GPU
3GB of memory (3 DIMMs)
Windows 7 (64-bit)
nvcuda.dll version 8.17.11.9621
PhysX version 09.09.1112
To test PhysX, we used the Cryostasis tech demo and also the Dark Basic PhysX Soft Body Demo
and analyzed the execution using Intel’s VTune.
Chart 1 – Process level view of PhysX applications
![PhysX-2.png](http://realworldtech.com/includes/images/articles/PhysX-2.png)
Chart 2 – Thread level view of PhysX applications
![PhysX-3.png](http://realworldtech.com/includes/images/articles/PhysX-3.png)
Chart 3 – Module level view of Cryostasis
![PhysX-4.png](http://realworldtech.com/includes/images/articles/PhysX-4.png)
Chart 4 – Module level view of SoftBodies.exe
![PhysX-5.png](http://realworldtech.com/includes/images/articles/PhysX-5.png)