[發(fā)明專利]基于循環(huán)段的眾核程序重構方法有效
| 申請?zhí)枺?/td> | 201910910103.4 | 申請日: | 2019-09-25 |
| 公開(公告)號: | CN112559032B | 公開(公告)日: | 2023-06-13 |
| 發(fā)明(設計)人: | 徐金秀;何香;陳鑫;劉鑫;李芳;孫唯哲;郭恒;徐占;趙朋朋 | 申請(專利權)人: | 無錫江南計算技術研究所 |
| 主分類號: | G06F8/72 | 分類號: | G06F8/72;G06F8/41;G06F8/76;G06F9/30;G06F9/448 |
| 代理公司: | 蘇州科旭知識產(chǎn)權代理事務所(普通合伙) 32697 | 代理人: | 王健 |
| 地址: | 214083 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 循環(huán) 程序 方法 | ||
1.一種基于循環(huán)段的眾核程序重構方法,其特征在于:包括基于循環(huán)段拆分的重構方法和基于循環(huán)段合并的重構方法,其中,所述基于循環(huán)段拆分的重構方法包括基于主從協(xié)同任務的循環(huán)段拆分和基于空間壓縮的循環(huán)段拆分,所述基于循環(huán)段合并的重構方法包括基于循環(huán)結構的循環(huán)段合并和基于增加循環(huán)量的循環(huán)段合并;
基于主從協(xié)同任務的循環(huán)段拆分的眾核程序重構方法包括以下步驟:
S11、利用性能分析工具或打印輸出信息,分析程序運行時的多個時間熱點函數(shù),找出各個時間熱點函數(shù)中最耗時循環(huán)段;
S12、對于S11中找出的各個循環(huán)段,若同時滿足條件1:即循環(huán)邊界起始條件為1,終止條件為end和條件2:即循環(huán)段內計算根據(jù)循環(huán)控制變量的不同取值分別調用循環(huán)段內相互獨立的子任務sub_a、sub_b、sub_c,則執(zhí)行S13;若不滿足條件2,則循環(huán)段任務由從核完成,執(zhí)行S15;
S13、對各子任務特性和相關性進行分析,若子任務sub_a、sub_c的計算量小、輸出量大、通信量大,而子任務sub_b計算量大、輸出信息少、通信量少,同時3個子任務不具有相關性,則將循環(huán)段按照各個子任務的循環(huán)邊界取值范圍進行拆分,拆分為3個新的循環(huán)段;若子任務相互之間具有相關性,循環(huán)段不進行拆分,循環(huán)段任務由從核完成,執(zhí)行S15;
S14、針對S13中新拆分的循環(huán)段,含子任務sub_a、sub_c的循環(huán)段直接由主核完成;含子任務sub_b循環(huán)段由從核完成;
S15、針對從核完成任務的循環(huán)段,直接使用編譯指示進行眾核加速并行;
基于空間壓縮的循環(huán)段拆分的眾核程序重構方法包括以下步驟:
S21、利用性能分析工具或打印輸出信息,分析程序運行時的多個時間熱點函數(shù),找出各個時間熱點函數(shù)中最耗時循環(huán)段;
S22、對于S21中找出的各個循環(huán)段,若同時滿足條件1:即循環(huán)邊界起始條件為begin,終止條件為end和條件2:即循環(huán)段內依次調用多個子任務sub_A1(arrA1,arrB1,arrC1)、sub_A2(arrA2,arrB2,arrC2)、sub_A3(arrA3,arrB3,arrC3),則執(zhí)行S23;若不滿足條件2,則循環(huán)段任務由從核完成,執(zhí)行S25;
S23、對循環(huán)段內各個子任務的數(shù)據(jù)變量進行數(shù)據(jù)相關性分析,若子任務數(shù)據(jù)變量相互具有數(shù)據(jù)依賴性,則循環(huán)段任務由從核完成,執(zhí)行S25;若其中某子任務與其它子任務不存在數(shù)據(jù)相關性,且該子任務的數(shù)據(jù)變量規(guī)模大,超過從核的數(shù)據(jù)存儲空間上限,則對循環(huán)段進行拆分,使數(shù)據(jù)變量規(guī)模大的子任務獨立成為新的循環(huán)段;
S24、針對S23中拆分出來的數(shù)據(jù)變量規(guī)模大的新循環(huán)段,分析子任務中的數(shù)據(jù)變量,對子任務及相關的數(shù)據(jù)變量進行拆分,子任務拆分之后形成多個子孫任務,同時將循環(huán)段的循環(huán)條件內移到拆分后的子孫任務,各個子孫任務循環(huán)段和S23中拆分出來的數(shù)據(jù)變量規(guī)模小的循環(huán)段均由從核完成;
S25、針對從核完成任務的循環(huán)段,直接使用編譯指示進行眾核加速并行;
基于循環(huán)結構的循環(huán)段合并的眾核程序重構方法包括以下步驟:
S31、利用性能分析工具或打印輸出信息,分析程序運行時的多個時間熱點函數(shù),找出各個時間熱點函數(shù)中最耗時循環(huán)段;
S32、若某時間熱點函數(shù)中有多個循環(huán)段滿足如下條件:循環(huán)邊界相同,起始條件均為begin,終止條件均為end,則多個循環(huán)段分別調用子任務sub_A3_B1、sub_A3_B2、sub_A3_B3,執(zhí)行S33;若多個循環(huán)段的循環(huán)邊界不相同,多個循環(huán)段均由從核完成,執(zhí)行S34;
S33、分析S32中各個循環(huán)段中的子任務計算變量的數(shù)據(jù)規(guī)模,若其中某些子任務的計算變量數(shù)據(jù)規(guī)模小,低于從核數(shù)據(jù)存儲空間的大小,則合并這些子任務的循環(huán)段為一個新循環(huán)段,執(zhí)行S34;
S34、針對從核完成任務的循環(huán)段,直接使用編譯指示進行眾核加速并行;
基于增加循環(huán)量的循環(huán)段合并的眾核程序重構方法包括以下步驟:
S41、利用性能分析工具或打印輸出信息,分析程序運行時的多個時間熱點函數(shù),找出各個時間熱點函數(shù)中最耗時循環(huán)段;
S42、針對各個時間熱點函數(shù)中的最耗時循環(huán)段,逐一進行分析,首先考慮某個循環(huán)段的第一重循環(huán),若第一重循環(huán)的循環(huán)量遠小于從核數(shù)量,執(zhí)行S43;若第一重循環(huán)的循環(huán)量遠大于從核數(shù)量,循環(huán)段由從核完成,執(zhí)行S47;
S43、當?shù)谝恢匮h(huán)的循環(huán)量較小,且循環(huán)段內存在多個多重循環(huán),則進一步分析第二重循環(huán);若其中某些第二重循環(huán)的循環(huán)邊界相同,進行增加循環(huán)量的程序重構,執(zhí)行S44;若其中某些第二重循環(huán)的循環(huán)邊界不相同,執(zhí)行S46;若循環(huán)段內不存在多重循環(huán),循環(huán)段由從核完成,執(zhí)行S47;
S44、將所有第二重循環(huán)邊界相同的子任務從原始循環(huán)段拆分出來,然后將拆分出來的子任務進行合并,形成一個新的二重循環(huán)段,執(zhí)行S45;
S45、將新的二重循環(huán)段合并為一個新的一重循環(huán)段,其中,新的一重循環(huán)段的循環(huán)下界值為新的二重循環(huán)段中下限值的最小值;新的一重循環(huán)段的循環(huán)上限值為新的二重循環(huán)段中第一重循環(huán)的循環(huán)上限值和第二重循環(huán)的循環(huán)上限值的乘積;新的一重循環(huán)段任務由從核完成,執(zhí)行S47;
S46、將第二重循環(huán)邊界不相同的子任務從原始循環(huán)段拆分出來,形成新的二重循環(huán)段,執(zhí)行S45;
S47、針對從核完成任務的循環(huán)段,直接使用編譯指示進行眾核加速并行,該時間熱點函數(shù)任務結束。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于無錫江南計算技術研究所,未經(jīng)無錫江南計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910910103.4/1.html,轉載請聲明來源鉆瓜專利網(wǎng)。





