[發(fā)明專利]一種基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法在審
| 申請(qǐng)?zhí)枺?/td> | 202110062369.5 | 申請(qǐng)日: | 2021-01-18 |
| 公開(公告)號(hào): | CN112783503A | 公開(公告)日: | 2021-05-11 |
| 發(fā)明(設(shè)計(jì))人: | 張文毅;梁嘉迪;杜云飛;盧宇彤 | 申請(qǐng)(專利權(quán))人: | 中山大學(xué) |
| 主分類號(hào): | G06F8/41 | 分類號(hào): | G06F8/41 |
| 代理公司: | 廣州粵高專利商標(biāo)代理有限公司 44102 | 代理人: | 張金福 |
| 地址: | 510260 廣東*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 arm 架構(gòu) numpy 運(yùn)算 加速 優(yōu)化 方法 | ||
1.一種基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,包括以下步驟:
S1:配置Arm架構(gòu)環(huán)境,獲取NumPy源代碼;
S2:對(duì)NumPy源代碼中待優(yōu)化函數(shù)進(jìn)行類型判斷:若待優(yōu)化函數(shù)為數(shù)值計(jì)算類函數(shù),則執(zhí)行S3步驟;若待優(yōu)化函數(shù)為非數(shù)值計(jì)算類函數(shù),則跳轉(zhuǎn)執(zhí)行S4步驟;
S3:對(duì)待優(yōu)化函數(shù)進(jìn)行循環(huán)體優(yōu)化;
S4:對(duì)待優(yōu)化函數(shù)進(jìn)行多線程處理;
S5:將完成函數(shù)優(yōu)化的NumPy源代碼進(jìn)行編譯優(yōu)化。
2.根據(jù)權(quán)利要求1所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,所述數(shù)值計(jì)算類函數(shù)包括線性代數(shù)函數(shù)、超越函數(shù)、算術(shù)函數(shù)、統(tǒng)計(jì)函數(shù);所述非數(shù)值計(jì)算類函數(shù)包括數(shù)組創(chuàng)建函數(shù)、數(shù)組形狀處理函數(shù)、字符串函數(shù)、位運(yùn)算函數(shù)、條件篩選函數(shù)。
3.根據(jù)權(quán)利要求1所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,所述S3步驟中,對(duì)待優(yōu)化函數(shù)進(jìn)行循環(huán)體優(yōu)化的具體步驟包括對(duì)循環(huán)體內(nèi)部語句的SIMD改寫優(yōu)化,以及對(duì)循環(huán)體本身進(jìn)行優(yōu)化。
4.根據(jù)權(quán)利要求3所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,在對(duì)循環(huán)體本身進(jìn)行優(yōu)化時(shí),根據(jù)循環(huán)體的特性對(duì)循環(huán)體本身進(jìn)行拆分、合并和展開操作;其中:
對(duì)時(shí)間復(fù)雜度大于或等于O(N2)的循環(huán)體進(jìn)行拆分操作,將循環(huán)體拆分為若干小循環(huán);
對(duì)時(shí)間復(fù)雜度小于O(N2)的循環(huán)體進(jìn)行進(jìn)行合并操作,將待優(yōu)化函數(shù)上下流中的若干循環(huán)體合并至一個(gè)循環(huán)體;
對(duì)循環(huán)之間存在循環(huán)依賴或訪問沖突的循環(huán)體采用循環(huán)展開操作。
5.根據(jù)權(quán)利要求4所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,對(duì)于時(shí)間復(fù)雜度大于或等于O(N2)的循環(huán)體,將循環(huán)體中內(nèi)層的循環(huán)語句作為單獨(dú)的整體,得到其對(duì)應(yīng)的計(jì)算結(jié)果,然后將所述計(jì)算結(jié)果作為原循環(huán)體外層循環(huán)的輸入,并另起一個(gè)新的循環(huán)在原程序的后方,實(shí)現(xiàn)循環(huán)體的拆分操作;
對(duì)于時(shí)間復(fù)雜度小于O(N2)的循環(huán)體,將有依賴關(guān)系的變量所在的循環(huán)進(jìn)行合并,位于原程序前方的循環(huán)體作為合并后的循環(huán)體的內(nèi)循環(huán),位于原程序后方的循環(huán)體作為合并后的循環(huán)體的外循環(huán),實(shí)現(xiàn)循環(huán)體的合并操作。
6.根據(jù)權(quán)利要求4所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,對(duì)于循環(huán)之間存在循環(huán)依賴或訪問沖突的循環(huán)體,采用手工循環(huán)展開操作;其具體步驟如下:將待處理循環(huán)體的循環(huán)內(nèi)容進(jìn)行手動(dòng)改寫,在一次循環(huán)體內(nèi)完成大于或等于兩次的操作。
7.根據(jù)權(quán)利要求1所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,所述S4步驟中,對(duì)待優(yōu)化函數(shù)進(jìn)行多線程處理的具體步驟包括使用OpenMP進(jìn)行多線程改寫、合理化并行執(zhí)行的任務(wù)大小、避免不必要的共享寫入。
8.根據(jù)權(quán)利要求7所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,所述Arm架構(gòu)中的一個(gè)計(jì)算節(jié)點(diǎn)包括128個(gè)核心;在所述S4步驟中,對(duì)待優(yōu)化函數(shù)使用OpenMP進(jìn)行多線程改寫時(shí),在需要多線程處理的語句前添加調(diào)用指令,使其能將所控制的語句分發(fā)到各核心上實(shí)行;
對(duì)待優(yōu)化函數(shù)進(jìn)行合理化并行執(zhí)行的任務(wù)大小時(shí),對(duì)計(jì)算節(jié)點(diǎn)的任務(wù)大小進(jìn)行線性化劃分,然后對(duì)劃分的任務(wù)進(jìn)行實(shí)測(cè),選取出合理的任務(wù)細(xì)粒度劃分下的運(yùn)行時(shí)間最短的任務(wù)大小作為核心的最小任務(wù)大小;
對(duì)待優(yōu)化函數(shù)進(jìn)行避免不必要的共享寫入時(shí),通過OpenMP代碼中使用reduction子句替代直接寫入共享變量,在循環(huán)過程中寫入線程私有變量。
9.根據(jù)權(quán)利要求1所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,所述S5步驟中,對(duì)完成函數(shù)優(yōu)化的NumPy源代碼進(jìn)行編譯優(yōu)化的具體步驟包括自動(dòng)向量化處理、選擇編譯優(yōu)化選項(xiàng)。
10.根據(jù)權(quán)利要求9所述的基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法,其特征在于,對(duì)完成函數(shù)優(yōu)化的NumPy源代碼進(jìn)行自動(dòng)向量化處理時(shí),設(shè)定Arm架構(gòu)中的編譯器自動(dòng)采用NeonIntrinsics對(duì)程序的編譯過程進(jìn)行優(yōu)化;
對(duì)完成函數(shù)優(yōu)化的NumPy源代碼進(jìn)行選擇編譯優(yōu)化選項(xiàng)處理時(shí),對(duì)Arm架構(gòu)中的編譯器設(shè)置O2優(yōu)化選項(xiàng),執(zhí)行不包含時(shí)間和空間這種的優(yōu)化,且不進(jìn)行循環(huán)打開和函數(shù)內(nèi)聯(lián)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中山大學(xué),未經(jīng)中山大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110062369.5/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 上一篇:紡織輥單列十字路徑移位機(jī)架
- 下一篇:導(dǎo)航方法和裝置
- 一種基于numpy的高精度C語言算法驗(yàn)證方法
- 一種基于python進(jìn)行循環(huán)機(jī)芯測(cè)試數(shù)據(jù)處理的方法
- 診斷報(bào)告符合度檢測(cè)方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 基于深度學(xué)習(xí)的靶標(biāo)預(yù)測(cè)系統(tǒng)及其方法
- 一種基于Arm架構(gòu)的NumPy運(yùn)算加速優(yōu)化方法
- 一種利用MPI的NumPy優(yōu)化方法及系統(tǒng)
- 一種基于注意力機(jī)制的EfficientNet敏感圖像檢測(cè)方法及系統(tǒng)
- 一種利用非統(tǒng)一存儲(chǔ)器訪問架構(gòu)特點(diǎn)提升并行化NumPy計(jì)算性能的方法
- 一種基于卷積神經(jīng)網(wǎng)絡(luò)的Android勒索軟件檢測(cè)方法
- 一種基于圖像增強(qiáng)技術(shù)的疲勞駕駛檢測(cè)方法





