[發明專利]一種基于小內存處理大規模數據的并行程序開發方法在審
| 申請號: | 201510013613.3 | 申請日: | 2015-01-12 |
| 公開(公告)號: | CN104572106A | 公開(公告)日: | 2015-04-29 |
| 發明(設計)人: | 高永虎;張清;張廣勇;沈鉑 | 申請(專利權)人: | 浪潮電子信息產業股份有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F9/38 |
| 代理公司: | 濟南信達專利事務所有限公司 37100 | 代理人: | 姜明 |
| 地址: | 250101 山東*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 內存 處理 大規模 數據 并行 程序 開發 方法 | ||
技術領域
本發明涉及高性能計算領域,具體地說是一種實用性強、基于小內存處理大規模數據的并行程序開發方法。
背景技術
當前社會人類的數據大爆炸,信息數據越來越多,人們對信息數據的處理能力的要求也越來越高,不僅石油勘探、氣象預報、航天國防、科學研究等需求高性能計算,金融、政府信息化、教育、企業、網絡游戲等更廣泛的領域對高性能計算的需求迅猛增長。
計算速度對于高性能計算尤為重要,高性能計算朝多核、眾核發展。但是由于一些應用運算數據規模一直比較大,受限于網絡帶寬,系統內存等原因,系統無法處理數據量遠遠超過系統內存的承受,導致計算核心無法充分的利用。對于內存不足的系統,將數據量一次性全部導入內存再處理的方式已經無法滿足當前的需求,需要進一步設計一種根據現有有限的硬件設備下能夠在單機中處理大規模數據,并且不會降低計算效率、能夠充分利用計算核心的方法。
基于此,本發明提供一種基于小內存處理大數據開發方法,對一些無法在小內存的設備條件下運行的程序或不能充分利用計算核心的系統修改,能夠處理較大規模的數據,并使系統的計算設備達到計算的負載均衡且滿負載的運行,從而最大限度的利用現有設備的性能,提高系統的整體運行的效率,大大縮短程序的運行時間。
發明內容
本發明的技術任務是針對以上不足之處,提供一種實用性強、基于小內存處理大規模數據的并行程序開發方法。
一種基于小內存處理大規模數據的并行程序開發方法,其具體實現過程為:
在內存和外存開辟數據空間,并劃分成若干數據塊,將任務數據讀入到劃分的外存數據塊中,計算與I/O線程操作不同的內存數據塊與外存數據塊交互,使得計算該數據塊所需時間與I/O的時間相等;
設置讀線程、計算線程、寫線程,主線程根據CPU的計算核心數量啟動計算線程和I/O線程,主線程初始化隊列和各個緩存區,然后啟動上述各個線程;
當需要計算劃分到外存中的數據塊時,讀線程從內存中獲取空的數據塊緩沖區,然后將外存數據塊中的數據讀入到內存中;
計算線程從內存中獲取已經讀入的數據塊,再從內存中獲取一個空的數據塊緩存區,計算結果存入到空的數據塊緩沖區中,將源數據的數據塊緩存區清空;
寫線程獲取計算線程計算完成后目的數據塊緩存區中數據,將此數據寫到外存中的緩沖區中,輸出完畢后將目的數據塊緩存區清空。
所述讀線程、計算線程、寫線程異步并行,需要源緩沖SR_BUF和目標緩沖DR_BUF,DR-BUF、SR_BUF均為由主線程開辟的內存緩沖空間;BUF是一個連續的存儲空間,被分割成多份,每份稱為一個緩沖塊BUF_BLOCK,緩沖塊對應一個基本數據塊的作業單位;讀線程與計算線程共同操作SR_BUF緩沖,計算線程與寫線程共同操作DR_BUF緩沖。
每個緩沖或隊列可容納至少兩個緩沖對象。
還包括環形隊列,該環形隊列存儲緩沖區的ID,各線程從隊列中獲取要操作的緩沖區對應的ID,上述環形隊列包括下述四個隊列:
SR_BUF_FULL_QUEUE:新的計算任務隊列,存放新讀入的等待計算的源數據塊的ID號SR_BUF_ID、數據塊的大小信息,由讀線程寫入,計算線程彈出,當讀線程向SR_BUF_ID對應的緩存區中讀入新的數據時,將SR_BUF_ID入隊,計算線程彈出SR_BUF_ID時,計算SR_BUF_ID對應的源數據;
SR_BUF_FREE_QUEUE:空閑源緩沖隊列,存放當前空閑SR_BUF_ID號,由計算線程寫入,讀線程彈出,當SR_BUF_ID對應的源數據計算完畢時,釋放SR_BUF_ID,告知讀線程可對其更新數據;
DR_BUF_FREE_QUEUE:空閑目標緩沖隊列,存放當前空閑數據塊的ID號DR_BUF_ID,記錄DR_BUF_ID號,由寫線程寫入,計算線程彈出;當寫線程對DR_BUF_ID對應的緩存區數據輸出完畢時,將DR_BUF_ID入隊,告知計算線程,該DR_BUF_ID輸出完畢可重新用于計算,計算線程彈出DR_BUF_ID時,啟動計算,并將結果寫入DR_BUF_ID對應的目標緩沖區中;
DR_BUF_FULL_QUEUE:新的寫任務隊列,存放計算完畢等待寫回的目標數據塊的ID號DR_BUF_ID,由計算線程寫入,寫線程彈出;當計算線程向DR_BUF_ID所對應的緩沖區中讀入新數據時,將DR_BUF_ID入隊,寫線程彈出DR_BUF_ID時,對DR_BUF_ID對應的目標數據進行輸出。
基于上述隊列,該并行程序開發的具體過程為:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浪潮電子信息產業股份有限公司,未經浪潮電子信息產業股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201510013613.3/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種業務表單配置的方法和裝置
- 下一篇:一種移動終端頁面圖表的更新方法和裝置





