串行程序的并行化處理
摘要: 目前在并行計(jì)算研究領(lǐng)域中很大一部分工作是將串行程序并行化,本文根據(jù)題目的要求,在合理的假設(shè)下,首先發(fā)掘串行程序中存在的并行性,一個(gè)好的方法就是構(gòu)造其對應(yīng)的并行任務(wù)(DAG)圖,論文分析了串行程序中存在的數(shù)據(jù)依賴關(guān)系,并以此為根據(jù),提出了一種由現(xiàn)有的串行程序構(gòu)造對應(yīng)的并行任務(wù)(DAG)圖的算法,然后再對剩下的串行程序分段,提出并行劃分模型,基于這種模型提出了一種并行劃分算法PDMA;并根據(jù)程序段的相關(guān)程度提出了一種對PDMA進(jìn)行改進(jìn)的并行劃分算法RPDMA。然后再通過一個(gè)串性程序的實(shí)例,運(yùn)用此方案對其進(jìn)行運(yùn)算,最后對串行程序運(yùn)算下的時(shí)間復(fù)雜度和進(jìn)行此方案運(yùn)算下的時(shí)間復(fù)雜度進(jìn)行比較,得出此方案的優(yōu)越。
1.問題的重述
并行計(jì)算是將一個(gè)計(jì)算任務(wù)分?jǐn)偟蕉鄠(gè)處理器上并同時(shí)運(yùn)行的計(jì)算方法。由于單個(gè)CPU的運(yùn)行速度難以顯著提高,所以計(jì)算機(jī)制造商試圖將多個(gè)CPU聯(lián)合起來使用。在計(jì)算機(jī)上早已采用專用的多處理器設(shè)計(jì),臺式機(jī)和筆記本電腦現(xiàn)在也已廣泛地采用了雙核或多核CPU。雙核CPU從外部看起來是一個(gè)CPU,但是內(nèi)部有兩個(gè)運(yùn)算核心,它們可以獨(dú)立進(jìn)行計(jì)算工作。在同時(shí)處理多個(gè)任務(wù)的時(shí)候,筆耕論文新浪博客,多核處理器可以自然地將不同的任務(wù)分配給不同的核心。最容易被并行化的計(jì)算任務(wù)稱為“易并行”的,它可以直觀地立即分解成為多個(gè)獨(dú)立的部分,并同時(shí)執(zhí)行計(jì)算問題。
要求:
。1)運(yùn)行一個(gè)以常規(guī)的串行代碼寫成的程序時(shí),如何將計(jì)算任務(wù)拆分成多個(gè)部分并分解到多個(gè)核心上同時(shí)運(yùn)行。
。2)建立合理有效的模型,并依據(jù)模型對現(xiàn)成的串行算法進(jìn)行處理。將能夠使用雙核心并行處理的部分分解開,并分配到兩個(gè)核心上同時(shí)運(yùn)行。以期達(dá)到比單核CPU處理更快速的目的。
2.模型的假設(shè)
1.忽略硬件及環(huán)境因素,假設(shè)每次執(zhí)行時(shí)硬件條件和環(huán)境條件是完全一致的。
2.對算法的時(shí)間復(fù)雜度并不考慮其精確度量,而只是關(guān)心其量級
3.雙核及多核CPU在運(yùn)算時(shí),互不干擾.
4.設(shè)文中的算法最終得到的DAG圖中消除了原有的反依賴和輸出依賴.
3.問題分析
由于單個(gè)CPU的運(yùn)行速度難以顯著提高,所以現(xiàn)在廣泛采用了雙核或多核CPU,如何將一個(gè)常規(guī)的串行程序分解成兩部分,使之能夠同時(shí)采用了雙核或多核CPU,雙核CUP內(nèi)部的兩個(gè)運(yùn)算核心可以獨(dú)立進(jìn)行工作,并且希望能夠充分發(fā)揮雙核心的計(jì)算能力。首先我們根據(jù)任務(wù)之間存在的數(shù)據(jù)依賴以及控制依賴關(guān)系,將先發(fā)掘串行程序中存在的并行性,從而減少了直接將串行程序并行化的復(fù)雜度,也提高了效率。然后再針對剩下的串行程序進(jìn)行并行化處理,從而使它的效率達(dá)到更理想的狀態(tài).
現(xiàn)在的問題是:
。ǎ保┤绾握业揭粋(gè)好的方法去發(fā)掘串行程序中的存在的并行性;
。ǎ玻┰O(shè)計(jì)一種將串行程序并行劃分的模型,再基于這個(gè)模型提出一種并行劃分算法.
4.建模前的準(zhǔn)備
4.1對于一個(gè)輸入的串行程序, 我們首先發(fā)掘串行程序中存在的并行性構(gòu)造其對應(yīng)的并行任務(wù)DAG圖. 構(gòu)造DAG圖的時(shí)候, 主要的一個(gè)問題就是發(fā)現(xiàn)任務(wù)之間的依賴關(guān)系. 本文首先對任務(wù)之間存在的一種依賴關(guān)系作一個(gè)簡單的介紹。
本文編號:7617
本文鏈接:http://www.lk138.cn/kejilunwen/cailiaohuaxuelunwen/7617.html