System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請實施例涉及編譯技術和人工智能,尤其涉及一種指令生成方法、裝置及存儲介質。
技術介紹
1、在處理器硬件(如圖形處理器gpu或人工智能處理器等)的設計中,為了提高硬件處理器的運算效率及其在多個應用場景下的通用性,處理器硬件往往會根據不同的運算需求針對同一類操作提供不同的硬件指令。比如,針對加法相關操作,硬件可以根據不同的需要提供對位點加(element-wise?add)、廣播加法(broadcasting?add)、常量加法(addconstant)等多個指令。
2、用戶在使用過程中需要針對每個硬件指令編寫相應的程序,如api(applicationprogramming?interface,應用程序編程接口),這樣就會造成api比較多,用戶使用較麻煩,編程及文檔也比較繁瑣。
技術實現思路
1、本申請實施例提供一種指令生成方法、裝置及存儲介質,針對某一類別的運算提供統一的api接口,通過對該api接口的參數解析自動選擇硬件指令的具體類別,從而簡化編程,方便用戶使用。
2、第一方面,本申請實施例提供一種指令生成方法,包括:
3、通過預設指令類別的統一接口接收指令參數;其中所述指令參數包括至少兩個操作數以及輸出地址;
4、根據所述指令參數確定各所述操作數的表示形式;
5、根據各所述操作數的表示形式以及所述指令參數,生成對應的目標指令。
6、在一種可能的設計中,所述根據各所述操作數的表示形式以及所述指令參數,生成
7、根據各所述操作數的表示形式從所述預設指令類別中確定目標類別;
8、根據所述指令參數以及所述目標類別,生成對應的目標指令。
9、在一種可能的設計中,所述根據各所述操作數的表示形式從所述預設指令類別中確定目標類別,包括:
10、判斷各所述操作數的表示形式是否均為存儲單元地址;
11、若各所述操作數的表示形式均為存儲單元地址,則基于存儲單元地址確定各所述操作數的數據形狀;
12、根據各所述操作數的數據形狀確定所述目標類別。
13、在一種可能的設計中,所述根據各所述操作數的數據形狀確定所述目標類別,包括:
14、若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別;或者
15、若各所述操作數之間的數據形狀關系不滿足預設規則,則輸出錯誤提示信息。
16、在一種可能的設計中,所述目標類別包括第一類別,所述預設規則包括第一預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,包括:
17、若各所述操作數之間的數據形狀關系滿足第一預設規則,則確定所述目標類別為所述第一類別。
18、在一種可能的設計中,所述目標類別包括第二類別,所述預設規則還包括第二預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,還包括:
19、若各所述操作數之間的數據形狀關系滿足第二預設規則,則確定所述目標類別為所述第二類別。
20、在一種可能的設計中,所述數據形狀包括至少一個維度;所述方法還包括:
21、分別比較各所述操作數的數據形狀中每一對應維度的維度值;
22、若所述操作數的數據形狀的至少一個維度的維度值均相同,則確定所述操作數的數據形狀關系為滿足第一預設規則;
23、若所述操作數的數據形狀的至少一個維度中存在一個以上的維度值相同,其他維度值之間具有兼容關系,則確定所述操作數的數據形狀滿足第二預設規則。
24、在一種可能的設計中,所述方法還包括:
25、若各所述操作數的數據形狀中任一對應維度的維度值均為常數,則通過比較相應維度的常數確定各所述操作數之間的數據形狀關系;
26、若各所述操作數的數據形狀中任一對應維度的維度值為表達式,則通過比較相應維度的各表達式確定各所述操作數之間的數據形狀關系。
27、在一種可能的設計中,若各所述操作數的數據形狀中任一對應維度的維度值為表達式,所述方法還包括:
28、按照預設的變換規則分別對各表達式進行變形,得到對應的變形后的表達式,所述變形后的表達式具有相同形式的表達;
29、通過比較變形后的各表達式確定各所述操作數之間的數據形狀關系。
30、在一種可能的設計中,所述預設的變換規則,包括以下規則中的一種或多種的組合:
31、對于任一表達式,若表達式中存在括號,則按照數學運算規則去除表達式中的括號;
32、若表達式中存在常數之間的運算,則計算常數之間的運算結果,并替換到表達式中;
33、基于數學運算規則對表達式中的參數調整順序,使得參數按照目標順序排列。
34、在一種可能的設計中,所述根據各所述操作數的表示形式從所述預設指令類別中確定目標類別,還包括:
35、若各所述操作數的表示形式中包括存儲單元地址和常量,則確定所述目標類別為第三類別。
36、第二方面,本申請實施例提供一種指令生成裝置,包括:
37、接口模塊,用于通過預設指令類別的統一接口接收指令參數;其中所述指令參數包括至少兩個操作數以及輸出地址;
38、確定模塊,用于根據所述指令參數確定各所述操作數的表示形式;
39、生成模塊,用于根據各所述操作數的表示形式以及所述指令參數,生成對應的目標指令。
40、第三方面,本申請實施例提供一種指令生成裝置,包括:至少一個處理器及存儲器;
41、所述存儲器存儲計算機執行指令;
42、所述至少一個處理器執行所述存儲器存儲的計算機執行指令,使得所述至少一個處理器執行如第一方面所述的方法。
43、第四方面,本申請實施例提供一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有計算機程序,所述計算機程序被至少一個處理器執行時,實現如第一方面所述的方法。
44、本申請實施例提供的指令生成方法、裝置及存儲介質,通過預設指令類別的統一接口接收指令參數,其中指令參數包括至少兩個操作數以及輸出地址;根據指令參數確定各操作數的表示形式;根據各操作數的表示形式以及指令參數,生成對應的目標指令。本實施例對于預設指令類別面向用戶僅提供統一接口來接收指令參數,由編譯器自動選擇和生成適配于用戶輸入的指令參數的目標硬件指令,用戶無需關注多種硬件指令,也無需為每個硬件指令選擇或編寫對應的api接口程序,為用戶的使用提供了便捷,同時也避免了每一種硬件指令編寫相應的api,避免了程序和文檔的繁瑣。
本文檔來自技高網...【技術保護點】
1.一種指令生成方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述根據各所述操作數的表示形式以及所述指令參數,生成對應的目標指令,包括:
3.根據權利要求2所述的方法,其特征在于,所述根據各所述操作數的表示形式從所述預設指令類別中確定目標類別,包括:
4.根據權利要求3所述的方法,其特征在于,所述根據各所述操作數的數據形狀確定所述目標類別,包括:
5.根據權利要求4所述的方法,其特征在于,所述目標類別包括第一類別,所述預設規則包括第一預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,包括:
6.根據權利要求4或5所述的方法,其特征在于,所述目標類別包括第二類別,所述預設規則還包括第二預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,還包括:
7.根據權利要求4或5所述的方法,其特征在于,所述數據形狀包括至少一個維度;所述方法還包括:
8.根據權利要求4或5所述的方法,其
9.根據權利要求8所述的方法,其特征在于,若各所述操作數的數據形狀中任一對應維度的維度值為表達式,所述方法還包括:
10.根據權利要求9所述的方法,其特征在于,所述預設的變換規則,包括以下規則中的一種或多種的組合:
11.根據權利要求2所述的方法,其特征在于,所述根據各所述操作數的表示形式從所述預設指令類別中確定目標類別,還包括:
12.一種指令生成裝置,其特征在于,包括:
13.一種指令生成裝置,其特征在于,包括:至少一個處理器及存儲器;
14.一種計算機可讀存儲介質,其特征在于,所述計算機可讀存儲介質中存儲有計算機程序,所述計算機程序被至少一個處理器執行時,實現如權利要求1-11任一項所述的方法。
...【技術特征摘要】
1.一種指令生成方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述根據各所述操作數的表示形式以及所述指令參數,生成對應的目標指令,包括:
3.根據權利要求2所述的方法,其特征在于,所述根據各所述操作數的表示形式從所述預設指令類別中確定目標類別,包括:
4.根據權利要求3所述的方法,其特征在于,所述根據各所述操作數的數據形狀確定所述目標類別,包括:
5.根據權利要求4所述的方法,其特征在于,所述目標類別包括第一類別,所述預設規則包括第一預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,包括:
6.根據權利要求4或5所述的方法,其特征在于,所述目標類別包括第二類別,所述預設規則還包括第二預設規則,所述若各所述操作數之間的數據形狀關系滿足預設規則,則確定所述目標類別為所述預設規則對應的類別,還包括:
...
【專利技術屬性】
技術研發人員:請求不公布姓名,
申請(專利權)人:寒武紀西安集成電路有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。