你們好!明天給帶來(lái)的分享是“HPC應(yīng)用怎樣使用GPU加速”,在弄清楚這個(gè)問(wèn)題之前,我們須要先厘清楚幾個(gè)問(wèn)題:
下邊我們就圍繞著這幾個(gè)問(wèn)題開(kāi)始:
GPU為何能加速估算?
這須要從CPU和GPU的區(qū)別說(shuō)起:
CPU(中央處理器)和GPU(圖形處理器)是兩種不同的處理器類(lèi)型,主要的區(qū)別在于它們的設(shè)計(jì)目標(biāo)和應(yīng)用場(chǎng)景。詳盡分為以下幾個(gè)方面:
設(shè)計(jì)目標(biāo):CPU是一種通用處理器,主要用于執(zhí)行各類(lèi)不同類(lèi)型的估算任務(wù),如操作系統(tǒng)的管理、文件處理、網(wǎng)絡(luò)通訊、應(yīng)用程序的執(zhí)行等。而GPU則是一種專(zhuān)用處理器,主要用于圖形和圖象處理,如3D游戲、視頻編輯、計(jì)算機(jī)輔助設(shè)計(jì)等。
處理方法:CPU采用串行處理方法,即一次只能處理一個(gè)指令,須要經(jīng)過(guò)多次的取指、解碼、執(zhí)行等步驟就能完成一個(gè)任務(wù)。而GPU采用并行處理方法,即同時(shí)處理多個(gè)指令,可以在同一時(shí)間內(nèi)完成多個(gè)任務(wù)。
處理器核心:CPU一般擁有幾個(gè)核心加速度計(jì)算,每位核心可以處理一個(gè)任務(wù),而GPU一般擁有數(shù)百個(gè)甚至數(shù)千個(gè)核心,這是由于圖象上的每一個(gè)象素點(diǎn)都有被處理的須要,并且每位象素點(diǎn)處理的過(guò)程和方法都非常相像,GPU就是用好多簡(jiǎn)單的估算單元去完成大量的估算任務(wù),還能同時(shí)處理大量的數(shù)據(jù)。
顯存:CPU一般使用高速緩存和尋址儲(chǔ)器來(lái)儲(chǔ)存數(shù)據(jù),而GPU則一般使用內(nèi)存來(lái)儲(chǔ)存圖象和圖形數(shù)據(jù),由于內(nèi)存的讀寫(xiě)速率更快,可以更快地處理圖形和圖象。
總結(jié)一下,就是一個(gè)核心同時(shí)只能處理一個(gè)任務(wù),CPU的核數(shù)較少,通用性較強(qiáng),而GPU則核數(shù)較多,但通用性不強(qiáng),只能處理個(gè)別簡(jiǎn)單的估算。記得知乎上有個(gè)挺好的比喻,CPU如同老院長(zhǎng),盡管啥就會(huì)算,但也要一個(gè)個(gè)的算。而GPU則類(lèi)似組織了幾千個(gè)中學(xué)生,雖然只能進(jìn)行簡(jiǎn)單的估算,然而人多呀。
這兒還涉及另外一個(gè)知識(shí)就是串行估算和并行估算。
串行估算和并行估算是兩種不同的估算模式,它們的區(qū)別在于任務(wù)處理的方法和估算資源的利用情況。
串行估算,就是使用單個(gè)處理器或核心處理所有的估算任務(wù),根據(jù)固定的次序一個(gè)一個(gè)的執(zhí)行。適用于小規(guī)模、簡(jiǎn)單的估算任務(wù),像我們常用的筆記本軟件,容易編撰和管理,但任務(wù)比較多的情況,執(zhí)行速率較慢,容易堵塞。如同我們筆記本打開(kāi)東西多了,就容易卡。
并行估算,則是將一個(gè)小型問(wèn)題分解成多個(gè)小任務(wù),同時(shí)在多個(gè)處理器或核心上并行執(zhí)行任務(wù)。多個(gè)處理器或核心可以同時(shí)處理不同的任務(wù),加速估算過(guò)程。適用于大規(guī)模、復(fù)雜的估算任務(wù),一般須要使用并行編程技術(shù)來(lái)實(shí)現(xiàn)。即使管理和編撰比較復(fù)雜,但具有高效的估算能力。
另外,串行估算和并行估算還存在以下差別:
如今,我們對(duì)CPU、GPU和估算方法有了一個(gè)基本的了解。接出來(lái),步入第二個(gè)問(wèn)題:
理論上,CPU和GPU都可以使用并行估算。為何我們要用GPU加速呢?
相信你的心里早已有了答案,沒(méi)錯(cuò)就是“成本”。假如使用同等核數(shù)的CPU并行估算的成本,無(wú)論是建設(shè)成本,還是幀率成本都將遠(yuǎn)超使用GPU。并且,也并不是所有的HPC估算應(yīng)用都能用GPU加速估算的。
什么應(yīng)用適宜用GPU加速估算?
GPU加速估算適宜這些須要大量并行估算的應(yīng)用程序,其中包括但不限于以下應(yīng)用領(lǐng)域:
須要注意的是,不是所有的應(yīng)用程序都適宜使用GPU加速估算。GPU加速估算一般須要對(duì)代碼進(jìn)行特殊的優(yōu)化和并行化處理,但是其實(shí)GPU的運(yùn)算速率相對(duì)于CPU的速率更快,但顯存容量和估算能力相對(duì)較弱,因而在使用GPU加速估算時(shí)須要考慮到應(yīng)用程序的特性和估算需求。以下是一些常見(jiàn)的可以使用GPU加速的估算應(yīng)用:
怎樣使用GPU加速估算?
CPU并行估算通過(guò)GPU加速來(lái)提升估算效率和性能。這些方式稱(chēng)為異構(gòu)并行估算()。
在異構(gòu)并行估算中,CPU負(fù)責(zé)控制程序流程和部份估算任務(wù),而GPU則負(fù)責(zé)大規(guī)模數(shù)據(jù)并行估算任務(wù)。具體實(shí)現(xiàn)上,須要使用一些編程框架和工具來(lái)完成,如CUDA、等。這種工具提供了針對(duì)GPU的API和插口,可以將須要加速的估算任務(wù)轉(zhuǎn)移到GPU進(jìn)行處理,進(jìn)而加速估算過(guò)程。
HPC估算應(yīng)用要支持GPU加速一般須要進(jìn)行以下步驟:
最后集成在HPC系統(tǒng)中,通過(guò)集群調(diào)度器分配相應(yīng)的GPU節(jié)點(diǎn)資源,配合應(yīng)用的相關(guān)參數(shù),實(shí)現(xiàn)估算任務(wù)的估算加速。
總體來(lái)說(shuō),CPU和GPU各有其擅長(zhǎng)的領(lǐng)域。CPU適宜處理各種類(lèi)型的任務(wù),具有通用性和容易編程的特性加速度計(jì)算,但是在緩存系統(tǒng)方面有一定的優(yōu)勢(shì);而GPU則適宜處理大規(guī)模的數(shù)值估算任務(wù),具有強(qiáng)悍的并行估算能力和高效的顯存帶寬。為此,在選擇并行估算方案時(shí),須要依照具體應(yīng)用場(chǎng)景和需求來(lái)選擇適當(dāng)?shù)挠布途幊炭蚣堋?span style="display:none">5Ps物理好資源網(wǎng)(原物理ok網(wǎng))
OK,本篇關(guān)于HPC估算相關(guān)的內(nèi)容就分享到這兒了。如有相關(guān)問(wèn)題,歡迎交流。
關(guān)注本公眾號(hào),隨時(shí)獲取HPC相關(guān)知識(shí)內(nèi)容。還可以加入HPC技術(shù)交流群哦!