System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機,特別是涉及一種加速卡算子適配方法、裝置、計算機設備、存儲介質和計算機程序產品。
技術介紹
1、國產加速卡常用于加速深度學習的訓練和推理,而算子移植是將深度學習框架默認的算子映射到加速卡上的過程。針對國產加速卡產業發展,越來越多的國產加速卡有算子優化需求。
2、然而,對于現有的算子優化適配方法,不同架構的國產加速卡需要構建不同的算子,這無疑增加了設計成本。
技術實現思路
1、基于此,有必要針對上述技術問題,提供一種多加速卡算子適配方法、裝置、計算機設備、存儲介質和計算機程序產品。
2、第一方面,本申請提供了一種加速卡算子適配方法,所述方法包括:
3、將算子源代碼放入預定文件夾;
4、將所述算子源代碼轉化為抽象語法樹ast;
5、根據所述抽象語法樹ast,利用mlir工具生成looplet?dialect;
6、根據加速卡的架構,在所述looplet?dialect內對加速卡算子進行優化;
7、通過mlir工具將所述looplet?dialect轉換為affine?dialect;
8、基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化;
9、通過mlir工具將所述affine?dialect轉化為llvm?dialect;
10、通過llvm工具將llvm?dialect轉化為llvm?ir;
11、利用llv
12、在其中一個實施例中,所述looplet?dialect來自finch編譯器中的核心語言looplet。
13、在其中一個實施例中,所述基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化,包括:
14、解析并構建affine?dialect;
15、通過affineanalysis工具,分析不同循環迭代和數組訪問之間的依賴關系;
16、構建用于表示所述依賴關系的圖結構;
17、將解析和構建affine?dialect過程中的affine.for循環的迭代空間表示為多面體模型中的一個區域;
18、根據數據依賴分析,將依賴關系作為多面體模型中的約束條件;
19、調度優化,使用多面體模型來重新調度循環的執行順序;
20、識別獨立的循環迭代,并通過生成affine.parallel實現并行執行;
21、生成新的affine?dialect?ir。
22、在其中一個實施例中,所述調度優化,使用多面體模型來重新調度循環的執行順序,包括:循環重排、循環平鋪、循環融合。
23、在其中一個實施例中,所述解析并構建affine?dialect包括:affine.for操作、affine.if操作、affine.load操作、affine.store操作。
24、在其中一個實施例中,所述生成新的affine?dialect?ir包括:重新映射迭代空間和調度信息,并表達為affine?dialect中的affine.for操作、affine.if操作。
25、第二方面,本申請還提供了一種加速卡算子適配裝置,所述裝置包括:
26、輸入模塊,用于將算子源代碼放入預定文件夾;
27、轉化模塊,用于將所述算子源代碼轉化為抽象語法樹ast;
28、處理模塊,用于根據所述抽象語法樹ast,利用mlir工具生成looplet?dialect;
29、第一優化模塊,用于根據加速卡的架構,在所述looplet?dialect內對加速卡算子進行優化;
30、第一轉換模塊,用于通過mlir工具將所述looplet?dialect轉換為affinedialect;
31、第二優化模塊,用于基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化;
32、第二轉換模塊,用于通過mlir工具將所述affine?dialect轉化為llvm?dialect;
33、第三轉換模塊,用于通過llvm工具將llvm?dialect轉化為llvm?ir;
34、編譯模塊,用于利用llvm下llc工具將llvm?ir編譯為可執行二進制文件。
35、第三方面,本申請還提供了一種計算機設備。所述計算機設備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執行所述計算機程序時實現以下步驟:
36、將算子源代碼放入預定文件夾;
37、將所述算子源代碼轉化為抽象語法樹ast;
38、根據所述抽象語法樹ast,利用mlir工具生成looplet?dialect;
39、根據加速卡的架構,在所述looplet?dialect內對加速卡算子進行優化;
40、通過mlir工具將所述looplet?dialect轉換為affine?dialect;
41、基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化;
42、通過mlir工具將所述affine?dialect轉化為llvm?dialect;
43、通過llvm工具將llvm?dialect轉化為llvm?ir;
44、利用llvm下llc工具將llvm?ir編譯為可執行二進制文件。
45、第四方面,本申請還提供了一種計算機可讀存儲介質。所述計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現以下步驟:將算子源代碼放入預定文件夾;
46、將所述算子源代碼轉化為抽象語法樹ast;
47、根據所述抽象語法樹ast,利用mlir工具生成looplet?dialect;
48、根據加速卡的架構,在所述looplet?dialect內對加速卡算子進行優化;
49、通過mlir工具將所述looplet?dialect轉換為affine?dialect;
50、基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化;
51、通過mlir工具將所述affine?dialect轉化為llvm?dialect;
52、通過llvm工具將llvm?dialect轉化為llvm?ir;
53、利用llvm下llc工具將llvm?ir編譯為可執行二進制文件。
54、第五方面,本申請還提供了一種計算機程序產品。所述計算機程序產品,包括計算機程序,該計算機程序被處理器執行時實現以下步驟:
55、將算子源代碼放入預定文件夾;
56、將所述算子源代碼轉化為抽象語法樹ast;
...
【技術保護點】
1.一種加速卡算子適配方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述Looplet?dialect來自finch編譯器中的核心語言Looplet。
3.根據權利要求1所述的方法,其特征在于,所述基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化,包括:
4.根據權利要求3所述的方法,其特征在于,所述調度優化,使用多面體模型來重新調度循環的執行順序,包括:循環重排、循環平鋪、循環融合。
5.根據權利要求3所述的方法,其特征在于,所述解析并構建affine?dialect包括:affine.for操作、affine.if操作、affine.load操作、affine.store操作。
6.根據權利要求3所述的方法,其特征在于,所述生成新的Affine?Dialect?IR包括:重新映射迭代空間和調度信息,并表達為Affine?Dialect中的affine.for操作、affine.if操作。
7.一種加速卡算子適配裝置,其特征在于,所述裝置包括:
>8.一種計算機設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,其特征在于,所述處理器執行所述計算機程序時實現權利要求1至6中任一項所述的方法的步驟。
9.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現權利要求1至6中任一項所述的方法的步驟。
10.一種計算機程序產品,包括計算機程序,其特征在于,該計算機程序被處理器執行時實現權利要求1至6中任一項所述的方法的步驟。
...【技術特征摘要】
1.一種加速卡算子適配方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述looplet?dialect來自finch編譯器中的核心語言looplet。
3.根據權利要求1所述的方法,其特征在于,所述基于所述affine?dialect,采用多面體模型對所述加速卡算子進行優化,包括:
4.根據權利要求3所述的方法,其特征在于,所述調度優化,使用多面體模型來重新調度循環的執行順序,包括:循環重排、循環平鋪、循環融合。
5.根據權利要求3所述的方法,其特征在于,所述解析并構建affine?dialect包括:affine.for操作、affine.if操作、affine.load操作、affine.store操作。
6.根據權利要...
【專利技術屬性】
技術研發人員:陽王東,李楚夢,李肯立,王昊天,劉楚波,何賢浩,劉毅文,胡京龍,
申請(專利權)人:湖南大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。