[發明專利]基于x86架構的稠密矩陣乘法匯編代碼自動生成方法有效
| 申請號: | 201210199706.6 | 申請日: | 2012-06-14 |
| 公開(公告)號: | CN102750150A | 公開(公告)日: | 2012-10-24 |
| 發明(設計)人: | 王茜;張先軼;張云泉 | 申請(專利權)人: | 中國科學院軟件研究所 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F17/16 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 余長江 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 x86 架構 稠密 矩陣 乘法 匯編 代碼 自動 生成 方法 | ||
1.一種基于x86架構的稠密矩陣乘法匯編代碼自動生成方法,其步驟為:
1)將稠密矩陣乘法中的源矩陣A、B分別劃分為多個子塊矩陣;其中,矩陣A劃分的子塊矩陣AMc*Kc大小為Mc*Kc,矩陣B劃分的子塊矩陣BKc*Nc大小為Kc*Nc;Mc為矩陣A在行方向上的分塊大小,Nc為矩陣B在列方向上的分塊大小,Kc為矩陣A在列方向上的分塊大小,矩陣A列值與矩陣B行值相等;
2)將每個子塊矩陣AMc*Kc拷貝到連續的地址空間中,將每個子塊矩陣BKc*Nc拷貝至連續的地址空間中;
3)代碼生成工具利用變化函數將輸入的每一AMc*Kc*BKc*Nc子塊矩陣乘法過程翻譯為x86處理器支持的匯編代碼。
2.如權利要求1所述的方法,其特征在于所述子塊矩陣的大小滿足關系式:
2*(Kr*Nc+Mc*Nr)+Mc*Kr<=L1和Mc*Kc<=L2/2,其中,L1代表一級高速緩存容量,L2代表二級高速緩存容量,Nr代表所述稠密矩陣乘法的j-i-k三層循環迭代計算過程中循環j的迭代步長,Mr代表所述稠密矩陣乘法的j-i-k三層循環迭代計算過程中循環i的迭代步長。
3.如權利要求1或2所述的方法,其特征在于代碼生成工具生成所述匯編代碼的方法為:
a)對輸入的AMc*Kc*BKc*Nc子塊矩陣乘法進行循環分塊、展開操作:在每一次迭代k過程中,每次從第一個子塊矩陣AMc*Kc中讀取Mr個元素,從第二個子塊矩陣BKc*Nc中讀取Nr個元素,兩兩相乘后得到Nr*Mr個結果并將其累加到一結果矩陣C中;
b)中間代碼表達式變換操作:將步驟a)的子塊矩陣乘法源程序語言代碼逐句翻譯為四元組中間表達式,表達式形式為(操作符,源操作數1,源操作數2,目的操作數);
c)向量化變換操作:對所生成的四元組中間表達式進行合并、刪除冗余處理,生成向量化的四元組中間表達式;
d)匯編指令映射變換操作:將向量化四元組表達式逐一翻譯為相應匯編代碼。
4.如權利要求3所述的方法,其特征在于設定一循環展開因子Uk,用于控制循環k的展開次數。
5.如權利要求3所述的方法,其特征在于對子塊矩陣乘法計算過程中,將重復出現的數組訪問模式替換為標量訪問模式。
6.如權利要求3所述的方法,其特征在于將步驟a)的子塊矩陣乘法源程序語言代碼逐句翻譯為四元組中間表達式的方法為:代碼生成工具依次讀入源程序語言代碼的每一條語句,判斷當前讀入語句是否為循環結構,如果是循環結構,則將循環控制條件結構翻譯為一組四元組表達式,否則當前讀入的語句為一條表達式語句;進一步判斷當前表達式語句的右操作數是否為算數表達式,若是,則產生一計算四元組表達式,否則產生一賦值四元組表達式。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院軟件研究所,未經中國科學院軟件研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210199706.6/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種中小型角鋼雙線長尺矯直的精整方法
- 下一篇:具有鎖止元件的排料裝置





