亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3763 | 回復(fù): 0
打印 上一主題 下一主題

LMT NEW PBS高性能作業(yè)運算系統(tǒng)多節(jié)點協(xié)同運算分析 [復(fù)制鏈接]

論壇徽章:
1
金牛座
日期:2014-06-13 14:48:21
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-01-28 15:50 |只看該作者 |倒序瀏覽
            LMT NEW PBS高性能作業(yè)運算系統(tǒng)多節(jié)點協(xié)同運算分析
近年來,基于CPU+GPU的混合異構(gòu)計算系統(tǒng)開始逐漸成為國內(nèi)外高性能計算領(lǐng)域的熱點研究方向。在實際應(yīng)用中,許多基于 CPU+GPU 的混合異構(gòu)計算機系統(tǒng)表現(xiàn)出了良好的性能。但是,由于各種歷史和現(xiàn)實原因的制約,異構(gòu)計算仍然面臨著諸多方面的問題,其中最突出的問題是程序開發(fā)困難,尤其是擴展到集群規(guī)模級別時這個問題更為突出。主要表現(xiàn)在擴展性、負(fù)載均衡、自適應(yīng)性、通信、內(nèi)存等方面。
一、    CPU+GPU協(xié)同計算模式
CPU+GPU異構(gòu)協(xié)同計算集群如圖1所示,CPU+GPU異構(gòu)集群可以劃分成三個并行層次:節(jié)點間并行、節(jié)點內(nèi)CPU與GPU異構(gòu)并行、設(shè)備(CPU或GPU)內(nèi)并行。根據(jù)這三個層次我們可以得到CPU+GPU異構(gòu)協(xié)同計算模式為:節(jié)點間分布式+節(jié)點內(nèi)異構(gòu)式+設(shè)備內(nèi)共享式。
1           節(jié)點間分布式
CPU+GPU異構(gòu)協(xié)同計算集群中,各個節(jié)點之間的連接與傳統(tǒng)CPU集群一樣,采用網(wǎng)絡(luò)連接,因此,節(jié)點間采用了分布式的計算方式,可以采用MPI消息通信的并行編程語言。
2           節(jié)點內(nèi)異構(gòu)式
CPU+GPU異構(gòu)協(xié)同計算集群中,每個節(jié)點上包含多核CPU和一塊或多塊GPU卡,節(jié)點內(nèi)采用了異構(gòu)的架構(gòu),采用主從式的編程模型,即每個GPU卡需要由CPU進(jìn)程/線程調(diào)用。
由于每個節(jié)點上,CPU核數(shù)也比較多,計算能力也很大,因此,在多數(shù)情況下,CPU也會參與部分并行計算,根據(jù)CPU是否參與并行計算,我們可以把CPU+GPU異構(gòu)協(xié)同計算劃分成兩種計算模式:
1)       CPU/GPU協(xié)同計算:CPU只負(fù)責(zé)復(fù)雜邏輯和事務(wù)處理等串行計算,GPU 進(jìn)行大規(guī)模并行計算;
2)       CPU+GPU共同計算:由一個CPU進(jìn)程/線程負(fù)責(zé)復(fù)雜邏輯和事務(wù)處理等串行計算,其它CPU進(jìn)程/線程負(fù)責(zé)小部分并行計算,GPU負(fù)責(zé)大部分并行計算。
由于CPU/GPU協(xié)同計算模式比CPU+GPU共同計算模式簡單,下面的介紹中,我們以CPU+GPU共同計算模式為例進(jìn)行展開介紹各種編程模式。
在CPU+GPU共同計算模式下,我們把所有的CPU統(tǒng)稱為一個設(shè)備(device),如雙路8核CPU共有16個核,我們把這16個核統(tǒng)稱成一個設(shè)備;每個GPU卡成為一個設(shè)備。根據(jù)這種劃分方式,我們可以采用MPI進(jìn)程或OpenMP線程控制節(jié)點內(nèi)的各設(shè)備之間的通信和數(shù)據(jù)劃分。
3           設(shè)備內(nèi)共享式
1)       CPU設(shè)備:每個節(jié)點內(nèi)的所有多核CPU采用了共享存儲模型,因此,把節(jié)點內(nèi)的所有多核CPU看作一個設(shè)備, 可以采用MPI進(jìn)程或OpenMP線程、pThread線程控制這些CPU核的并行計算。
2)       GPU設(shè)備:GPU設(shè)備內(nèi)有自己獨立的DRAM存儲,GPU設(shè)備也是共享存儲模型,在GPU上采用CUDA或OpenCL編程控制GPU眾核的并行計算。CUDA編程模式只在NVIDIA GPU上支持,OpenCL編程模式在NVIDIA GPU和AMD GPU都支持。
根據(jù)前面對CPU+GPU異構(gòu)協(xié)同計算模式的描述,我們可以得到CPU+GPU異構(gòu)協(xié)同計算的編程模型(以MPI和OpenMP為例)如表1所示。

圖1 CPU+GPU異構(gòu)協(xié)同計算架構(gòu)
表1 CPU+GPU異構(gòu)協(xié)同計算編程模型
      
二、    CPU+GPU協(xié)同計算負(fù)載均衡性設(shè)計
下面以模式2為例簡單介紹多節(jié)點CPU+GPU協(xié)同計算任務(wù)劃分和負(fù)載均衡,模式2的進(jìn)程和線程與CPU核和GPU設(shè)備對應(yīng)關(guān)系如圖2所示。若采用主從式MPI通信機制,我們在節(jié)點0上多起一個進(jìn)程(0號進(jìn)程)作為主進(jìn)程,控制其它所有進(jìn)程。每個節(jié)點上啟動3個計算進(jìn)程,其中兩個控制GPU設(shè)備,一個控制其余所有CPU核的并行,在GPU內(nèi)采用CUDA/OpenCL并行,在CPU設(shè)備內(nèi)采用OpenMP多線程并行。
由于CPU+GPU協(xié)同計算模式分為3個層次,那么負(fù)載均衡性也需要在這3個層次上分別設(shè)計。在模式2的編程方式下,節(jié)點內(nèi)和節(jié)點間均采用MPI進(jìn)程,合二為一,設(shè)計負(fù)載均衡時,只需要做到進(jìn)程間(設(shè)備之間)的負(fù)載均衡和CPU設(shè)備內(nèi)OpenMP線程負(fù)載均衡、GPU設(shè)備內(nèi)CUDA線程負(fù)載均衡即可。
對于設(shè)備內(nèi),采用的是共享存儲器模型,CPU設(shè)備上的OpenMP線程可以采用schedule(static/ dynamic/ guided )方式;GPU設(shè)備上只要保證同一warp內(nèi)的線程負(fù)載均衡即可。
對于CPU+GPU協(xié)同計算,由于CPU和GPU計算能力相差很大,因此,在對任務(wù)和數(shù)據(jù)劃分時不能給CPU設(shè)備和GPU設(shè)備劃分相同的任務(wù)/數(shù)據(jù)量,這就增加了CPU與GPU設(shè)備間負(fù)載均衡的難度。CPU與GPU之間的負(fù)載均衡最好的方式是采用動態(tài)負(fù)載均衡的方法,然而有些應(yīng)用無法用動態(tài)劃分而只能采用靜態(tài)劃分的方式。下面我們分別介紹動態(tài)劃分和靜態(tài)劃分。
1)       動態(tài)劃分:對于一些高性能計算應(yīng)用程序,在CPU與GPU之間的負(fù)載均衡可以采用動態(tài)負(fù)載均衡的優(yōu)化方法,例如有N個任務(wù)/數(shù)據(jù),一個節(jié)點內(nèi)有2個GPU卡,即三個設(shè)備(CPU和2個GPU),動態(tài)負(fù)載均衡的方法是每個設(shè)備先獲取一個任務(wù)/數(shù)據(jù)進(jìn)行計算,計算之后立即獲取下一個任務(wù),不需要等待其他設(shè)備,直到N個任務(wù)/數(shù)據(jù)計算完成。這種方式只需要在集群上設(shè)定一個主進(jìn)程,負(fù)責(zé)給各個計算進(jìn)程分配任務(wù)/數(shù)據(jù)。
2)       靜態(tài)劃分:在一些應(yīng)用中,無法采用動態(tài)劃分的方式,需要靜態(tài)劃分方法,然而靜態(tài)劃分方法使異構(gòu)設(shè)備間的負(fù)載均衡變得困難,有時甚至無法實現(xiàn)。對于一些迭代應(yīng)用程序,我們可以采用學(xué)習(xí)型的數(shù)據(jù)劃分方法,如先讓CPU和GPU分別做一次相同計算量的計算,然后通過各自的運行時間計算出CPU與GPU的計算能力比例,然后再對數(shù)據(jù)進(jìn)行劃分。

圖2 CPU+GPU協(xié)同計算示意圖(以每個節(jié)點2個GPU為例)
三、    CPU+GPU協(xié)同計算數(shù)據(jù)劃分示例
假設(shè)某一應(yīng)用的數(shù)據(jù)特點如圖3所示,從輸出看,結(jié)果中的每個值的計算需要所有輸入數(shù)據(jù)的信息,所有輸出值的計算之間沒有任何數(shù)據(jù)依賴性,可以表示成outj=;從輸入看,每個輸入值對所有的輸出值都產(chǎn)生影響,所有輸入數(shù)據(jù)之間也沒有任何數(shù)據(jù)依賴性。從數(shù)據(jù)特點可以看出,該應(yīng)用既可以對輸入進(jìn)行并行數(shù)據(jù)劃分也可以對輸出進(jìn)行數(shù)據(jù)劃分。下面我們分析CPU+GPU協(xié)同計算時的數(shù)據(jù)劃分方式。

圖3 并行數(shù)據(jù)示例
1         按輸入數(shù)據(jù)劃分
假設(shè)按輸入數(shù)據(jù)劃分,我們可以采用動態(tài)的方式給每個CPU或GPU設(shè)備分配數(shù)據(jù),做到動態(tài)負(fù)載均衡,然而這種劃分方式,使所有的線程向同一個輸出位置保存結(jié)果,為了正確性,需要使所有的線程對每個結(jié)果進(jìn)行原子操作,這樣將會嚴(yán)重影響性能,極端情況下,所有線程還是按順序執(zhí)行的。因此,這種方式效果很差。
2         按輸出數(shù)據(jù)劃分
按輸出數(shù)據(jù)劃分的話可以讓每個線程做不同位置的結(jié)果計算,計算完全獨立,沒有依賴性。如果采用靜態(tài)劃分的方式,由于CPU和GPU計算能力不同,因此,很難做到負(fù)載均衡。采用動態(tài)的方式可以做到負(fù)載均衡,即把結(jié)果每次給CPU或GPU設(shè)備一塊,當(dāng)設(shè)備計算完本次之后,立即向主進(jìn)程申請下一個分塊,這樣可以做到完全負(fù)載均衡。按輸出數(shù)據(jù)劃分,無論采用靜態(tài)劃分還是動態(tài)劃分,都會帶來另外一個問題,由于每個結(jié)果的計算都需要所有輸入信息,那么所有進(jìn)程(設(shè)備)都需要讀取一遍所有輸入數(shù)據(jù),動態(tài)劃分時還不只一次,尤其對于輸入數(shù)據(jù)很大時,這將會對輸入數(shù)據(jù)的IO產(chǎn)生很大的影響,很有可能使IO程序性能瓶頸。
3         按輸入和輸出同時劃分
由于按輸入或按輸出劃分都存在不同的缺點,我們可以采用輸入和輸出同時劃分的方式進(jìn)行數(shù)據(jù)劃分,如圖4所示。
從輸出角度,讓所有的計算進(jìn)程(設(shè)備)都有一份計算結(jié)果,設(shè)備內(nèi)的線程對結(jié)果進(jìn)行并行計算,每個設(shè)備都有一份局部的計算結(jié)果,所有設(shè)備都計算完畢之后,利用MPI進(jìn)程對所有設(shè)備的計算結(jié)果進(jìn)行規(guī)約,規(guī)約最后的結(jié)果即是最終的結(jié)果。
從輸入角度,按輸入數(shù)據(jù)動態(tài)劃分給不同的計算進(jìn)程(設(shè)備),這樣可以滿足所有的計算進(jìn)程負(fù)載均衡。

圖4 CPU+GPU協(xié)同計算數(shù)據(jù)劃分示例
 
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP