一種基于opencl的異構共同計算均衡方法
【技術領域】
[0001] 本發(fā)明涉及計算機計算領域,具體涉及一種基于OPENCL的異構共同計算均衡方 法。
【背景技術】
[0002] OpenCL (全稱Open Computing Language,開放運算語言)是面向異構系統(tǒng)通用 目的并行編程的開放式、免費標準,也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能 計算服務器、桌面計算系統(tǒng)、手持設備編寫高效輕便的代碼,而且廣泛適用于多核心處理器 (CPU)、圖形處理器(GPU)、Cell類型架構以及數(shù)字信號處理器(DSP)等其他并行處理器。
[0003] 近年來,基于CPU+GPU的混合異構計算系統(tǒng)開始逐漸成為國內外高性能計算領域 的熱點研宄方向。在實際應用中,許多基于CPU+GPU的混合異構計算機系統(tǒng)表現(xiàn)出了良好 的性能。但是,由于各種歷史和現(xiàn)實原因的制約,異構計算仍然面臨著諸多方面的問題,其 中最突出的問題是程序開發(fā)困難,尤其是擴展到集群規(guī)模級別時這個問題更為突出,主要 表現(xiàn)在擴展性、負載均衡等方面。
【發(fā)明內容】
[0004] 本發(fā)明為解決上述問題,提供了一種基于OPENCL的異構共同計算均衡方法,該方 法應用于CPU+GPU混合異構共同計算系統(tǒng)中,所述CPU+GPU混合異構共同計算系統(tǒng)劃分成 三個并行層次:節(jié)點間并行、節(jié)點內CPU與GPU異構并行、設備內并行,所述設備是指CPU或 GPU ;CPU+GPU異構共同計算模式為:節(jié)點間分布式,節(jié)點內異構式,設備內共享式;所述節(jié) 點間分布式是指節(jié)點間采用了分布式的計算方式,所述節(jié)點內異構式是指每個節(jié)點內部包 含一個多核CPU、一個或多個GPU,節(jié)點內部采用主從式編程模型,即每個GPU需要由CPU進 程或線程調用;所述設備內并行是指每個節(jié)點內的所有多核CPU采用了共享存儲模型,這 些CPU核并行計算,GPU設備內有自己獨立的DRAM存儲,GPU設備也是共享存儲模型,在GPU 上采用OpenCL編程控制GPU眾核的并行計算;在該系統(tǒng)中,由一個CPU進程/線程負責復 雜邏輯和事務處理,其它CPU進程/線程負責小部分并行計算,GPU負責大部分并行計算;
[0005] 在該方法中,節(jié)點內和節(jié)點間均采用MPI進程,設計負載均衡時,只需做到進程間 或設備之間的負載均衡和CPU設備內OpenMP線程負載均衡、GPU設備內CUDA線程負載均 衡即可;對于設備內,GPU設備上只要保證同一 warp內的線程負載均衡即可;
[0006] 在該方法中,采用動態(tài)負載均衡方式,即在任務執(zhí)行過程中,根據各GPU的運行情 況重新調整負載分配,動態(tài)分配任務;對計算任務進行劃分時按照輸入數(shù)據劃分,對于矩陣 AXB = C問題而言,按輸入數(shù)據劃分可以分解為
[0007]
【主權項】
1. 一種基于OPENCL的異構共同計算均衡方法,該方法應用于CPU+GPU混合異構共同計 算系統(tǒng)中, 所述CPU+GPU混合異構共同計算系統(tǒng)劃分成三個并行層次:節(jié)點間并行、節(jié)點內CPU與GPU異構并行、設備內并行,所述設備是指CPU或GPU;CPU+GPU異構共同計算模式為:節(jié)點 間分布式,節(jié)點內異構式,設備內共享式;所述節(jié)點間分布式是指節(jié)點間采用了分布式的計 算方式,所述節(jié)點內異構式是指每個節(jié)點內部包含一個多核CPU、一個或多個GPU,節(jié)點內 部采用主從式編程模型,即每個GPU需要由CPU進程或線程調用;所述設備內并行是指每個 節(jié)點內的所有多核CPU采用了共享存儲模型,這些CPU核并行計算,GPU設備內有自己獨立 的DRAM存儲,GPU設備也是共享存儲模型,在GPU上采用OpenCL編程控制GPU眾核的并行 計算;在該系統(tǒng)中,由一個CPU進程/線程負責復雜邏輯和事務處理,其它CPU進程/線程 負責小部分并行計算,GPU負責大部分并行計算; 在該方法中,節(jié)點內和節(jié)點間均采用MPI進程,設計負載均衡時,只需做到進程間或設 備之間的負載均衡和CPU設備內OpenMP線程負載均衡、GPU設備內CUDA線程負載均衡即 可;對于設備內,GPU設備上只要保證同一warp內的線程負載均衡即可; 在該方法中,采用動態(tài)負載均衡方式,即在任務執(zhí)行過程中,根據各GPU的運行情況 重新調整負載分配,動態(tài)分配任務;對計算任務進行劃分時按照輸入數(shù)據劃分,對于矩陣 AXB=C問題而言,按輸入數(shù)據劃分可以分解為
矩陣A與矩陣B分別按行與列劃分為若干數(shù)據塊,每個數(shù)據塊的計算為一個任務,每次 傳輸矩陣A與矩陣B的一個數(shù)據塊至GPU,計算完成之后將數(shù)據傳回,然后分配下一個任務。
2. 根據權利要求1所述的方法,其特征在于,優(yōu)選的,對輸入數(shù)據劃分時,使任務塊的 計算時間與其它GPU的一次數(shù)據傳輸?shù)臅r間相等。
3. 根據權利要求1或2所述的方法,其特征在于,對計算任務進行劃分時,以"按照輸 出數(shù)據劃分"替代"按照輸入數(shù)據劃分",讓不同的GPU做不同位置的結果計算,計算結果完 全獨立,沒有依賴性,對于矩陣AXB=C問題而言,按輸出數(shù)據劃分可以分解為
將矩陣C分塊,將不同塊的位置傳遞給各GPU,當GPU計算完當前塊之后可立即分配下 一個任務,這樣可以做到負載均衡。
4. 根據權利要求1-3中任一項所述的方法,其特征在于,采用輸入和輸出同時劃分的 方式進行數(shù)據劃分。
5. 根據權利要求1-4中任一項所述的方法,其特征在于,CPU+GPU混合異構共同計算系 統(tǒng)采用主從式MPI通信機制,在節(jié)點0上多起一個進程作為主進程,控制其它所有進程。
6. 根據權利要求1-5中任一項所述的方法,其特征在于,每個節(jié)點上啟動3個計算進 程,其中兩個控制GPU設備,一個控制其余所有CPU核的并行。
7. 根據權利要求1-6中任一項所述的方法,其特征在于,把節(jié)點內的所有多核CPU看作 一個設備,采用MPI進程或OpenMP線程、pThread線程控制這些CPU核的并行計算。
8. 根據權利要求1-7中任一項所述的方法,其特征在于,CPU+GPU混合異構共同計算系 統(tǒng)中各個節(jié)點之間通過網絡進行連接,節(jié)點間采用了分布式的計算方式,采用MPI消息通 信的并行編程語言。
9. 根據權利要求1-8中任一項所述的方法,其特征在于,CPU+GPU混合異構共同計算系 統(tǒng)中所述CPU只負責復雜邏輯和事務處理,GPU進行大規(guī)模并行計算。
10. 根據權利要求1-9中任一項所述的方法,其特征在于,采用靜態(tài)負載均衡方式,即 在任務執(zhí)行之前,按各GPU的計算能力比例將任務均勻劃分到各GPU上。
【專利摘要】本發(fā)明公開了一種基于OPENCL的異構共同計算均衡方法,該方法應用于CPU+GPU混合異構共同計算系統(tǒng)中,所述CPU+GPU混合異構共同計算系統(tǒng)劃分成三個并行層次:節(jié)點間并行、節(jié)點內CPU與GPU異構并行、設備內并行;負載均衡性需要在上述3個層次上分別設計;在該方法中,對計算任務進行劃分時按照輸入數(shù)據劃分,劃分時使任務塊的計算時間與其它GPU的一次數(shù)據傳輸?shù)臅r間相等。采用本發(fā)明公開的技術方案,較好地實現(xiàn)了CPU+GPU混合異構計算機系統(tǒng)的負載均衡。
【IPC分類】G06F9-50, G06F9-38
【公開號】CN104714850
【申請?zhí)枴緾N201510093877
【發(fā)明人】邰從越
【申請人】心醫(yī)國際數(shù)字醫(yī)療系統(tǒng)(大連)有限公司
【公開日】2015年6月17日
【申請日】2015年3月2日