Khronos組織最近規(guī)范了OpenCL 1.0,, OpenCL實(shí)際上是針對(duì)異構(gòu)系統(tǒng)進(jìn)行并行編程的一個(gè)全新的API,簡(jiǎn)單來(lái)說(shuō)OpenCL它可以利用GPU,,然后進(jìn)行一些并行計(jì)算這方面的工作,,這是API應(yīng)用程序的編程接口,圖形里面也有很多API,,比如OpenGL那是針對(duì)圖形的,,OpenCL是針對(duì)并行計(jì)算的API。OpenCL開(kāi)發(fā)人員可以利用GPU和CPU的計(jì)算能力,,把GPU和CPU異構(gòu)的系統(tǒng)運(yùn)用在很多并行計(jì)算的領(lǐng)域里面,。Khronos是一個(gè)組織,有很多廠商組成,,有非常多的成員,,這個(gè)工作組同時(shí)也是OpenCL的一個(gè)協(xié)調(diào)機(jī)構(gòu),也就是Khronos這個(gè)工作組他來(lái)負(fù)責(zé)制定OpenCL的規(guī)格,、架構(gòu)等等各方面,。業(yè)界最主要的和圖形或者和計(jì)算相關(guān)的廠商都是Khronos的成員。 OpenCL里面有很多的成員,,這就導(dǎo)致了有更多可以利用OpenCL來(lái)開(kāi)發(fā)的程序,、軟件以及各種各樣的應(yīng)用。這從一方面肯定了OpenCL強(qiáng)大的聚合實(shí)力,,但一方面也預(yù)示著這將會(huì)形成一個(gè)旺盛的需求,。實(shí)際上,OpenCL對(duì)于業(yè)界來(lái)說(shuō)是非常重要也是非常好的一個(gè)標(biāo)準(zhǔn),,NVIDIA看準(zhǔn)了這一標(biāo)準(zhǔn),,利用GPU的強(qiáng)大計(jì)算能力應(yīng)用在圖形以外各種各樣的并行計(jì)算方面,NVIDIA一直在參與OpenCL的工作。NVIDIA副總裁Neil Trevett,,目前則是OpenCL工作組的主席,,引導(dǎo)很多OpenCL的開(kāi)發(fā)。這個(gè)組織里面當(dāng)然還有很多其他開(kāi)發(fā)公司,。NVIDIA公司不少員工都在參與這項(xiàng)工作,。 OpenCL和OpenGL在很多方面都很類似,,實(shí)際上他們也是一個(gè)共同的組織來(lái)進(jìn)行管理的。對(duì)OpenGL圖形開(kāi)發(fā)比較熟悉的人他使用OpenCL計(jì)算這方面的開(kāi)發(fā),,他們就會(huì)非常熟悉它里面所涉及的很多方面,,這是OpenCL的一個(gè)非常明顯的特點(diǎn)。如果你對(duì)圖形編程很熟悉的話,,使用DX11編程,,可能比較容易,這是API的一個(gè)好處,。但是對(duì)于大部分的科學(xué)家來(lái)說(shuō),,可能對(duì)API,OpenCL這種東西可能完全不熟悉,,他需要的是我就像在CPU上編程一樣,,對(duì)CPU的計(jì)算編程,他可以使用CUDA C語(yǔ)言,,在CUDA C語(yǔ)言里面把CPU看成專門(mén)做計(jì)算的協(xié)處理器來(lái)進(jìn)行編程的,。這是兩個(gè)之間不同的模式。 總結(jié): OpenCL不管對(duì)開(kāi)發(fā)人員還是業(yè)界人員來(lái)說(shuō)還是消費(fèi)者來(lái)說(shuō)都是一個(gè)非常好的API,,一個(gè)應(yīng)用程序的接口,。它可以使得開(kāi)發(fā)者很容易的開(kāi)發(fā)出跨平臺(tái)的GPU計(jì)算的程序,充分利用GPU強(qiáng)大的計(jì)算能力然后應(yīng)用在各種各樣計(jì)算的方面,。 對(duì)于NVIDIA來(lái)說(shuō),,在CUDA的架構(gòu)上除了C語(yǔ)言以外,現(xiàn)在新增加了OpenCL或者DX11這樣的API,,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)也提供了一種更多的GPU計(jì)算的開(kāi)發(fā)環(huán)境的一種選擇,。他們?nèi)绻麑?duì)API很熟悉的一批人,他們肯定會(huì)很高興的看到OpenCL或者新的API的加入,,對(duì)于這些人來(lái)說(shuō)他們很容易利用這種計(jì)算的API然后開(kāi)發(fā)各種各樣GPU計(jì)算的程序。對(duì)于NVIDIA來(lái)說(shuō)還會(huì)繼續(xù)對(duì)C語(yǔ)言包括其他語(yǔ)言的支持,,實(shí)際上對(duì)NVIDIA CUDA C語(yǔ)言來(lái)說(shuō)目前還是唯一的針對(duì)GPU的runtime C的語(yǔ)言環(huán)境,,runtime C的語(yǔ)言環(huán)境意思是GPU直接執(zhí)行這個(gè)C語(yǔ)言,。 現(xiàn)在已經(jīng)有非常多的用戶已經(jīng)在使用CUDA C語(yǔ)言,剛才介紹有25000名這樣的開(kāi)發(fā)者,,應(yīng)用程序也有很多,,而且這種應(yīng)用程序每一刻都在不斷地增加數(shù)量。CUDA C語(yǔ)言還會(huì)進(jìn)一步的發(fā)展,,就像剛才所說(shuō)的還會(huì)有新的版本推出,,而且會(huì)和像OpenCL和DX11這種計(jì)算API會(huì)共存,今后也是這樣,。除了C語(yǔ)言以外NVIDIA還會(huì)推出更多的其他CUDA的語(yǔ)言,,包括Fortran,還會(huì)有Java等,。 關(guān)于OpenCL與CUDA的一些問(wèn)題: 問(wèn): AMD是OpenCL里面的嗎,? 答: 對(duì)。OpenCL是包含很多家公司的,,主要業(yè)界的公司都包含在里面,,包括IBM、戴爾這些公司包括HP,。OpenCL是一個(gè)非常開(kāi)放的行業(yè)組織,,所有的公司都在里面,他們和NVIDIA是沒(méi)有沖突的,,NVIDIA也是很積極地參與技術(shù),。 Stream基本上還是基于一種傳統(tǒng)CPU的一種方式,AMD當(dāng)然他會(huì)說(shuō)他會(huì)有CAL,,CAL實(shí)際上是套指令集,,可以用匯編語(yǔ)言的方式來(lái)開(kāi)發(fā)軟件,但是匯編方式開(kāi)發(fā)軟件的話,,對(duì)搞計(jì)算的人來(lái)說(shuō)不大現(xiàn)實(shí),,你要讓他用匯編語(yǔ)言來(lái)說(shuō)的話可能確實(shí)是一個(gè)折磨。還有一個(gè)Brook,,這個(gè)是斯坦福大學(xué)開(kāi)發(fā)的,,它是類似于C的東西,他是把底層GPGPU的計(jì)算方式類似于C的這種語(yǔ)言,,他不是C語(yǔ)言而是類C語(yǔ)言,,語(yǔ)法和C語(yǔ)言比較類似,他內(nèi)部做的還是使用頂點(diǎn)這樣的數(shù)據(jù),。 另外Stream的方式還有一個(gè)很大的問(wèn)題,,他主要是基于本地的板載內(nèi)存,板載內(nèi)存存入數(shù)據(jù),,然后換算完了再寫(xiě)到板載內(nèi)存,。這樣對(duì)GPU非常強(qiáng)大的計(jì)算能力來(lái)說(shuō),,帶寬是一個(gè)非常大的障礙,你想想每秒種進(jìn)行1P的數(shù)字計(jì)算的話,,你需要多少的帶寬,?32位浮點(diǎn)的話這是4個(gè)字節(jié),如果你1P的話,,NVIDIA把他承加這部分也算上就相當(dāng)于再乘以2,,至少需要每秒2P的吞吐量然后才能夠滿足它,板載內(nèi)存的話每秒需要幾十P,,這實(shí)際上是Stream的方式,,從效率上是一個(gè)比較低的計(jì)算。而對(duì)于開(kāi)發(fā)者來(lái)說(shuō)也會(huì)碰到很多的問(wèn)題,,對(duì)于NVIDIA來(lái)說(shuō)支持C,,這是真正GPU上運(yùn)行的C語(yǔ)言。C語(yǔ)言有一個(gè)很重要的特點(diǎn),,需要有存儲(chǔ)體系,,對(duì)于NVIDIA GPU來(lái)說(shuō)是有存儲(chǔ)體系的,內(nèi)部有share memory,,然后大部分的數(shù)據(jù),,編譯器會(huì)把大部分的數(shù)據(jù)盡可能的讓它在share memory上進(jìn)行計(jì)算,share memory帶寬非常高,,因?yàn)樗谛酒瑑?nèi)部,,它的速度接近于寄存器的速度,他在share memory上跑的話,,然后再把這個(gè)數(shù)據(jù)再輸出,,這樣的話他真正地可以利用到絕大部分的計(jì)算機(jī)。實(shí)際上CUDA的效率,,在應(yīng)用軟件上可以看出來(lái),,像傳統(tǒng)的高性能計(jì)算領(lǐng)域的話,NVIDIA的峰值速度比如像G80是300多G浮點(diǎn)計(jì)算能力,,效率是非常高的,。這也是為什么這么多人在使用CUDA C語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā),這是一個(gè)很重要的原因,。 實(shí)際上你說(shuō)要使用Stream來(lái)開(kāi)發(fā)的應(yīng)用軟件,,我知道的只有一個(gè)是folding@home,ATI比NVIDIA進(jìn)入早兩年,,但是NVIDIA進(jìn)入以后使用CUDA的語(yǔ)言來(lái)寫(xiě)folding@home客戶端的軟件,,性能立刻比它高好幾倍,folding@home你可以看到一個(gè)很特別的——他原來(lái)一個(gè)版本是可以跑在它上一代的架構(gòu)應(yīng)該是3850或者3870的GPU上,,但是如果它4850和4870出來(lái)以后,,從原點(diǎn)上來(lái)說(shuō)他的計(jì)算能力比3850,、3870要高2.5倍,,但是它的folding@home的性能反而下降了,,原來(lái)他是200左右,就是3870,,他是每天可以模擬200萬(wàn)秒的性能等級(jí),,4870出來(lái)以后每天只能模擬170萬(wàn)秒。這是為什么,?這個(gè)軟件不是使用Brook開(kāi)發(fā)的,,直接使用匯編的方式開(kāi)發(fā)的,這樣的話你需要對(duì)每一個(gè)新的GPU,,你都要對(duì)他進(jìn)行編程,,每個(gè)架構(gòu)都需要對(duì)它重新進(jìn)行編程,然后才可以得到一個(gè)最好的效率,。中間有很長(zhǎng)時(shí)間4870的性能都比3870在folding@home上低,,后來(lái)他確實(shí)重新編程了,過(guò)了好幾個(gè)月,,有些新的版本出來(lái)了,,4870比3870高了。這就是說(shuō)使用匯編方式的話會(huì)帶來(lái)一個(gè)非常大的問(wèn)題,,你任何一個(gè)應(yīng)用軟件里面都需要重新優(yōu)化,、重新編程。 匯編語(yǔ)言實(shí)際上就是機(jī)器碼來(lái)進(jìn)行編程,,這個(gè)是屬于體力比較好的人才能干的了,,就是記憶也比較好的人才能干的了。高級(jí)語(yǔ)言相對(duì)來(lái)說(shuō)確實(shí)要簡(jiǎn)單太多了,,就像剛才我說(shuō)的有些人甚至對(duì)編程都不是很熟悉的,,他只要基本上知道源代碼里面哪些代碼是在做什么東西,然后他就可以使用CUDA,,他不見(jiàn)得核心部分計(jì)算部分一定要自己編,,就像剛才說(shuō)的NVIDIA有很多現(xiàn)成的庫(kù),都是直接寫(xiě)好的函數(shù),,這個(gè)函數(shù)把原來(lái)的函數(shù)替代掉,,就可以取得很好的性能。NVIDIA提供很多函數(shù)庫(kù),,這些函數(shù)庫(kù)有一些是NVIDIA公司開(kāi)發(fā)的,,像FFT、線性代數(shù)或者是快速傅里葉變換等,,但是有一些庫(kù)是第三方幫NVIDIA開(kāi)發(fā)的,。NVIDIA實(shí)際上形成一個(gè)非常好的環(huán)境,,不斷的有人針對(duì)CUDA來(lái)開(kāi)發(fā),不管是應(yīng)用軟件或者是中間件,,這些中間件的話就包含各種各樣的庫(kù),。 對(duì)于CUDA來(lái)說(shuō),說(shuō)老實(shí)話和Stream相比的話,,幾乎現(xiàn)在沒(méi)什么可比性,。確實(shí)對(duì)OpenCL、DirectX這樣應(yīng)用的話,,我相信在CUDA的架構(gòu)上運(yùn)行這個(gè)程序也比在Stream上運(yùn)行程序好的多,。因?yàn)镹VIDIA使用的架構(gòu)實(shí)際上你開(kāi)發(fā)的時(shí)候,NVIDIA就考慮到計(jì)算方面的應(yīng)用,。別的方案的話,,他有可能計(jì)算僅僅是圖形的一個(gè)副產(chǎn)品。NVIDIA在開(kāi)發(fā)的時(shí)候圖形和計(jì)算這兩部分幾乎作為同等重要的,,兩個(gè)都必須要滿足的東西來(lái)做架構(gòu)方面的設(shè)計(jì),。 問(wèn): OpenCL它的特點(diǎn)一個(gè)是開(kāi)放,OpenGL也很開(kāi)放,,但是它的更新實(shí)際上非常,、非常的慢,OpenCL會(huì)有這種情況嗎,? 答:更新的話,,這是由一個(gè)專門(mén)的組織Khronos,這個(gè)組織是有很多廠商來(lái)組成的,,每個(gè)廠商派一些人然后進(jìn)來(lái)在組織里面,,然后每個(gè)公司互相協(xié)商,然后制定各種各樣的標(biāo)準(zhǔn),,比如你推出一個(gè)新的版本要達(dá)到什么功能,,價(jià)格是怎么樣的?這些廠商來(lái)進(jìn)行協(xié)商的,,廠商不太一樣,,比如Microsoft我自己的東西,我說(shuō)的算,,這是完全不一樣的,。但是我相信OpenCL從目前來(lái)看的話,它還是挺快的,,你看它現(xiàn)在的α版本明年一季度就進(jìn)入β版本,,明年終第一版就會(huì)推出。 問(wèn): OpenGL和DirectX的關(guān)系一樣,我現(xiàn)在看到CUDA這邊更新的頻率明顯比OpenCL快很多,,NVIDIA想把這個(gè)東西打造成一個(gè)GPU通用計(jì)算上的DirecX嗎,? 答: 我覺(jué)得應(yīng)該是沒(méi)有什么可比性的。剛剛強(qiáng)調(diào)DirectX是API,,CUDA不是API,,CUDA是一個(gè)硬件架構(gòu)。剛才說(shuō)的很多版本是CUDA C語(yǔ)言的版本,,這是CUDA C語(yǔ)言版本的路線圖,,(PPT)C是語(yǔ)言,CUDA是一個(gè)硬件架構(gòu),,GPU的架構(gòu)。大家很容易會(huì)把C和CUDA融在一塊兒,,不是這樣的,。CUDA架構(gòu)類似與X86的架構(gòu)。 實(shí)際上CUDA的C語(yǔ)言和OpenCL在并行計(jì)算這塊,,它的一些觀念都挺類似的,,包括它計(jì)算的數(shù)據(jù)組織方式都很類似。我相信NVIDIA在OpenCL的規(guī)格,、開(kāi)發(fā)方面聯(lián)系一直是非常緊密的,,包括Apple也參與到其中。NVIDIA在這方面的很多經(jīng)驗(yàn),,也會(huì)得到一些體現(xiàn),。這兩個(gè)程序之間的移植也是很容易的,現(xiàn)在他使用CUDA C語(yǔ)言來(lái)寫(xiě),,OpenCL出來(lái)以后,,如果他想移植OpenCL的程序,相對(duì)來(lái)說(shuō)不用全部重頭寫(xiě),。 問(wèn): 這個(gè)東西能否用在微軟上,? 答: 可以,像OpenGL也不是微軟的,,但是一樣可以在微軟上跑,。 問(wèn): 現(xiàn)在一般都是OpenCL,? 答: 這個(gè)是程序模型的原因,而且現(xiàn)在看起來(lái)在OpenCL在Vista下,,目前看起來(lái)沒(méi)有太大的問(wèn)題,。原來(lái)大家都一直以為在Vista下面OpenCL不會(huì)有ICD,實(shí)際上最后還是有ICD。這個(gè)東西的話現(xiàn)在OpenGL的軟件,,我經(jīng)常跑各種各樣的專業(yè)軟件,,很多在OpenGL下來(lái)以后都沒(méi)有問(wèn)題,非常典型的OpenGL的應(yīng)用程序跑地都挺好的,。對(duì)于OpenCL或者OpenGL在微軟下,,你可以看成是一個(gè)API,這個(gè)API你是可以安裝的,,比起微軟自己原來(lái)帶有的這個(gè)東西,。這算是一種應(yīng)用程序吧。 問(wèn): OpenCL看似更趨向于底層開(kāi)發(fā)的API,,那相對(duì)于CUDA C來(lái)說(shuō),,OpenCL開(kāi)發(fā)的程序執(zhí)行效率會(huì)不會(huì)比CUDA C效率更高一些? 答: 完全不存在這個(gè)問(wèn)題,。說(shuō)老實(shí)話效率高不高,,并不取決于你用的什么語(yǔ)言,什么樣的API,,更大程度上取決于你的代碼,,你代碼的優(yōu)化程度是怎樣的?這個(gè)才是影響他代碼的效率,。 問(wèn): 在OpenCL出來(lái)之前,,CUDA并行計(jì)算的優(yōu)勢(shì)已經(jīng)很大了,現(xiàn)在為什么還非要出一個(gè)OpenCL通過(guò)中間的東西來(lái)調(diào)用,,我感覺(jué)不是費(fèi)一道事嗎,? 答: OpenCL是一個(gè)跨平臺(tái)的一種API,這個(gè)API就像OpenGL一樣,,它也是希望跨平臺(tái),,就是跨軟件和硬件的API,OpenCL也是一樣也是跨軟件和硬件平臺(tái)的API,,算是一個(gè)業(yè)界的標(biāo)準(zhǔn),,不管是哪一家的,原則上都可以支持OpenCL這個(gè)平臺(tái),,支持API,。OpenCL不是NVIDIA推出來(lái)的,OpenCL最開(kāi)始是Apple提出來(lái)的,,但是NVIDIA確實(shí)是在這個(gè)標(biāo)準(zhǔn)的制定當(dāng)中,,NVIDIA和Apple進(jìn)行了很緊密的合作,然后NVIDIA提供了很多支持包括硬件方面的支持,。 模式不一樣適用的人群也不一樣,。適用的人群也不一樣,,我的理解是OpenCL和OpenGL他們?cè)诤芏喾矫娑挤浅5慕咏绻?xí)慣使用OpenGL他如果用OpenCL來(lái)開(kāi)發(fā)的話會(huì)感覺(jué)到輕車熟路,,就像是Computer shader也一樣,,如果你是多媒體這方面的應(yīng)用,你又想使用圖形又想使用GPU的來(lái)計(jì)算,,你用Computer shader來(lái)做很容易,。但是對(duì)CUDA C來(lái)說(shuō),它是用的人群是你能夠使用C語(yǔ)言的人你都可以使用CUDA C來(lái)開(kāi)發(fā),。使用人群完全是不一樣的,,我想可能也有一些人雖然他也會(huì)C語(yǔ)言,但是他還是希望用OpenCL來(lái)進(jìn)行開(kāi)發(fā),,用他跨平臺(tái)的特性,。另外或者因?yàn)槠渌囊恍┰?,包括他希望更多?duì)硬件方面的控制,然后他應(yīng)用軟件里面他可能希望對(duì)內(nèi)存進(jìn)行完全的控制,,這些用戶的話他可能就會(huì)選用OpenCL來(lái)進(jìn)行開(kāi)發(fā)。這是兩個(gè)不同的東西,。我相信即使OpenCL出來(lái)以后,CUDA C語(yǔ)言的使用者還是會(huì)越來(lái)越多的,。 如果認(rèn)為一種開(kāi)發(fā)環(huán)境就可以取代其他的開(kāi)發(fā)環(huán)境,,這個(gè)是不現(xiàn)實(shí)的。我舉個(gè)例子來(lái)說(shuō)在X86的架構(gòu)上,,除了C語(yǔ)言以外還有Java,、Fortran還有Pascal語(yǔ)言,這些不可能互相取代的,,每種語(yǔ)言,、每種API都有它使用的人群,都有喜歡用的人,。不同的語(yǔ)言,、不同的API都會(huì)滿足不同人群的。我覺(jué)得現(xiàn)在不是太多,,GPU計(jì)算和API語(yǔ)言不是太多,,現(xiàn)在還比較少,NVIDIA還會(huì)不斷地推出Java,、Pascal或者C++也會(huì)支持,。如果以前沒(méi)有Fortran,那些老年人你要讓他們學(xué)習(xí)C語(yǔ)言的話,他們可能用Fortran用了幾十年,,所以說(shuō)讓他開(kāi)發(fā)的話他就比較痛苦,,現(xiàn)在有了Fortran,他就可以直接用Fortran來(lái)寫(xiě)CUDA的程序,,說(shuō)不同開(kāi)發(fā)的途徑有不同的用戶,,這個(gè)是肯定的。 問(wèn): Havok現(xiàn)在怎么樣了,? 答: Havok目前為止基本上只能使用CPU做物理計(jì)算,,而PhysX可以使用GPU、可以使用CPU也可以使用PPU來(lái)做物理方面的計(jì)算,。當(dāng)然這三種里面GPU的效率是最高的,,PPU的話估計(jì)現(xiàn)在也沒(méi)什么人買(mǎi),,GPU的效率是最高的,,而且他真的是可以帶來(lái)10倍的性能提升,這個(gè)性能提升在物理計(jì)算方面,,CPU和GPU相比的話性能提升10倍,這是很常見(jiàn)的,。而且PhysX它是可以作為一種最基本的平臺(tái),,還有很多第三方的中間件在上面,基于PhysX,。它實(shí)際上是利用PhysX的平臺(tái)可以實(shí)現(xiàn)別的東西,比如類似于人工智能,。NVIDIA曾經(jīng)給大家提供過(guò)一個(gè)美式橄欖球的游戲視頻,那個(gè)游戲真的是很酷,,但是我不能放給大家看,,那家公司要求NVIDIA只能提供視頻給大家,不能把游戲給大家看,。真的是很酷,,非常大的場(chǎng)面,那個(gè)場(chǎng)面里面每個(gè)觀眾都是一個(gè)不同的人,,有一個(gè)體育場(chǎng)9000人,,每個(gè)觀眾都是一個(gè)實(shí)際的人,而且每個(gè)觀眾都是不太一樣的,。最主要他真正的把人的動(dòng)作模擬的非常逼真,,你撞擊撞到什么位置,,比如說(shuō)你看到撞過(guò)來(lái)的你會(huì)下意識(shí)的做一些防守的動(dòng)作。這些防守的動(dòng)作人跑過(guò)來(lái)不同的方向,,動(dòng)作也不一樣的,。比如你跌倒,跌倒空中你可能會(huì)有下意識(shí)的支撐動(dòng)作,,這些都會(huì)有,,以后游戲真的是會(huì)越來(lái)越逼真。NVIDIA所謂靜態(tài)逼真和動(dòng)態(tài)逼真就是這樣,。靜態(tài)逼真像這個(gè),,Crysis已經(jīng)做的很逼真了,但是真正動(dòng)起來(lái)還是感覺(jué)比較僵硬,,就是整個(gè)場(chǎng)景里面不管人物的動(dòng)作或者其他的運(yùn)動(dòng)都是事先設(shè)置好的,,就像放的錄像一樣,而不是真正時(shí)時(shí)運(yùn)算出來(lái)的,。如果你使用大量物理計(jì)算的話,,真的可以獲得很好的動(dòng)態(tài)逼真度。如果要實(shí)時(shí)計(jì)算對(duì)硬件的要是就會(huì)很高,,如果持有CPU加速的話它的動(dòng)態(tài)架構(gòu)和NVIDIA的動(dòng)態(tài)架構(gòu)就有區(qū)別,,就會(huì)影響速度不一樣。Havok用CPU來(lái)做物理計(jì)算,,它計(jì)算能力只能那么高,,你里面設(shè)置的物理效果相對(duì)來(lái)說(shuō)就會(huì)很有限。而且CPU還有很重要的任務(wù)在人工智能或者場(chǎng)景管理的方面,,所以說(shuō)使用GPU來(lái)做物理方面的加速是非常有效的。另外還有一點(diǎn)新的180驅(qū)動(dòng)支持更多的GPU PhysX的配置,,你可以使用2片的顯卡,,一片用來(lái)渲染,一片用來(lái)做物理加速,,這是效率最高的一種方式,。你用一片來(lái)做同時(shí)做渲染同時(shí)做物理計(jì)算,這也是可以的,,和純粹使用CPU做物理計(jì)算的話性能會(huì)高很多,,但是并行計(jì)算和渲染都是需要GPU的計(jì)算資源,所以如果你用單獨(dú)的一片顯卡的話,,用來(lái)做物理加速的話,,性能又會(huì)得到一個(gè)很大的提升。大家最好可以測(cè)試一下這方面的效果,。 問(wèn): 比如像EA的100多款游戲,,它那個(gè)PhysX主要是用GPU運(yùn)算還是CPU運(yùn)算,? 答: 只要是PhysX支持的游戲當(dāng)然是GPU了。每一款游戲都可以采用不同的策略,,我相信這些游戲開(kāi)發(fā)商的話也會(huì)采用不同的策略來(lái)處理這些事情,,當(dāng)然他最好的效果肯定是使用GPU來(lái)做物理這方面的計(jì)算,然后游戲里面放大量的物理效果,,這是最好的方式,。當(dāng)然也會(huì)有一些比較簡(jiǎn)化的模式,就是說(shuō)你沒(méi)有NVIDIA的顯卡,,然后給你提供一個(gè)比較簡(jiǎn)單,,物理效果比較少的模式。你還可以運(yùn)行,,但是物理效果帶來(lái)的各種各樣的好處相對(duì)就比較少,。這也是為什么跟大家強(qiáng)調(diào)的,NVIDIA現(xiàn)在叫GeForce + CUDA,,里面有很多的新功能,,PhysX是NVIDIA獨(dú)有的,這是別人沒(méi)有辦法做到的,。你要想作為一個(gè)玩家,,你想享受更好的效果當(dāng)然要在NVIDIA的顯卡上運(yùn)行,才會(huì)有更好的效果,。這個(gè)市場(chǎng)是開(kāi)放的,,誰(shuí)都可以去,但是看誰(shuí)能夠跑在前面,。 問(wèn): PhysX是跨平臺(tái)的嗎,?PhysX主要是用于游戲嗎?現(xiàn)在大部分的游戲基本上都是DirecX的,。 答: 游戲機(jī)也可以支持,。OpenGL和DirecX的API是獨(dú)立的,現(xiàn)在OpenGL游戲確實(shí)越來(lái)越少,,所以大部分的游戲都是DirecX的,。 問(wèn): PhysX不是跑在CPU上的? 答: 他是跑在GPU上,。對(duì)于PhysX來(lái)說(shuō)CPU也可以跑,。 |
|
來(lái)自: oskycar > 《c\vc\opencv》