System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于涉及高性能模板(stencil)計算領域,具體涉及一種面向張量加速器的模板計算代碼生成方法及系統。
技術介紹
1、在自然科學領域,偏微分方程通過表達變量與變量偏導數之間的關系來描述自然現象的規律,成為現代科學應用中不可或缺的一部分。舉例來說,偏微分方程在氣候預測、地震模擬、流體力學等領域中得到廣泛應用。為了求解這些應用中的偏微分方程,通常采用數值方法,其中有限差分法(finite?difference?method,fdm)是一種常見的選擇。在有限差分法中,模板計算是基于均勻網格有限差分法的重要計算模式之一。
2、模板計算在空間維度上考慮了自身網格點以及其鄰居網格點的值,通過一定的計算模型確定了該網格點更新的數值。在偏微分方程中,不同偏導數運算對應的模板計算可能存在差異,這些模板計算可以根據多個特征進行分類,包括維度、形狀、階數、計算中系數的類型、邊界處理方式等。如圖1所示,展示了模板計算的階數r,該階數r等于待更新網格點到最遠鄰居網格點的距離。從數學角度來看,模板計算的階數等同于有限差分法中泰勒展開式的階數。
3、由于科學模擬的高度復雜性,科學應用中涉及一組階數、維度、形狀各異的模板計算。在復雜的科學模擬中,一輪迭代可能需要根據多種類型的模板進行網格更新。舉例而言,cosmo是氣象模擬領域中廣泛使用的科學軟件之一,其執行流程相當復雜,包含了30個維數和階數不同的模板計算。這些模板計算的維數涵蓋了二維和三維,而階數則包括2階到16階。由于不同的模板計算模式和訪存模式的多樣性,優化計算性能不僅
4、現有的模板計算代碼生成方法大部分都是基于gpu的通用計算單元,例如artemis將循環優化抽象為調度原語,并提供了自動調優算法,自動生成高性能模板計算代碼,但是artemis依然基于gpu的cuda?core進行計算優化,難以利用張量計算單元的算力,失去了性能優化的機會。而tcstencil利用計算映射,將模板計算轉換為一系列歸約和求和運算,從而實現模板計算到張量計算單元的映射,但目前的工作仍然停留在手動實現cuda?kernel,且難以實現三維模板和高階二維模板的計算映射。現有的研究通過建立領域特定編程語言編譯器,并提出多種模板計算并行優化方法,雖然充分挖掘了cuda?cores的并行性能,但對于最新的張量加速器卻難以充分利用。此外,目前已有的工作通過將模板計算轉換為gemm計算,從而調度張量計算單元實現性能加速,依然局限于手工優化,難以實現自動化代碼生成。
技術實現思路
1、為了解決上述技術問題,本專利技術提供一種面向張量加速器的模板計算?代碼生成方法及系統,設計了一種面向gpu張量加速器且能自動生成高性能模板計算代碼的代碼生成方法,并引入共享內存異步讀取,使得模板計算的訪存部分更加高效。
2、為實現上述目的,本專利技術采用的技術方案為:
3、一方面,本專利技術提供一種面向張量加速器的模板計算代碼生成方法,包括:
4、步驟s1:將模板計算轉換為領域特定編程語言,所述領域特定編程語言包括:模板計算的基本公式和用戶指定的循環優化配置;設置模板計算代碼生成程序的總迭代次數為m次;
5、步驟s2:根據領域特定編程語言所表達的模板計算模式,將模板計算的權重矩陣進行行切分與列切分,提取模板計算權重矩陣中的非零元,當所述非零元位于一行中,則采用行切分,位于一列中,則采用列切分;
6、步驟s3:將切分后的權重行或列進行堆疊重排形成適用于矩陣乘的權重矩陣,選擇適用于張量計算單元的矩陣乘形狀,判斷所述權重行或列能否在矩陣乘形狀范圍內完成堆疊重排,并對其進行重排轉換;
7、步驟s4:啟動自動調優代碼生成器,設置迭代次數i=0,開始迭代搜索模板計算代碼循環優化的最優配置,將所述重排轉換后的模板計算進行循環優化,通過進化搜索生成矩陣乘循環優化配置,構建候選配置隊列,并采用代價模型篩選候選配置;
8、步驟s5:將篩選出的候選配置用于真機實測,獲取實測性能結果后,更新最優配置,并將實測結果用于更新代價模型,迭代次數i加1;
9、步驟s6:檢查進化搜索迭代次數是否達到總迭代次數,如果此時i=m,則程序結束,并將當前最優配置返回,得到最優代碼生成樣本,否則,轉至步驟s4。
10、另一方面,本專利技術一種面向張量加速器的模板計算代碼生成系統,包括,
11、模板計算中間表示模塊,用于將模板計算轉換為領域特定編程語言,所述領域特定編程語言包括:模板計算的基本公式和用戶指定的循環優化配置;設置模板計算代碼生成程序的總迭代次數為m次;
12、模板計算拆分模塊,用于根據領域特定編程語言所表達的模板計算模式,將模板計算的權重矩陣進行行切分與列切分,提取模板計算權重矩陣中的非零元,當所述非零元位于一行中,則采用行切分,位于一列中,則采用列切分;將切分后的權重行或列進行堆疊重排形成適用于矩陣乘的權重矩陣,選擇適用于張量計算單元的矩陣乘形狀,判斷所述權重行或列能否在矩陣乘形狀范圍內完成堆疊重排,并對其進行重排轉換;
13、循環優化模塊,用于啟動自動調優代碼生成器,設置迭代次數i=0,開始迭代搜索模板計算代碼循環優化的最優配置,將所述重排轉換后的模板計算進行循環優化,通過進化搜索生成矩陣乘循環優化配置,構建候選配置隊列,并采用代價模型篩選候選配置;
14、進化搜索模塊,用于將篩選出的候選配置用于真機實測,獲取實測性能結果后,更新最優配置,并將實測結果用于更新代價模型,迭代次數i加1;
15、代碼生成模塊,用于檢查進化搜索迭代次數是否達到總迭代次數,如果此時i=m,則程序結束,并將當前最優配置返回,得到最優代碼生成樣本,否則,轉至循環優化模塊。
16、本專利技術與現有技術相比,具有以下優點:
17、本專利技術引入緩存讀取和緩存寫回原語實現共享內存的異步讀取,構建訪存與計算的多級軟流水,使得訪存開銷能夠更好掩蓋。
本文檔來自技高網...【技術保護點】
1.一種面向張量加速器的模板計算代碼生成方法,其特征在于,包括:
2.根據權利要求1所述的一種面向張量加速器的模板計算代碼生成方法,其特征在于,所述步驟S2包括:
3.根據權利要求1所述的一種面向張量加速器的模板計算代碼生成方法,其特征在于,所述步驟S3包括:
4.根據權利要求1所述的一種面向張量加速器的模板計算代碼生成方法,其特征在于,所述步驟S4中通過進化搜索形成矩陣乘循環優化配置,具體包括:
5.一種面向張量加速器的模板計算代碼生成系統,其特征在于,包括下述模塊:
【技術特征摘要】
1.一種面向張量加速器的模板計算代碼生成方法,其特征在于,包括:
2.根據權利要求1所述的一種面向張量加速器的模板計算代碼生成方法,其特征在于,所述步驟s2包括:
3.根據權利要求1所述的一種面向張量加速器的模板計算代碼生成方法,其特征在...
【專利技術屬性】
技術研發人員:楊海龍,衛林泉,劉笑妍,游心,錢德沛,
申請(專利權)人:北京航空航天大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。