本發(fā)明涉及基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化方法及系統(tǒng),屬于電子信息。
背景技術(shù):
1、中國(guó)高性能計(jì)算經(jīng)過(guò)幾十年的發(fā)展,探索出了以神威超級(jí)計(jì)算機(jī)為代表的國(guó)產(chǎn)高性能計(jì)算機(jī)的發(fā)展之路,使中國(guó)具備了自主研制高性能處理器和加速器的能力。超級(jí)計(jì)算機(jī)對(duì)基礎(chǔ)科研、科技成果的產(chǎn)業(yè)化應(yīng)用和國(guó)民經(jīng)濟(jì)可持續(xù)發(fā)展等諸多方面,都有重要的意義。
2、新一代神威超級(jí)計(jì)算機(jī)使用的處理器芯片為申威sw26010pro處理器,芯片采用類(lèi)似異構(gòu)架構(gòu),如圖1所示,每個(gè)核組包括一個(gè)運(yùn)算控制核心(mpe,簡(jiǎn)稱(chēng)主核)和一個(gè)8×8的運(yùn)算核心(cpe,簡(jiǎn)稱(chēng)從核)陣列,陣列中任意兩個(gè)運(yùn)算核心之間可以通過(guò)遠(yuǎn)程存儲(chǔ)器訪(fǎng)問(wèn)(rma)方式進(jìn)行數(shù)據(jù)通信和集合通信。一個(gè)處理器芯片內(nèi)集成6個(gè)核組(cg),通過(guò)片上互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,每個(gè)節(jié)點(diǎn)包含兩個(gè)sw26010pro處理器,節(jié)點(diǎn)計(jì)算性能可達(dá)?6.12?tflpos,整個(gè)系統(tǒng)有512個(gè)節(jié)點(diǎn),機(jī)器的峰值性能可達(dá)?3.13?pflops。
3、主核和從核均采用自主知識(shí)產(chǎn)權(quán)的sw64指令集,主核支持256位simd向量操作,從核支持512位simd向量操作。主核存儲(chǔ)層次包含寄存器、數(shù)據(jù)cache、指令cache、數(shù)據(jù)和指令共用的二級(jí)cache、主存,從核存儲(chǔ)層次包括寄存器、片上數(shù)據(jù)存儲(chǔ)空間、指令cache、主存,其中數(shù)據(jù)存儲(chǔ)空間可以配置為軟件管理的局部數(shù)據(jù)存儲(chǔ)(ldm)或硬件管理的l1數(shù)據(jù)cache。從核可以發(fā)起直接存儲(chǔ)器訪(fǎng)問(wèn)(dma)操作實(shí)現(xiàn)ldm和主存之間的數(shù)據(jù)傳輸,也可以通過(guò)rma操作實(shí)現(xiàn)本地ldm與其他從核ldm之間的數(shù)據(jù)傳輸。
4、鑒于申威眾核處理器sw26010pro的獨(dú)特架構(gòu),在計(jì)算優(yōu)化的過(guò)程中,需盡可能的將計(jì)算任務(wù)分配到從核組中進(jìn)行計(jì)算,但是在一些程序中,由于存在依賴(lài)等問(wèn)題,無(wú)法使用從核組進(jìn)行計(jì)算,導(dǎo)致從核組和主核頻繁交替執(zhí)行計(jì)算任務(wù),拖慢程序的整體運(yùn)行速度。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供了基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化方法;
2、本發(fā)明還提供了基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化系統(tǒng)。
3、本發(fā)明考慮到申威眾核處理器sw26010pro?從核組良好的計(jì)算性能,和主核良好的兼容性。通過(guò)對(duì)零散分布的從核函數(shù)進(jìn)行合并,和合理利用主核算力,采用多指令流多數(shù)據(jù)流的方式,并行的完成整個(gè)計(jì)算任務(wù),減少主存和從核組?ldm之間的數(shù)據(jù)傳輸次數(shù),降低從核訪(fǎng)存的帶寬壓力,從而達(dá)到核組內(nèi)各運(yùn)算核心計(jì)算效率都得到提高的效果。
4、在從核化優(yōu)化的過(guò)程中,當(dāng)程序中由于存在依賴(lài)等問(wèn)題,只能將一部分計(jì)算任務(wù)分配給從核組進(jìn)行計(jì)算,造成從核組和主核頻繁交替計(jì)算的情況時(shí),根據(jù)其計(jì)算特征和申威眾核處理器sw26010pro?芯片的架構(gòu)特點(diǎn),設(shè)計(jì)出適合的從核函數(shù)合并方法,配合主核的適當(dāng)參與,以實(shí)現(xiàn)更好的計(jì)算效果。
5、本發(fā)明的技術(shù)方案為:
6、基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化方法,包括:
7、(1)數(shù)據(jù)預(yù)處理
8、將任務(wù)中含有依賴(lài)的運(yùn)算任務(wù)和可從核化的計(jì)算任務(wù)分隔開(kāi);
9、當(dāng)需要相同初始數(shù)據(jù)時(shí),將初始數(shù)據(jù)復(fù)制轉(zhuǎn)存到從核ldm?中;采用數(shù)據(jù)打包的方法,將所有計(jì)算數(shù)據(jù)一次性傳入從核?ldm中;
10、(2)主核與從核協(xié)助處理
11、根據(jù)原計(jì)算任務(wù)的計(jì)算邏輯,將含有依賴(lài)的運(yùn)算任務(wù)和可從核化的計(jì)算任務(wù)分別交由主核和從核處理,實(shí)現(xiàn)核組內(nèi)多指令流多數(shù)據(jù)流的并行運(yùn)行;
12、從核和主核在計(jì)算過(guò)程中,當(dāng)從核需要主核的計(jì)算中間結(jié)果,或者,當(dāng)主核需要從核的計(jì)算中間結(jié)果時(shí),將這些計(jì)算中間結(jié)果進(jìn)行分別歸類(lèi),具體是指:比較該中間結(jié)果的傳輸時(shí)間和計(jì)算時(shí)間,若傳輸時(shí)間小于計(jì)算時(shí)間,則該中間結(jié)果為計(jì)算所需時(shí)間長(zhǎng)且明顯影響整體運(yùn)算效率的中間結(jié)果;否則,該中間結(jié)果為計(jì)算所需時(shí)間短且不影響整體運(yùn)算效率的中間結(jié)果;
13、對(duì)于計(jì)算所需時(shí)間短且不影響整體運(yùn)算效率的中間結(jié)果的計(jì)算任務(wù),從核和主核均執(zhí)行;對(duì)于計(jì)算所需時(shí)間長(zhǎng)且明顯影響整體運(yùn)算效率的中間結(jié)果的計(jì)算任務(wù),采用核組內(nèi)通信的方法,傳輸所需中間結(jié)果;
14、(3)從核計(jì)算優(yōu)化
15、在從核?ldm?中申請(qǐng)一塊單獨(dú)的區(qū)域用以存儲(chǔ)中間結(jié)果,通過(guò)?rma?接口,由本地從核獲取該區(qū)域的中間結(jié)果,或者本地從核與其他從核相互傳輸該區(qū)域的中間結(jié)果;另外申請(qǐng)一部分主存空間,用來(lái)接收從核計(jì)算結(jié)果;在核組內(nèi)所有線(xiàn)程均達(dá)到預(yù)定的結(jié)束位置時(shí),再將運(yùn)算的結(jié)果進(jìn)行合并。
16、根據(jù)本發(fā)明優(yōu)選的,通過(guò)將含有依賴(lài)的運(yùn)算任務(wù)和可從核化的計(jì)算任務(wù)分別重組為主核函數(shù)和從核函數(shù)來(lái)進(jìn)行分割。
17、根據(jù)本發(fā)明優(yōu)選的,對(duì)傳入從核的計(jì)算數(shù)據(jù)進(jìn)行優(yōu)化;包括:將三維的運(yùn)算數(shù)組,分割為二維數(shù)組。
18、根據(jù)本發(fā)明優(yōu)選的,通過(guò)對(duì)計(jì)算任務(wù)各個(gè)部分所需時(shí)間進(jìn)行計(jì)算,結(jié)合計(jì)算邏輯,調(diào)整各個(gè)計(jì)算任務(wù)的前后順序,找到合適的數(shù)據(jù)同步節(jié)點(diǎn),完成數(shù)據(jù)同步;合適的數(shù)據(jù)同步節(jié)點(diǎn)是指到達(dá)同步節(jié)點(diǎn)的時(shí)間相同。
19、根據(jù)本發(fā)明優(yōu)選的,找到合適的數(shù)據(jù)同步節(jié)點(diǎn),完成數(shù)據(jù)同步;是指:通過(guò)調(diào)整各個(gè)計(jì)算任務(wù)的前后順序,找到前序計(jì)算任務(wù)結(jié)束時(shí)間相同的節(jié)點(diǎn),在該節(jié)點(diǎn)后進(jìn)行同步。
20、一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化方法的步驟。
21、一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化方法的步驟。
22、基于申威眾核處理器的核組內(nèi)多線(xiàn)程優(yōu)化系統(tǒng),包括:
23、數(shù)據(jù)預(yù)處理模塊,被配置為:將任務(wù)中含有依賴(lài)的運(yùn)算任務(wù)和可從核化的計(jì)算任務(wù)分隔開(kāi);
24、當(dāng)需要相同初始數(shù)據(jù)時(shí),將初始數(shù)據(jù)復(fù)制轉(zhuǎn)存到從核ldm?中;采用數(shù)據(jù)打包的方法,將所有計(jì)算數(shù)據(jù)一次性傳入從核?ldm中;
25、主核與從核協(xié)助處理模塊,被配置為:根據(jù)原計(jì)算任務(wù)的計(jì)算邏輯,將含有依賴(lài)的運(yùn)算任務(wù)和可從核化的計(jì)算任務(wù)分別交由主核和從核處理,實(shí)現(xiàn)核組內(nèi)多指令流多數(shù)據(jù)流的并行運(yùn)行;
26、從核和主核在計(jì)算過(guò)程中,當(dāng)從核需要主核的計(jì)算中間結(jié)果,或者,當(dāng)主核需要從核的計(jì)算中間結(jié)果時(shí),將這些計(jì)算中間結(jié)果進(jìn)行分別歸類(lèi),具體是指:比較該中間結(jié)果的傳輸時(shí)間和計(jì)算時(shí)間,若傳輸時(shí)間小于計(jì)算時(shí)間,則該中間結(jié)果為計(jì)算所需時(shí)間長(zhǎng)且明顯影響整體運(yùn)算效率的中間結(jié)果;否則,該中間結(jié)果為計(jì)算所需時(shí)間短且不影響整體運(yùn)算效率的中間結(jié)果;
27、對(duì)于計(jì)算所需時(shí)間短且不影響整體運(yùn)算效率的中間結(jié)果的計(jì)算任務(wù),從核和主核均執(zhí)行;對(duì)于計(jì)算所需時(shí)間長(zhǎng)且明顯影響整體運(yùn)算效率的中間結(jié)果的計(jì)算任務(wù),采用核組內(nèi)通信的方法,傳輸所需中間結(jié)果;
28、從核計(jì)算優(yōu)化模塊,被配置為:在從核?ldm?中申請(qǐng)一塊單獨(dú)的區(qū)域用以存儲(chǔ)中間結(jié)果,通過(guò)?rma?接口,由本地從核獲取該區(qū)域的中間結(jié)果,或者本地從核與其他從核相互傳輸該區(qū)域的中間結(jié)果;另外申請(qǐng)一部分主存空間,用來(lái)接收從核計(jì)算結(jié)果;在核組內(nèi)所有線(xiàn)程均達(dá)到預(yù)定的結(jié)束位置時(shí),再將運(yùn)算的結(jié)果進(jìn)行合并。
29、本發(fā)明的有益效果為:
30、1、本發(fā)明減少了從核組和主存之間的數(shù)據(jù)傳輸次數(shù),避免了多次數(shù)據(jù)傳輸造成的計(jì)算中斷和數(shù)據(jù)錯(cuò)誤,有效增強(qiáng)了從核函數(shù)的獨(dú)立性,提高了計(jì)算效率。
31、2、本發(fā)明減少了從核組內(nèi)的通信次數(shù),節(jié)省了寶貴的?ldm?空間,提高了從核間的負(fù)載均衡度。
32、3、本發(fā)明增加了核組內(nèi)各運(yùn)算核心計(jì)算能力的利用效率,減少了空閑等待時(shí)間,提高了整體計(jì)算任務(wù)的計(jì)算效率和完成度。