基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于高性能遙感數(shù)據(jù)處理領(lǐng)域,更具體設(shè)及一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析 處理方法及系統(tǒng)。
【背景技術(shù)】
[0002] 在使用高性能集群進(jìn)行批量數(shù)據(jù)計(jì)算的過(guò)程中,頻繁地發(fā)生數(shù)據(jù)輸入和輸出的操 作,由于計(jì)算量過(guò)大,從而導(dǎo)致多個(gè)計(jì)算節(jié)點(diǎn)同時(shí)訪問(wèn)存儲(chǔ)器,因此會(huì)造成存儲(chǔ)堵塞,不能 達(dá)到理想的程序運(yùn)行效率?,F(xiàn)有技術(shù)中所設(shè)及的生產(chǎn)程序一般為串行程序,基本都經(jīng)過(guò)輸 入、計(jì)算和輸出=個(gè)過(guò)程,可將運(yùn)=個(gè)過(guò)程W如下=個(gè)模塊進(jìn)行理解:
[0003]輸入模塊,在運(yùn)行輸入模塊時(shí),將所有計(jì)算所需要的數(shù)據(jù)輸入,暫時(shí)存儲(chǔ)于內(nèi)存 中,但會(huì)占用大量空間;
[0004]計(jì)算模塊,在輸入模塊運(yùn)行結(jié)束后,計(jì)算模塊將會(huì)進(jìn)行運(yùn)行狀態(tài),根據(jù)產(chǎn)品生產(chǎn)算 法的實(shí)現(xiàn)的代碼,利用輸入數(shù)據(jù)進(jìn)行計(jì)算,并將計(jì)算結(jié)果暫時(shí)保存于內(nèi)存中;
[0005] 輸出模塊,在計(jì)算模塊結(jié)束后,將在于內(nèi)存的計(jì)算依次輸出到本地磁盤(pán),結(jié)束程序 的全部運(yùn)行,如圖1所示。由于=個(gè)模塊是串行運(yùn)行的,通過(guò)對(duì)=個(gè)模塊的單獨(dú)運(yùn)行時(shí)間總 和可W計(jì)算出總的運(yùn)行時(shí)間。可W看出現(xiàn)有技術(shù)中要等上一個(gè)模塊運(yùn)行完畢才能啟動(dòng)下一 個(gè)模塊,因此產(chǎn)生了許多不必要的等待時(shí)間,降低了程序運(yùn)行的效率,并且數(shù)據(jù)在批量輸入 和輸出時(shí)造容易造成存儲(chǔ)堵塞,因此需要一種方案能夠提高程序運(yùn)行效率,減少不必要的 等待數(shù)據(jù)讀入時(shí)間,減小數(shù)據(jù)在批量輸入和輸出時(shí)造存儲(chǔ)堵塞的可能性,改善當(dāng)前高性能 集群的利用率,更靈活地配置各級(jí)數(shù)據(jù)存儲(chǔ)與讀取關(guān)系。
【發(fā)明內(nèi)容】
[0006](一)要解決的技術(shù)問(wèn)題
[0007] 本發(fā)明要解決的技術(shù)問(wèn)題是如何在進(jìn)行批量數(shù)據(jù)計(jì)算時(shí),有效減少不必要的等待 時(shí)間,提高程序運(yùn)行效率,并且避免數(shù)據(jù)在批量輸入和輸出時(shí)造存儲(chǔ)堵塞。
[000引(二)技術(shù)方案
[0009] 為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法, 所述方法包括:
[0010]S1、讀入部分待輸入數(shù)據(jù);
[0011]S2、利用相應(yīng)的計(jì)算方法根據(jù)所述步驟S1中讀入的所述待輸入數(shù)據(jù)進(jìn)行計(jì)算,得 到對(duì)應(yīng)的計(jì)算結(jié)果,并且將所述計(jì)算結(jié)果進(jìn)行輸出;
[0012] 第一次執(zhí)行完所述步驟S1之后,所述步驟S1和S2同時(shí)執(zhí)行,直到所述待輸入數(shù) 據(jù)全部讀入所述步驟S1停止執(zhí)行;直到所有所述計(jì)算結(jié)果全部輸出后所述步驟S2停止執(zhí) 行。
[0013] 優(yōu)選地,所述方法設(shè)置了標(biāo)識(shí)所述待輸入數(shù)據(jù)全部輸入的第一標(biāo)志位、標(biāo)識(shí)利用 對(duì)應(yīng)的計(jì)算方法計(jì)算完所有的所述待輸入數(shù)據(jù)的第二標(biāo)志位W及標(biāo)識(shí)所述計(jì)算結(jié)果全部 輸出的第立標(biāo)志位。
[0014] 優(yōu)選地,所述步驟S1在讀入所述待輸入數(shù)據(jù)之前還包括W下步驟:
[0015] 根據(jù)所述第一標(biāo)志位,判斷是否已經(jīng)讀入了全部的所述待輸入數(shù)據(jù),若是,則不再 執(zhí)行所述步驟S1,否則執(zhí)行所述步驟S1。
[0016] 優(yōu)選地,所述步驟S2包括W下步驟:
[0017]S21、判斷是否有所述待輸入數(shù)據(jù)讀入,若有執(zhí)行步驟S22,否則執(zhí)行所述步驟S1;
[0018]S22、利用相應(yīng)的計(jì)算方法根據(jù)所述步驟21中讀入的所述待輸入數(shù)據(jù)進(jìn)行計(jì)算;
[0019]S23、判斷是否得到了對(duì)應(yīng)的所述計(jì)算結(jié)果,若是則進(jìn)行步驟S24,否則等待所述步 驟S22執(zhí)行,直到得到對(duì)應(yīng)的所述計(jì)算結(jié)果;
[0020] S24、將所述計(jì)算結(jié)果進(jìn)行輸出。
[0021] 優(yōu)選地,所述步驟S21執(zhí)行之前還包括W下步驟:
[0022] 根據(jù)所述第二標(biāo)志位,判斷是否已經(jīng)利用對(duì)應(yīng)的計(jì)算方法計(jì)算完所有的所述待輸 入數(shù)據(jù),若是則不再執(zhí)行所述步驟S21,否則執(zhí)行所述步驟S21。
[0023] 優(yōu)選地,所述步驟S23執(zhí)行之前還包括W下步驟:
[0024] 根據(jù)所述第S標(biāo)志位,判斷是否已經(jīng)輸出了所有的所述計(jì)算結(jié)果,若是則不再執(zhí) 行所述步驟S23,否則執(zhí)行所述步驟S23。
[00巧]本發(fā)明還公開(kāi)了一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)輸入 模塊、數(shù)據(jù)計(jì)算模塊W及數(shù)據(jù)輸出模塊;
[0026]所述數(shù)據(jù)輸入模塊與所述數(shù)據(jù)計(jì)算模塊連接,用于讀入部分待輸入數(shù)據(jù)并傳遞給 所述數(shù)據(jù)計(jì)算模塊;
[0027]所述數(shù)據(jù)計(jì)算模塊與所述數(shù)據(jù)輸出模塊連接,利用相應(yīng)的計(jì)算方法根據(jù)所述數(shù)據(jù) 輸入模塊傳遞的所述待輸入數(shù)據(jù)進(jìn)行計(jì)算得到相應(yīng)的計(jì)算結(jié)果并傳遞給所述數(shù)據(jù)輸出模 塊,并由所述數(shù)據(jù)輸出模塊進(jìn)行輸出;
[0028] 其中,所述數(shù)據(jù)輸入模塊讀入所述部分待輸入數(shù)據(jù)后,所述數(shù)據(jù)輸入模塊、所述數(shù) 據(jù)計(jì)算模塊W及所述數(shù)據(jù)輸出模塊同時(shí)工作,直到所述待輸入數(shù)據(jù)全部讀入所述數(shù)據(jù)輸入 模塊,所述數(shù)據(jù)輸入模塊停止工作;直到所有所述計(jì)算結(jié)果全部輸出,所述數(shù)據(jù)輸出模塊停 止工作。
[0029] 優(yōu)選地,所述系統(tǒng)還包括標(biāo)志位設(shè)置模塊,其設(shè)置了標(biāo)識(shí)所述待輸入數(shù)據(jù)全部輸 入的第一標(biāo)志位、標(biāo)識(shí)利用對(duì)應(yīng)的計(jì)算方法計(jì)算完所有的所述待輸入數(shù)據(jù)的第二標(biāo)志位W 及標(biāo)識(shí)所述計(jì)算結(jié)果全部輸出的第=標(biāo)志位。
[0030]優(yōu)選地,所述數(shù)據(jù)輸入模塊包括輸入判斷子模塊,所述輸入判斷子模塊在所述數(shù) 據(jù)輸入模塊讀入部分待輸入數(shù)據(jù)之前,根據(jù)所述第一標(biāo)志位,判斷是否已經(jīng)讀入了全部的 所述待輸入數(shù)據(jù),若是則所述數(shù)據(jù)輸入模塊不再工作,否則由所述數(shù)據(jù)輸入模塊讀入所述 待輸入數(shù)據(jù)。
[0031]優(yōu)選地,所述數(shù)據(jù)計(jì)算模塊包括計(jì)算前判斷子模塊,所述計(jì)算前判斷子模塊在所 述數(shù)據(jù)計(jì)算模塊利用相應(yīng)的計(jì)算方法根據(jù)所述數(shù)據(jù)輸入模塊傳遞的所述待輸入數(shù)據(jù)進(jìn)行 計(jì)算之前,判斷是否有所述待輸入數(shù)據(jù)讀入,若有則所述數(shù)據(jù)計(jì)算模塊利用相應(yīng)的計(jì)算方 法根據(jù)讀入的所述待輸入數(shù)據(jù)進(jìn)行計(jì)算,得到對(duì)應(yīng)的所述計(jì)算結(jié)果。
[003引(S)有益效果
[0033] 本發(fā)明提供了一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法及系統(tǒng),本發(fā)明中首先讀入 一部分待輸入數(shù)據(jù);然后根據(jù)輸入的數(shù)據(jù)先行進(jìn)行計(jì)算,同時(shí)讀入剩余的一部分貨全部的 待輸入數(shù)據(jù),繼續(xù)進(jìn)行計(jì)算;同時(shí),當(dāng)有計(jì)算結(jié)果可W進(jìn)行輸出的時(shí)候,就先行將此部分結(jié) 果輸出,運(yùn)種處理方式通過(guò)多線程編程,將=個(gè)模塊進(jìn)行并行運(yùn)算,W在最短的時(shí)間內(nèi)完成 程序的運(yùn)行,達(dá)到內(nèi)存的動(dòng)態(tài)高效的使用;運(yùn)種預(yù)讀緩寫(xiě)機(jī)制的引入最大可W提高75%的 程序運(yùn)行效率,并且避免了數(shù)據(jù)在批量輸入和輸出時(shí)造存儲(chǔ)堵塞。
【附圖說(shuō)明】
[0034]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可W 根據(jù)運(yùn)些附圖獲得其他的附圖。
[0035] 圖1為現(xiàn)有技術(shù)中程序串行運(yùn)行流程圖;
[0036]圖2為本發(fā)明的一個(gè)較佳實(shí)施例的一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法的流 程圖;
[0037]圖3為本發(fā)明的另一個(gè)較佳實(shí)施例的一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法的 流程圖;
[0038] 圖4為利用本發(fā)明的方法的程序運(yùn)行效率與利用傳統(tǒng)方法的程序運(yùn)行效率的對(duì) 比圖。
【具體實(shí)施方式】
[0039] 下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。W下實(shí)施例用于說(shuō)明本發(fā) 明,但不能用來(lái)限制本發(fā)明的范圍。
[0040] 本發(fā)明公開(kāi)了一種基于預(yù)讀緩寫(xiě)的數(shù)據(jù)分析處理方法,所述方法包括:
[0041]S1、讀入部分待輸入數(shù)據(jù);
[0042]S2、利用相應(yīng)的計(jì)算方法根據(jù)所述步驟S1中讀入的所述待輸入數(shù)據(jù)進(jìn)行計(jì)算,得 到對(duì)應(yīng)的計(jì)算結(jié)果,并且將所述計(jì)算結(jié)果進(jìn)行輸出;
[0043] 第一次執(zhí)行完所述步驟S1之后,所述步驟S1和S2同時(shí)執(zhí)行,直到所述待輸入數(shù) 據(jù)全部讀入所述步驟S1停止執(zhí)行;直到所有所述計(jì)算結(jié)果全部輸出后所述步驟S2停止執(zhí) 行。
[0044] 上述方法體現(xiàn)了一種預(yù)讀緩寫(xiě)機(jī)制:首先,讀入一部分?jǐn)?shù)據(jù);然后根據(jù)現(xiàn)有的數(shù) 據(jù)先行進(jìn)行計(jì)算得到部分結(jié)果,同時(shí)讀入其他的輸入數(shù)據(jù),支持計(jì)算過(guò)程的繼續(xù)運(yùn)行;同 時(shí),當(dāng)有計(jì)算結(jié)果可W進(jìn)行輸出的時(shí)候,就先行將此部分結(jié)果輸出到本地磁盤(pán)中,此機(jī)制或 方法的讀緩寫(xiě)設(shè)計(jì)是基于并行