一種基于編譯指導的眾核數(shù)據(jù)分片方法
【技術領域】
[0001]本發(fā)明涉及計算機技術領域,具體涉及一種基于編譯指導的眾核數(shù)據(jù)分片方法。
【背景技術】
[0002]眾核處理器上的加速計算核心是眾核處理器的加速運算部件,可以將需要加速運算的代碼和數(shù)據(jù)加載到運算核心上執(zhí)行。加速計算核心對不同層次的存儲器的訪問速度是有很大差異的,其訪問片外主存是較慢的,而對片上存儲器的訪問比片外主存有更快的訪問速度和更高的訪存帶寬。因此加速線程的數(shù)據(jù)只有放在片上局部存儲器中才能獲得良好的加速性能。而實際的應用中,往往因為某些數(shù)據(jù)較大且在加速線程中的訪問模式不規(guī)則而無法存儲在局部存儲器中,從而使得應用的性能下降。
[0003]軟件管理的多層次存儲系統(tǒng)(Software-ManagedMemory Hierarchies System,SMMHS)指的是,眾核處理器上有多層次存儲系統(tǒng),包括片外主存和每個或每幾個計算核心擁有一塊獨立編址的片上存儲器。片上存儲器完全由用戶或者軟件來管理。片上存儲器和片外主存構成了SMMHS的多級訪存資源。
[0004]在擁有SMMHS的眾核處理器上開發(fā)并行程序時,每個或每幾個加速運算核心擁有一塊獨立編址的片上存儲器,容量一般不大。因運算核心的片上局部存儲器容量的限制,一些較大的數(shù)組變量如果在加速線程中具有不規(guī)則訪問模式時,無法存儲在局存中,只能存儲在片外主存中。這樣增加了加速線程的訪存開銷,降低了程序的性能。
[0005]某些編譯器通過分析加速程序段循環(huán)中的數(shù)據(jù)訪問模式,將較大的的數(shù)據(jù)分塊導入到片上局存中,從而提高程序性能。但是他們的方法只限于訪問模式規(guī)整(仿射下標函數(shù))的循環(huán),對于那些不規(guī)則的數(shù)據(jù)訪問模式,他們的編譯分析算法難以進行。
【發(fā)明內容】
[0006]本發(fā)明所要解決的技術問題是針對現(xiàn)有技術中存在上述缺陷,提供一種基于編譯指導的眾核數(shù)據(jù)分片方法,其能夠解決加速線程(Accelerator thread)(運行在加速運算核心上的程序實體)中不規(guī)則訪問特征的數(shù)組利用片上局存進行優(yōu)化的問題,以提高程序性能。
[0007]根據(jù)本發(fā)明,提供了一種基于編譯指導的眾核數(shù)據(jù)分片方法,包括:
[0008]在加速程序段開始處添加編譯指導語句,描述原始數(shù)組的多個分片特征;
[0009]編譯器識別編譯指導語句,記錄原始數(shù)組的每個分片信息;
[0010]對原始數(shù)組的各個分片信息,計算該分片的大小,并在局存中申請具有相同大小的相應局存數(shù)組;
[0011]掃描整個加速程序段,檢查原始數(shù)據(jù)的每個引用;如果該引用的數(shù)據(jù)在當前的分片內,則將原始數(shù)組的引用轉換成對局存數(shù)組的引用;
[0012]如果該引用是讀引用,則在原始數(shù)組的分片信息上記錄讀標志;如果該引用是寫引用,則在原始數(shù)組的分片信息上記錄寫標志;
[0013]如果分片有讀標志,在加速段開始處插入該分片的數(shù)據(jù)導入語句;如果分片有寫標志,在加速段開始處插入該分片的數(shù)據(jù)導出語句。
[0014]優(yōu)選地,在將原始數(shù)組的引用轉換成對局存數(shù)組的引用后,對局存數(shù)組的引用重新計算數(shù)組下標。
[0015]優(yōu)選地,所述基于編譯指導的眾核數(shù)據(jù)分片方法用于具有軟件管理的多層次存儲系統(tǒng)的眾核處理器的編譯系統(tǒng)。
[0016]優(yōu)選地,所述原始數(shù)組的訪問模式具有分段局部的特征。
[0017]優(yōu)選地,所述原始數(shù)組的數(shù)組下標是循環(huán)變量的仿射函數(shù)。
[0018]本發(fā)明采用添加用戶指導描述和編譯分析相結合的策略,解決了某些訪問模式復雜的大數(shù)組有效利用片上局部存儲的問題,提高了程序的執(zhí)行性能。
【附圖說明】
[0019]結合附圖,并通過參考下面的詳細描述,將會更容易地對本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點和特征,其中:
[0020]圖1示意性地示出了根據(jù)本發(fā)明優(yōu)選實施例的基于編譯指導的眾核數(shù)據(jù)分片方法的流程圖。
[0021]需要說明的是,附圖用于說明本發(fā)明,而非限制本發(fā)明。注意,表示結構的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標有相同或者類似的標號。
【具體實施方式】
[0022]為了使本發(fā)明的內容更加清楚和易懂,下面結合具體實施例和附圖對本發(fā)明的內容進行詳細描述。
[0023]加速程序段所用到的數(shù)據(jù)需要盡可能地存儲在片上局存中,優(yōu)化編譯器一般通過編譯靜態(tài)分析、剖析(profiling)等技術分析數(shù)據(jù)的引用模式、訪問頻率和生命周期等信息,然后選擇恰當?shù)乃惴ê途幾g優(yōu)化框架對大數(shù)組進行分片存儲優(yōu)化。這樣可以獲得兩個方面的好處:其一使得那些整個變量不能在片上局存中存儲下的變量也能夠利用片上存儲器進行優(yōu)化;其二使得一些能夠整個存儲在片上局存中的變量只需要一部分存儲在片上存儲器即可,節(jié)約出剩余部分的片上存儲空間做其它數(shù)據(jù)變量的訪存優(yōu)化。但是該方法具有一定的局限性。加速程序段對數(shù)據(jù)的訪問模式是多樣的,編譯器很難分析清楚一段程序中重點數(shù)據(jù)的所有特征引用模式。因此該方法只適用于對數(shù)組訪問模式規(guī)整的程序,例如數(shù)組下標是循環(huán)變量的仿射函數(shù)。
[0024]而在實際的應用程序中,很多數(shù)組的訪問模式具有分段局部的特征,例如:在一次循環(huán)迭代中只訪問數(shù)據(jù)的某一段或者某幾段。這樣的訪問特征編譯器很難分析清楚。
[0025]本發(fā)明提出的基于編譯指導的眾核數(shù)據(jù)分片技術即針對具有這類訪問特征的數(shù)組,設計了用于描述數(shù)據(jù)的分片訪問特征的編譯指導語句,在加速段開始時由用戶添加。編譯器在編譯過程中進行相應的程序變換,將數(shù)據(jù)分片導入或導出片上局部存儲器,提高加速程序段的訪存性能。
[0026]圖