[發(fā)明專利]一種針對(duì)隨機(jī)循環(huán)負(fù)載均衡的OpenMP靜態(tài)調(diào)度方法在審
| 申請(qǐng)?zhí)枺?/td> | 202210968158.2 | 申請(qǐng)日: | 2022-08-12 |
| 公開(公告)號(hào): | CN115344367A | 公開(公告)日: | 2022-11-15 |
| 發(fā)明(設(shè)計(jì))人: | 魏貴義;周詠清;張繼發(fā) | 申請(qǐng)(專利權(quán))人: | 浙江工商大學(xué) |
| 主分類號(hào): | G06F9/48 | 分類號(hào): | G06F9/48;G06F9/50;G06F8/41;G06F8/30 |
| 代理公司: | 杭州奧創(chuàng)知識(shí)產(chǎn)權(quán)代理有限公司 33272 | 代理人: | 王佳健 |
| 地址: | 310018 浙江*** | 國(guó)省代碼: | 浙江;33 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 針對(duì) 隨機(jī) 循環(huán) 負(fù)載 均衡 openmp 靜態(tài) 調(diào)度 方法 | ||
1.一種針對(duì)隨機(jī)循環(huán)負(fù)載均衡的OpenMP靜態(tài)調(diào)度方法,其特征在于主要包含以下步驟
步驟1,在linux環(huán)境下進(jìn)行OMPi編譯器的配置;
步驟2,使用代碼隔離的方法,將計(jì)算程序中的隨機(jī)循環(huán)部分隔離出來,并在關(guān)鍵變量的前面添加volatile關(guān)鍵字;
步驟3,用迭代編譯的思想,在隨機(jī)循環(huán)的內(nèi)部插入節(jié)拍數(shù)計(jì)時(shí)函數(shù),獲取每一個(gè)循環(huán)迭代內(nèi)的執(zhí)行時(shí)間,并用執(zhí)行時(shí)間來表征隨機(jī)循環(huán)所含有的負(fù)載;
在隨機(jī)循環(huán)預(yù)運(yùn)行記錄負(fù)載信息時(shí),采用靜態(tài)調(diào)度的方式多線程運(yùn)行,自動(dòng)獲取目標(biāo)平臺(tái)的核心數(shù)目,并以最大核心數(shù)作為靜態(tài)調(diào)度的線程數(shù),循環(huán)執(zhí)行完畢后輸出時(shí)間信息,即負(fù)載信息;
步驟4,根據(jù)獲取的負(fù)載信息和實(shí)際運(yùn)行的線程數(shù)目計(jì)算平均負(fù)載,即avg_load=load/p,將循環(huán)迭代塊劃分成p個(gè)塊,每一個(gè)塊所含有的負(fù)載均等于平均負(fù)載avg_load;
求得隨機(jī)循環(huán)中每一次迭代的負(fù)載time(i)、總負(fù)載load以及平均負(fù)載avg_load;
步驟5,根據(jù)步驟4得到的每一次迭代的負(fù)載time(i)、總負(fù)載load以及平均負(fù)載avg_load,計(jì)算每一個(gè)線程分配到迭代塊的開始索引start(i)以及結(jié)束索引end(i);
步驟6,根據(jù)步驟5得到的start(i)和end(i),將迭代塊的開始迭代索引和結(jié)束迭代索引分別存放在指針*fiter和*liter中;
步驟7,更改OMPi編譯器中關(guān)于OpenMP調(diào)度的代碼,實(shí)現(xiàn)調(diào)度策略;
步驟8,經(jīng)過編譯器的編譯,原有的串行程序?qū)⒈痪幾g成基于pthreads線程庫的多線程程序,程序中并行的隨機(jī)循環(huán)在OpenMP中被定義成并行區(qū);
在并行區(qū)中,循環(huán)迭代根據(jù)調(diào)度策略被劃分成若干份,然后分配給并行區(qū)中的所有線程;
當(dāng)線程執(zhí)行到并行區(qū)的末尾時(shí),線程停止執(zhí)行并等待所有線程執(zhí)行完畢,然后進(jìn)行數(shù)據(jù)的同步操作。
2.根據(jù)權(quán)利要求1所述的一種針對(duì)隨機(jī)循環(huán)負(fù)載均衡的OpenMP靜態(tài)調(diào)度方法,其特征在于:在步驟2中,程序中的其它部分代碼在迭代編譯時(shí)不執(zhí)行,將程序簡(jiǎn)化成只含有隨機(jī)循環(huán)的輕量程序,在隨機(jī)循環(huán)執(zhí)行上只提供應(yīng)有的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的一種針對(duì)隨機(jī)循環(huán)負(fù)載均衡的OpenMP靜態(tài)調(diào)度方法,其特征在于:在步驟3中,還包括使用OpenMP函數(shù)omp_get_max_threads()獲取目標(biāo)平臺(tái)核心數(shù),并在隨機(jī)循環(huán)的上面添加OpenMP編譯指導(dǎo)語句“#pragma omp parallel for num_threads(H)”,其中H是獲取到的目標(biāo)平臺(tái)核心數(shù)。
4.根據(jù)權(quán)利要求1所述的一種針對(duì)隨機(jī)循環(huán)負(fù)載均衡的OpenMP靜態(tài)調(diào)度方法,其特征在于:在步驟7中所述更改OMPi編譯器中關(guān)于OpenMP調(diào)度的代碼,具體如下:
將編寫的帶有OpenMP指導(dǎo)語句的C代碼foo.c,經(jīng)過預(yù)處理器轉(zhuǎn)換成中間語言的形式foo.pc;
中間語言形式的代碼將被OMPi編譯器進(jìn)一步處理,主要是調(diào)用OMPi編譯器轉(zhuǎn)換函數(shù),將其中帶有OpenMP指導(dǎo)語句的隨機(jī)循環(huán)轉(zhuǎn)換成基于pthreads等線程庫的C代碼foo_ompi.c;
繼續(xù)調(diào)用用戶指定的C編譯器,基于運(yùn)行時(shí)庫將其編譯成可執(zhí)行代碼。
該專利技術(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/202210968158.2/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 隨機(jī)數(shù)生成設(shè)備及控制方法、存儲(chǔ)器存取控制設(shè)備及通信設(shè)備
- 隨機(jī)接入方法、用戶設(shè)備、基站及系統(tǒng)
- 真隨機(jī)數(shù)檢測(cè)裝置及方法
- 隨機(jī)元素生成方法及隨機(jī)元素生成裝置
- 數(shù)據(jù)交互方法、裝置、服務(wù)器和電子設(shè)備
- 一種隨機(jī)數(shù)發(fā)生器的多隨機(jī)源管理方法
- 用于彩票行業(yè)的隨機(jī)數(shù)獲取方法及系統(tǒng)
- 隨機(jī)接入方法、裝置及存儲(chǔ)介質(zhì)
- 偽隨機(jī)方法、系統(tǒng)、移動(dòng)終端及存儲(chǔ)介質(zhì)
- 模型訓(xùn)練方法、裝置和計(jì)算設(shè)備
- 負(fù)載和負(fù)載方向檢測(cè)裝置
- 一種智能節(jié)能插座
- 負(fù)載電路及具有該負(fù)載電路的負(fù)載測(cè)試裝置
- 負(fù)載保護(hù)電路及負(fù)載保護(hù)方法
- 負(fù)載容器和負(fù)載支架系統(tǒng)
- 負(fù)載檢測(cè)電路及其負(fù)載檢測(cè)裝置
- 負(fù)載檢測(cè)器、負(fù)載檢測(cè)用套件、以及負(fù)載檢測(cè)系統(tǒng)
- 負(fù)載
- 負(fù)載測(cè)量方法、負(fù)載測(cè)量裝置和負(fù)載測(cè)量配置
- 負(fù)載驅(qū)動(dòng)電路、負(fù)載驅(qū)動(dòng)系統(tǒng)





