本發(fā)明涉及海洋科學(xué)計算,具體而言,涉及一種海洋模型并行計算方法及系統(tǒng)。
背景技術(shù):
1、目前,隨著海洋經(jīng)濟的發(fā)展,精確預(yù)測海洋環(huán)境變得日益重要。因此,通常需要通過普林斯頓海洋模型(princeton?ocean?model-pom)基于消息傳遞接口或者通過cuda-c代碼對pom重新編寫,來實現(xiàn)pom的并行計算。
2、在現(xiàn)有技術(shù)中,通過消息傳遞接口進行并行計算的方法,由于內(nèi)存分配原因無法在一個或兩個處理器上運行,導(dǎo)致pom并行計算存在一定的局限性;同時,由于cuda-c代碼的編程較為困難,通過cuda-c代碼對pom重新編寫則會導(dǎo)致對pom并行計算的移植難度較高且不宜維護。
技術(shù)實現(xiàn)思路
1、本發(fā)明解決的問題是如何提高海洋模型并行計算的加速效果。
2、為解決上述問題,本發(fā)明提供一種海洋模型并行計算方法及系統(tǒng)。
3、第一方面,本發(fā)明提供一種海洋模型并行計算方法,包括:
4、通過cpu對海洋模型的輸入數(shù)據(jù)進行初始化,得到初始海洋參數(shù),并將所述初始海洋參數(shù)從所述cpu傳輸至gpu;
5、通過所述gpu,根據(jù)所述初始海洋參數(shù)對所述海洋模型的循環(huán)區(qū)域進行處理,得到處理后的循環(huán)區(qū)域;
6、通過所述處理后的循環(huán)區(qū)域在所述海洋模型的內(nèi)外模態(tài)中根據(jù)所述初始海洋參數(shù)進行并行計算,得到所述初始海洋參數(shù)的計算結(jié)果,并將所述計算結(jié)果從所述gpu傳輸至所述cpu。
7、可選地,所述通過cpu對海洋模型的輸入數(shù)據(jù)進行初始化,得到初始海洋參數(shù),并將所述初始海洋參數(shù)從所述cpu傳輸至gpu,包括:
8、通過所述cpu對所述輸入數(shù)據(jù)進格式化處理和單位轉(zhuǎn)換處理,得到與所述海洋模型的輸入格式相同的輸入數(shù)據(jù),作為所述初始海洋參數(shù);
9、根據(jù)所述gpu的數(shù)據(jù)內(nèi)存分配空間,將所述初始海洋參數(shù)從所述cpu傳輸至所述gpu。
10、可選地,所述海洋模型并行計算方法,還包括:
11、判斷所述gpu的內(nèi)存空間中是否存在未初始化的所述數(shù)據(jù)內(nèi)存分配空間;
12、若所述gpu的內(nèi)存空間存在未初始化的所述數(shù)據(jù)內(nèi)存分配空間,則通過openacc的create指令控制所述輸入數(shù)據(jù)在所述gpu上進行初始化,得到初始海洋參數(shù),并將初始化后的所述初始海洋參數(shù)分配至gpu的所述數(shù)據(jù)內(nèi)存分配空間;
13、若所述gpu的內(nèi)存空間不存在未初始化的所述數(shù)據(jù)內(nèi)存分配空間時,通過cpu對海洋模型的輸入數(shù)據(jù)進行初始化,得到初始海洋參數(shù),并將所述初始海洋參數(shù)從所述cpu傳輸至所述gpu。
14、可選地,所述將所述初始海洋參數(shù)從所述cpu傳輸至所述gpu,包括:
15、若所述gpu的內(nèi)存空間不存在未初始化的所述數(shù)據(jù)內(nèi)存分配空間時,則通過openacc的copy指令將已初始化的所述初始海洋參數(shù)從所述cpu的內(nèi)存空間存儲至所述gpu的顯存空間中。
16、可選地,所述根據(jù)所述初始海洋參數(shù)對所述海洋模型的循環(huán)區(qū)域進行處理,得到處理后的循環(huán)區(qū)域,包括:
17、通過所述初始海洋參數(shù)的代碼對每個所述循環(huán)區(qū)域進行分析,得到每個所述循環(huán)區(qū)域之間的數(shù)據(jù)依賴;
18、根據(jù)所述數(shù)據(jù)依賴對所述循環(huán)區(qū)域進行重構(gòu),得到所述處理后的循環(huán)區(qū)域。
19、可選地,所述通過所述初始海洋參數(shù)的代碼對每個所述循環(huán)區(qū)域進行分析,得到每個所述循環(huán)區(qū)域之間的數(shù)據(jù)依賴,包括:
20、通過對所述初始海洋參數(shù)的代碼,判斷每個所述循環(huán)區(qū)域與其他循環(huán)區(qū)域中是否存在相同的參數(shù);
21、若是,則判定所述循環(huán)區(qū)域與所述其他循環(huán)區(qū)域存在所述數(shù)據(jù)依賴;
22、若否,則判定所述循環(huán)區(qū)域與所述其他循環(huán)區(qū)域不存在所述數(shù)據(jù)依賴。
23、可選地,所述根據(jù)所述數(shù)據(jù)依賴對所述循環(huán)區(qū)域進行重構(gòu),得到所述處理后的循環(huán)區(qū)域,包括:
24、將所述循環(huán)區(qū)域的最外層的垂直循環(huán)移動至所述循環(huán)區(qū)域的最內(nèi)層;
25、通過collapse子語句,確定所述循環(huán)區(qū)域的嵌套循環(huán)層數(shù);
26、通過所述嵌套循環(huán)層數(shù)調(diào)整所述循環(huán)區(qū)域的循環(huán)順序,得到所述處理后的循環(huán)區(qū)域。
27、可選地,所述通過所述處理后的循環(huán)區(qū)域在所述海洋模型的內(nèi)外模態(tài)中根據(jù)所述初始海洋參數(shù)進行并行計算,得到所述初始海洋參數(shù)的計算結(jié)果,包括:
28、在所述海洋模型中所述內(nèi)外模態(tài)對應(yīng)的循環(huán)區(qū)域中添加并行指令,其中,所述海洋模型的內(nèi)模態(tài)和外模態(tài)分別對應(yīng)一個循環(huán)區(qū)域;
29、通過所述并行指令控制所述內(nèi)外模態(tài)的所有循環(huán)區(qū)域同時進行計算,得到所述初始海洋參數(shù)的所述計算結(jié)果。
30、可選地,所述將所述計算結(jié)果從所述gpu傳輸至所述cpu;
31、對所述計算結(jié)果進行篩選,得到所述cpu需要的輸出數(shù)據(jù);
32、通過輸出指令將所述輸出數(shù)據(jù)從所述gpu的內(nèi)存空間復(fù)制至所述cpu的內(nèi)存空間。
33、第二方面,本發(fā)明提供一種海洋模型并行計算系統(tǒng),包括:
34、數(shù)據(jù)處理單元,用于通過cpu對海洋模型的輸入數(shù)據(jù)進行初始化,得到初始海洋參數(shù),并將所述初始海洋參數(shù)從所述cpu傳輸至gpu;
35、循環(huán)轉(zhuǎn)換單元,用于通過所述gpu,根據(jù)所述初始海洋參數(shù)對所述海洋模型的循環(huán)區(qū)域進行處理,得到處理后的循環(huán)區(qū)域;
36、并行處理單元,用于通過所述處理后的循環(huán)區(qū)域在所述海洋模型的內(nèi)外模態(tài)中根據(jù)所述初始海洋參數(shù)進行并行計算,得到所述初始海洋參數(shù)的計算結(jié)果,并將所述計算結(jié)果從所述gpu傳輸至所述cpu。
37、本發(fā)明的海洋模型并行計算方法及系統(tǒng),通過在cpu上初始化海洋模型的輸入數(shù)據(jù)并直接將其傳輸至gpu,減少了cpu與gpu之間的通信頻率,從而加速了模型的啟動和運行,接著,在gpu上利用并行計算能力,根據(jù)初始參數(shù)對海洋模型的循環(huán)區(qū)域進行處理,例如,通過循環(huán)重構(gòu)和數(shù)據(jù)依賴分析確保循環(huán)區(qū)域可以高效并行執(zhí)行,同時保持?jǐn)?shù)據(jù)的一致性和準(zhǔn)確性。最后,利用處理后的循環(huán)區(qū)域在海洋模型的內(nèi)外模態(tài)中根據(jù)初始海洋參數(shù)進行并行計算,通過精細(xì)的并行策略和優(yōu)化的數(shù)據(jù)訪問模式,加速計算過程,并將計算結(jié)果同步至cpu,以便進行后續(xù)分析或存儲。本發(fā)明通過cpu負(fù)責(zé)初始化數(shù)據(jù)以及最后的輸出數(shù)據(jù),gpu負(fù)責(zé)循環(huán)重構(gòu)和并行計算策略,將整個程序進行移植至gpu,通過gpu將所有可并行的循環(huán)進行并行,利用gpu的高并行處理能力,顯著提高模型的計算速度和處理大規(guī)模數(shù)據(jù)集的能力,實現(xiàn)了海洋模型并行計算的加速,改善了海洋模型并行計算的加速效果。
1.一種海洋模型并行計算方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的海洋模型并行計算方法,其特征在于,所述通過cpu對海洋模型的輸入數(shù)據(jù)進行初始化,得到初始海洋參數(shù),并將所述初始海洋參數(shù)從所述cpu傳輸至gpu,包括:
3.根據(jù)權(quán)利要求2所述的海洋模型并行計算方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求3所述的海洋模型并行計算方法,其特征在于,所述將所述初始海洋參數(shù)從所述cpu傳輸至所述gpu,包括:
5.根據(jù)權(quán)利要求1所述的海洋模型并行計算方法,其特征在于,所述根據(jù)所述初始海洋參數(shù)對所述海洋模型的循環(huán)區(qū)域進行處理,得到處理后的循環(huán)區(qū)域,包括:
6.根據(jù)權(quán)利要求5所述的海洋模型并行計算方法,其特征在于,所述通過所述初始海洋參數(shù)的代碼對每個所述循環(huán)區(qū)域進行分析,得到每個所述循環(huán)區(qū)域之間的數(shù)據(jù)依賴,包括:
7.根據(jù)權(quán)利要求5所述的海洋模型并行計算方法,其特征在于,所述根據(jù)所述數(shù)據(jù)依賴對所述循環(huán)區(qū)域進行重構(gòu),得到所述處理后的循環(huán)區(qū)域,包括:
8.根據(jù)權(quán)利要求1所述的海洋模型并行計算方法,其特征在于,所述通過所述處理后的循環(huán)區(qū)域在所述海洋模型的內(nèi)外模態(tài)中根據(jù)所述初始海洋參數(shù)進行并行計算,得到所述初始海洋參數(shù)的計算結(jié)果,包括:
9.根據(jù)權(quán)利要求1所述的海洋模型并行計算方法,其特征在于,所述將所述計算結(jié)果從所述gpu傳輸至所述cpu;
10.一種海洋模型并行計算系統(tǒng),其特征在于,包括: