cuda或者rocm,想要跨平臺就用opengl的計(jì)算著色器。opencl不建議用,那東西是給fpga用的,在gpu上性能比不上cuda/rocm,跨平臺比不上opengl
10多年的鳳泉網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鳳泉建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“鳳泉網(wǎng)站設(shè)計(jì)”,“鳳泉網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
GPU的并行能力十分強(qiáng)大,這和它先天的結(jié)構(gòu)體系有關(guān)。我們覺得,這么強(qiáng)大并行計(jì)算能力,只用在圖形領(lǐng)域,實(shí)在太浪費(fèi)了。所以,GPU通用計(jì)算就將GPU的性能引向任何需要高密度計(jì)算的領(lǐng)域。
傳統(tǒng)的圖形API包括OpenGL和DirectX,這類API是用GPU來處理圖形的,其并行計(jì)算也是為了圖形計(jì)算的。而專用的并行計(jì)算API,就是OpenCL這樣的,我們可以讓GPU計(jì)算流體,模擬爆炸——這些計(jì)算都不是圖形計(jì)算。用OpenGL也可以做這些計(jì)算,但最終表現(xiàn)為一幅“圖片”,只不過這圖片不是美麗的圖片,而是一組計(jì)算結(jié)果映射為圖形矢量形成的雜亂無章的圖——這就是早先的GPU通用計(jì)算。
GPU計(jì)算可以用在很多方面,在異構(gòu)超級計(jì)算機(jī)中用得最為廣泛。GPU計(jì)算也可以用來為視頻轉(zhuǎn)碼……用處很多。
GPU是顯卡的核心器件,也稱圖像處理器。電腦中沒有顯卡,是無法使用的。顯卡有CPU內(nèi)置的核心顯卡,與獨(dú)立顯卡之分。
1、從題中細(xì)節(jié)推測,用戶電腦可能為CPU的核顯。因其性能較弱,需CPU協(xié)助處理視頻圖像數(shù)據(jù)。電腦整體硬件配置較低,播放1080p的視頻,要處理大量數(shù)據(jù),CPU使用率自然會具高不下;
2、如果電腦配置不低,則可能為顯卡的“硬件加速”功能沒有打開,GPU偷懶了。實(shí)際使用的為CPU的軟解碼功能,也會使CPU使用率具高??蓮娘@卡屬性管理器中,選中使用“硬件加速”功能,即可減輕CPU的壓力;
3、電腦中有獨(dú)立顯卡,通常是不會出現(xiàn)這種問題的。因獨(dú)立顯卡的硬件加速功能默認(rèn)打開的,GPU全力開工,處理視頻圖像數(shù)據(jù)。
要知道GPU本身就是從CPU演變而來的分支。原本奔騰4以前的時(shí)代,浮點(diǎn)運(yùn)算一直都是CPU在執(zhí)行,而今的系統(tǒng)和軟件發(fā)展,使得需求的硬件配置越來越高,將浮點(diǎn)運(yùn)算從CPU中分離出來,單獨(dú)作為一個(gè)單元管理,所謂GPU就是這么來的。\x0d\x0a由于CPU的任務(wù)繁多,除了3D顯示之外,還要做內(nèi)存管理、輸入響應(yīng)等非3D圖形處理工作,因此在實(shí)際運(yùn)算的時(shí)候性能會大打折扣,常常出現(xiàn)顯卡等待CPU數(shù)據(jù)的情況,其運(yùn)算速度遠(yuǎn)跟不上今天復(fù)雜三維游戲的要求。\x0d\x0aGPU相當(dāng)于專用于圖像處理的CPU,在處理圖像時(shí)它的工作效率遠(yuǎn)高于CPU,但是CPU是通用的數(shù)據(jù)處理器,在處理數(shù)值計(jì)算時(shí)是它的強(qiáng)項(xiàng),它能完成的任務(wù)是GPU無法代替的,所以不能用GPU來代替CPU。\x0d\x0a將3D顯示部分的計(jì)算交給GPU去處理,讓CPU和GPU各司其職,可以大大提高整機(jī)運(yùn)行效率。
如何通過編程將GPU用于通用計(jì)算任務(wù)
隨著現(xiàn)代圖形處理器(GPU)可編程能力及性能的提高,應(yīng)用開發(fā)商們一直希望圖形硬件可以解決以前只有通用CPU才能完成的高密集計(jì)算任務(wù)。盡管利用通用GPU進(jìn)行計(jì)算很有發(fā)展前景,但傳統(tǒng)圖像應(yīng)用編程接口仍然將GPU抽象成一個(gè)包括紋理、三角形和像素在內(nèi)的圖像繪制器。尋找一種能夠使用這些基本元素的映射算法并不是一項(xiàng)簡單的操作,即便對最先進(jìn)的圖形開發(fā)商而言也是如此。
幸運(yùn)的是,基于GPU的計(jì)算從概念上講很容易理解,并且現(xiàn)有多種高級語言和軟件工具可以簡化GPU的編程工作。但是,開發(fā)商必須首先了解GPU在圖像繪制過程中是如何工作的,然后才能確定可用于計(jì)算的各個(gè)組件。
在繪制圖像時(shí),GPU首先接收宿主系統(tǒng)以三角頂點(diǎn)形式發(fā)送的幾何數(shù)據(jù)。這些頂點(diǎn)數(shù)據(jù)由一個(gè)可編程的頂點(diǎn)處理器進(jìn)行處理,該處理器可以完成幾何變換、亮度計(jì)算等任何三角形計(jì)算。接下來,這些三角形由一個(gè)固定功能的光柵器轉(zhuǎn)換成顯示在屏幕上的單獨(dú)“碎片(fragment)”。在屏幕顯示之前,每個(gè)碎片都通過一個(gè)可編程的碎片處理器計(jì)算最終顏色值。
計(jì)算碎片顏色的運(yùn)算一般包括集合向量數(shù)學(xué)操作以及從“紋理”中提取存儲數(shù)據(jù),“紋理”是一種存儲表面材料顏色的位圖。最終繪制的場景可以顯示在輸出設(shè)備上,或是從GPU的存儲器重新復(fù)制到宿主處理器中。
可編程頂點(diǎn)處理器和碎片處理器提供了許多相同的功能和指令集。但是,大部分GPU編程人員只將碎片處理器用于通用計(jì)算任務(wù),因?yàn)樗ǔL峁└鼉?yōu)的性能,而且可以直接輸出到存儲器。
利用碎片處理器進(jìn)行計(jì)算的一個(gè)簡單例子是對兩個(gè)向量進(jìn)行相加。首先,我們發(fā)布一個(gè)大三角形,其所包含的碎片數(shù)量和向量大小(容納的元素)相同。產(chǎn)生的碎片通過碎片處理器進(jìn)行處理,處理器以單指令多數(shù)據(jù)(SIMD)的并行方式執(zhí)行代碼。進(jìn)行向量相加的代碼從存儲器中提取兩個(gè)待加元素,并根據(jù)碎片的位置進(jìn)行向量相加,同時(shí)為結(jié)果分配輸出顏色。輸出存儲器保存了向量和,這個(gè)值在下一步計(jì)算中可以被任意使用。
可編程碎片處理器的ISA類似于DSP或Pentium SSE的指令集,由四路SIMD指令和寄存器組成。這些指令包括標(biāo)準(zhǔn)數(shù)·運(yùn)算、存儲器提取指令和幾個(gè)專用圖形指令。
GPU與DSP的比較
GPU在幾個(gè)主要方面有別于DSP架構(gòu)。其所有計(jì)算均使用浮點(diǎn)算法,而且目前還沒有位或整數(shù)運(yùn)算指令。此外,由于GPU專為圖像處理設(shè)計(jì),因此存儲系統(tǒng)實(shí)際上是一個(gè)二維的分段存儲空間,包括一個(gè)區(qū)段號(從中讀取圖像)和二維地址(圖像中的X、Y坐標(biāo))。
此外,沒有任何間接寫指令。輸出寫地址由光柵處理器確定,而且不能由程序改變。這對于自然分布在存儲器之中的算法而言是極大的挑戰(zhàn)。最后一點(diǎn),不同碎片的處理過程間不允許通信。實(shí)際上,碎片處理器是一個(gè)SIMD數(shù)據(jù)并行執(zhí)行單元,在所有碎片中獨(dú)立執(zhí)行代碼。
盡管有上述約束,但是GPU還是可以有效地執(zhí)行多種運(yùn)算,從線性代數(shù)和信號處理到數(shù)值仿真。雖然概念簡單,但新用戶在使用GPU計(jì)算時(shí)還是會感到迷惑,因?yàn)镚PU需要專有的圖形知識。這種情況下,一些軟件工具可以提供幫助。兩種高級描影語言CG和HLSL能夠讓用戶編寫類似C的代碼,隨后編譯成碎片程序匯編語言。這些語言編譯器可以從Nvidia和微軟公司的網(wǎng)站免費(fèi)下載。盡管這些語言大大簡化了描影匯編代碼的編寫,但實(shí)際應(yīng)用時(shí)仍然必須使用圖形API來建立并發(fā)布計(jì)算任務(wù)。
Brook是專為GPU計(jì)算設(shè)計(jì),且不需要圖形知識的高級語言。因此對第一次使用GPU進(jìn)行開發(fā)的工作人員而言,它可以算是一個(gè)很好的起點(diǎn)。Brook是C語言的延伸,整合了可以直接映射到GPU的簡單數(shù)據(jù)并行編程構(gòu)造。
經(jīng)GPU存儲和操作的數(shù)據(jù)被形象地比喻成“流”(stream),類似于標(biāo)準(zhǔn)C中的數(shù)組。核心(Kernel)是在流上操作的函數(shù)。在一系列輸入流上調(diào)用一個(gè)核心函數(shù)意味著在流元素上實(shí)施了隱含的循環(huán),即對每一個(gè)流元素調(diào)用核心體。Brook還提供了約簡機(jī)制,例如對一個(gè)流中所有的元素進(jìn)行和、最大值或乘積計(jì)算。
Brook編譯器是一個(gè)源到源的編譯器,能夠把用戶的核心代碼映射成碎片匯編語言,并生成C++短代碼,從而鏈接到大型應(yīng)用中。這允許用戶只把應(yīng)用中的性能關(guān)鍵部分輸入Brook。Brook還完全隱藏了圖形API的所有細(xì)節(jié),并把GPU中類似二維存儲器系統(tǒng)這樣許多用戶不熟悉的部分進(jìn)行了虛擬化處理。
用Brook編寫的應(yīng)用程序包括線性代數(shù)子程序、快速傅立葉轉(zhuǎn)換、光線追蹤和圖像處理。Brook的編譯器和實(shí)時(shí)運(yùn)行環(huán)境可以從網(wǎng)站上免費(fèi)獲取。
sourceforge.net網(wǎng)站也為許多此類應(yīng)用提供資源。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速緩存、SSE匯編優(yōu)化Pentium 4執(zhí)行條件下,許多此類應(yīng)用的速度提升高達(dá)7倍之多。
對GPU計(jì)算感興趣的用戶努力將算法映射到圖形基本元素。類似Brook這樣的高級編程語言的問世使編程新手也能夠很容易就掌握GPU的性能優(yōu)勢。訪問GPU計(jì)算功能的便利性也使得GPU的演變將繼續(xù)下去,不僅僅作為繪制引擎,而是會成為個(gè)人電腦的主要計(jì)算引擎。
當(dāng)前文章:gpu運(yùn)算vb.net gpu運(yùn)算卡
網(wǎng)址分享:http://jinyejixie.com/article14/doohpge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、面包屑導(dǎo)航、建站公司、做網(wǎng)站、動(dòng)態(tài)網(wǎng)站、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)