一種面向多核處理器的程序劃分方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種面向多核處理器的程序劃分方法及裝 置。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,多核處理器(英文:chip multi-processor,縮寫: CMP)的應(yīng)用越來越廣泛。CMP在執(zhí)行程序時(shí),為了實(shí)現(xiàn)CMP的每個(gè)核并行執(zhí)行以提高CMP 的執(zhí)行效率,可以對部分程序進(jìn)行劃分,并將劃分后的各個(gè)程序模塊分別映射到CMP的每 個(gè)核中執(zhí)行。
[0003] 現(xiàn)有技術(shù)中,實(shí)現(xiàn)CMP的每個(gè)核并行執(zhí)行的主要方式為依賴于主從線程模式的操 作系統(tǒng)實(shí)現(xiàn)的OpenMP (英文:0pen Multiple Processing,中文:開放多重處理)并行方式, 其對程序進(jìn)行劃分、對劃分后的程序模塊進(jìn)行調(diào)度,以及將調(diào)度后的程序模塊映射到CMP 的每個(gè)核中執(zhí)行。其中,對程序進(jìn)行劃分主要指采用主從線程的fork-join (分叉-合并) 模式對for循環(huán)進(jìn)行劃分。具體實(shí)現(xiàn)為在程序的頭文件中增加 OpenMP的庫文件"omp. h", 并在for循環(huán)的第一行語句的前一行增加制導(dǎo)語句"#pragma omp parallel for",該制導(dǎo) 語句的作用為需要對該for循環(huán)進(jìn)行劃分。編譯器在編譯程序的過程中,在程序開始的部 分,編譯器采用主線程單線程的方式執(zhí)行,當(dāng)編譯器執(zhí)行到制導(dǎo)語句時(shí),編譯器調(diào)用OpenMP 的庫文件對該for循環(huán)進(jìn)行劃分,即將該for循環(huán)劃分為多個(gè)線程并行執(zhí)行,當(dāng)并行執(zhí)行 結(jié)束后,多個(gè)線程進(jìn)行同步,并繼續(xù)采用主線程單線程的方式往下執(zhí)行,直到執(zhí)行到下一個(gè) for循環(huán)。上述過程重復(fù)進(jìn)行,直到程序執(zhí)行結(jié)束。
[0004] 然而,上述OpenMP并行方式只能對程序中的for循環(huán)進(jìn)行劃分,對于程序中常見 的程序模塊之間的流水線并行模式和函數(shù)模塊之間的并行模式等,OpenMP并行方式并不能 適用;同時(shí)OpenMP并行方式的實(shí)現(xiàn)需依賴于主從線程模式的操作系統(tǒng),對于嵌入式系統(tǒng)等 非主從線程模式的操作系統(tǒng),OpenMP并行方式也無法適用,從而限制了 CMP的并行處理性 能。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的實(shí)施例提供一種面向多核處理器的程序劃分方法及裝置,能夠?qū)⒄麄€(gè)程 序劃分為多個(gè)程序模塊,且無需依賴于操作系統(tǒng),從而當(dāng)劃分后的多個(gè)程序模塊映射到CMP 執(zhí)行時(shí),可以更好地發(fā)揮CMP的并行處理性能。
[0006] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007] 第一方面,本發(fā)明提供一種面向多核處理器的程序劃分方法,包括:
[0008] 從源程序的數(shù)據(jù)結(jié)構(gòu)中的入口節(jié)點(diǎn)開始,依次標(biāo)記所述源程序的數(shù)據(jù)結(jié)構(gòu)中的 N個(gè)節(jié)點(diǎn)的層級,所述入口節(jié)點(diǎn)的層級為1,所述入口節(jié)點(diǎn)為上依賴節(jié)點(diǎn)數(shù)量為0的節(jié)點(diǎn), N彡1,N為整數(shù);
[0009] 由Μ = 1開始循環(huán)執(zhí)行S1-S4,直至循環(huán)結(jié)束,Μ彡N,Μ為整數(shù);
[0010] si :若所述N個(gè)節(jié)點(diǎn)中層級為Μ的第一節(jié)點(diǎn)的計(jì)算量小于預(yù)設(shè)的第一計(jì)算量閾值, 則根據(jù)所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量,從所述第一節(jié)點(diǎn)的依賴節(jié)點(diǎn)中確定備選節(jié)點(diǎn)集, 所述備選節(jié)點(diǎn)集中的每個(gè)備選節(jié)點(diǎn)的計(jì)算量與所述第一節(jié)點(diǎn)的計(jì)算量之和均小于等于預(yù) 設(shè)的第二計(jì)算量閾值;
[0011] S2:根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的 目標(biāo)節(jié)點(diǎn);
[0012] S3 :將所述第一節(jié)點(diǎn)和所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)合并為第二節(jié)點(diǎn),所述第二節(jié)點(diǎn) 的層級與所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)的層級相同;
[0013] 34:將厘加 1。
[0014] 在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述S1中根據(jù)所述第一節(jié)點(diǎn)的下依賴 節(jié)點(diǎn)數(shù)量,從所述第一節(jié)點(diǎn)的依賴節(jié)點(diǎn)中確定備選節(jié)點(diǎn)集,包括:
[0015] 若所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量大于等于1,則從所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn) 中確定備選節(jié)點(diǎn)集。
[0016] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn) 方式中,所述S1中根據(jù)所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量,從所述第一節(jié)點(diǎn)的依賴節(jié)點(diǎn)中確 定備選節(jié)點(diǎn)集,包括:
[0017] 若所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量為0,則從所述第一節(jié)點(diǎn)的上依賴節(jié)點(diǎn)中確定 備選節(jié)點(diǎn)集。
[0018] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為1,所述備選節(jié)點(diǎn)集中包括一個(gè)備選節(jié)點(diǎn),
[0019] 其中,所述S2中根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述 第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn),包括:
[0020] 將所述一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0021] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 大于1,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的層級和備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0022] 其中,所述S2中根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述 第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn),包括:
[0023] 根據(jù)所述備選節(jié)點(diǎn)的層級,從所述備選節(jié)點(diǎn)集中確定層級最小的至少一個(gè)備選節(jié) 占 .
[0024] 根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述層級最小的至少一個(gè)備選節(jié)點(diǎn)中確 定上依賴節(jié)點(diǎn)數(shù)量最大的所述一個(gè)備選節(jié)點(diǎn),作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0025] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為〇,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0026] 其中,所述S2中根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述 第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn),包括:
[0027] 根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述備選節(jié)點(diǎn)集中確定上依賴節(jié)點(diǎn)數(shù)量 最大的所述一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0028] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第五種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為〇,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的計(jì)算量和備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0029] 其中,所述S2中根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述 第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn),包括:
[0030] 根據(jù)所述備選節(jié)點(diǎn)的計(jì)算量,從所述備選節(jié)點(diǎn)集中確定計(jì)算量最小的至少一個(gè)備 選節(jié)點(diǎn);
[0031] 根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述計(jì)算量最小的至少一個(gè)備選節(jié)點(diǎn)中 確定上依賴節(jié)點(diǎn)數(shù)量最大的所述一個(gè)備選節(jié)點(diǎn),作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0032] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第六種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述從源程序的數(shù)據(jù)結(jié)構(gòu)中的入 口節(jié)點(diǎn)開始,依次標(biāo)記所述源程序的數(shù)據(jù)結(jié)構(gòu)中的N個(gè)節(jié)點(diǎn)的層級之前,所述方法還包括:
[0033] 采用靜態(tài)單賦值SSA技術(shù),生成所述源程序的數(shù)據(jù)結(jié)構(gòu),所述源程序的數(shù)據(jù)結(jié)構(gòu) 包括所述N個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),所述N個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)至少包括所述節(jié)點(diǎn) 的下依賴節(jié)點(diǎn)、所述節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量、所述節(jié)點(diǎn)的上依賴節(jié)點(diǎn)、所述節(jié)點(diǎn)的計(jì)算量, 以及所述節(jié)點(diǎn)的生命期。
[0034] 結(jié)合第一方面的第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述S3中 將所述第一節(jié)點(diǎn)和所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)合并為第二節(jié)點(diǎn),包括:
[0035] 根據(jù)所述第一節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),確定所述 第二節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),所述第二節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中包括所述第二節(jié)點(diǎn)的層級。
[0036] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第八種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0037] S5:若所述第一節(jié)點(diǎn)的計(jì)算量大于等于所述第一計(jì)算量閾值,且所述第一節(jié)點(diǎn)的 下依賴節(jié)點(diǎn)數(shù)量大于等于1,則執(zhí)行S4。
[0038] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第九種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第十種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0039] S6:若所述第一節(jié)點(diǎn)的計(jì)算量大于等于所述第一計(jì)算量閾值,且所述第一節(jié)點(diǎn)的 下依賴節(jié)點(diǎn)數(shù)量為〇,則結(jié)束循環(huán)。
[0040] 結(jié)合前述的第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式至第十種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第十一種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0041] 將下依賴節(jié)點(diǎn)數(shù)量和上依賴節(jié)點(diǎn)數(shù)量均為0的所有節(jié)點(diǎn)合并為所述第二節(jié)點(diǎn)。
[0042] 結(jié)合第一方面的第七種可能的實(shí)現(xiàn)方式,在第十二種可能的實(shí)現(xiàn)方式中,所述采 用SSA技術(shù),生成所述源程序的數(shù)據(jù)結(jié)構(gòu)之后,所述方法還包括:
[0043] 為所述N個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)分別分配存儲地址。
[0044] 結(jié)合第一方面的第十二種可能的實(shí)現(xiàn)方式,在第十三種可能的實(shí)現(xiàn)方式中,在循 環(huán)結(jié)束后,所述N個(gè)節(jié)點(diǎn)合并為K個(gè)第二節(jié)點(diǎn),所述K個(gè)第二節(jié)點(diǎn)表征K個(gè)線程,1 < K < N, K為整數(shù),所述方法還包括:
[0045] 若第一線程中的第一子節(jié)點(diǎn)的生命周期為0,且所述第一子節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù) 量為1,則將所述第一子節(jié)點(diǎn)的存儲地址分配給第二子節(jié)點(diǎn),所述第二子節(jié)點(diǎn)為所述第一線 程中的所述第一子節(jié)點(diǎn)的下依賴節(jié)點(diǎn),所述第一線程為所述K個(gè)線程中的一個(gè)。
[0046] 第二方面,本發(fā)明提供一種面向多核處理器的程序劃分裝置,包括:
[0047] 標(biāo)記單元,用于從源程序的數(shù)據(jù)結(jié)構(gòu)中的入口節(jié)點(diǎn)開始,依次標(biāo)記所述源程序的 數(shù)據(jù)結(jié)構(gòu)中的N個(gè)節(jié)點(diǎn)的層級,所述入口節(jié)點(diǎn)的層級為1,所述入口節(jié)點(diǎn)為上依賴節(jié)點(diǎn)數(shù)量 為〇的節(jié)點(diǎn),1,N為整數(shù);
[0048] 執(zhí)行單元,用于由Μ = 1開始循環(huán)執(zhí)行S1-S4,直至循環(huán)結(jié)束,Μ彡N,Μ為整數(shù);
[0049] S1 :若所述Ν個(gè)節(jié)點(diǎn)中所述標(biāo)記單元標(biāo)記的層級為Μ的第一節(jié)點(diǎn)的計(jì)算量小于預(yù) 設(shè)的第一計(jì)算量閾值,則根據(jù)所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量,從所述第一節(jié)點(diǎn)的依賴節(jié) 點(diǎn)中確定備選節(jié)點(diǎn)集,所述備選節(jié)點(diǎn)集中的每個(gè)備選節(jié)點(diǎn)的計(jì)算量與所述第一節(jié)點(diǎn)的計(jì)算 量之和均小于等于預(yù)設(shè)的第二計(jì)算量閾值;
[0050] S2:根據(jù)預(yù)設(shè)規(guī)則,從所述備選節(jié)點(diǎn)集中確定一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的 目標(biāo)節(jié)點(diǎn);
[0051] S3 :將所述第一節(jié)點(diǎn)和所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)合并為第二節(jié)點(diǎn),所述第二節(jié)點(diǎn) 的層級與所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)的層級相同;
[0052] 34:將11加 1。
[0053] 在第二方面的第一種可能的實(shí)現(xiàn)方式中,
[0054] 所述執(zhí)行單元,具體用于若所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量大于等于1,則從所述 第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)中確定備選節(jié)點(diǎn)集。
[0055] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn) 方式中,
[0056] 所述執(zhí)行單元,具體用于若所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量為0,則從所述第一節(jié) 點(diǎn)的上依賴節(jié)點(diǎn)中確定備選節(jié)點(diǎn)集。
[0057] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第二種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為1,所述備選節(jié)點(diǎn)集中包括一個(gè)備選節(jié)點(diǎn),
[0058] 所述執(zhí)行單元,具體用于將所述一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0059] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第三種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 大于1,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的層級和備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0060] 所述執(zhí)行單元,具體用于根據(jù)所述備選節(jié)點(diǎn)的層級,從所述備選節(jié)點(diǎn)集中確定層 級最小的至少一個(gè)備選節(jié)點(diǎn),并根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述層級最小的 至少一個(gè)備選節(jié)點(diǎn)中確定上依賴節(jié)點(diǎn)數(shù)量最大的所述一個(gè)備選節(jié)點(diǎn),作為所述第一節(jié)點(diǎn)的 目標(biāo)節(jié)點(diǎn)。
[0061] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第四種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為〇,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0062] 所述執(zhí)行單元,具體用于根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述備選節(jié)點(diǎn) 集中確定上依賴節(jié)點(diǎn)數(shù)量最大的所述一個(gè)備選節(jié)點(diǎn)作為所述第一節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0063] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第五種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述第一節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量 為〇,所述預(yù)設(shè)規(guī)則為備選節(jié)點(diǎn)的計(jì)算量和備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,
[0064] 所述執(zhí)行單元,具體用于根據(jù)所述備選節(jié)點(diǎn)的計(jì)算量,從所述備選節(jié)點(diǎn)集中確定 計(jì)算量最小的至少一個(gè)備選節(jié)點(diǎn),并根據(jù)所述備選節(jié)點(diǎn)的上依賴節(jié)點(diǎn)數(shù)量,從所述計(jì)算量 最小的至少一個(gè)備選節(jié)點(diǎn)中確定上依賴節(jié)點(diǎn)數(shù)量最大的所述一個(gè)備選節(jié)點(diǎn),作為所述第一 節(jié)點(diǎn)的目標(biāo)節(jié)點(diǎn)。
[0065] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第六種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述程序劃分裝置還包括:
[0066] 生成單元,用于在所述標(biāo)記單元從源程序的數(shù)據(jù)結(jié)構(gòu)中的入口節(jié)點(diǎn)開始,依次標(biāo) 記所述源程序的數(shù)據(jù)結(jié)構(gòu)中的N個(gè)節(jié)點(diǎn)的層級之前,采用靜態(tài)單賦值SSA技術(shù),生成所述源 程序的數(shù)據(jù)結(jié)構(gòu),所述源程序的數(shù)據(jù)結(jié)構(gòu)包括所述N個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),所述N個(gè)節(jié)點(diǎn)中的 每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)至少包括所述節(jié)點(diǎn)的下依賴節(jié)點(diǎn)、所述節(jié)點(diǎn)的下依賴節(jié)點(diǎn)數(shù)量、所述 節(jié)點(diǎn)的上依賴節(jié)點(diǎn)、所述節(jié)點(diǎn)的計(jì)算量,以及所述節(jié)點(diǎn)的生命期。
[0067] 結(jié)合第二方面的第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,
[0068] 所述執(zhí)行單元,具體用于根據(jù)所述第一節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)和所述第一節(jié)點(diǎn)的目標(biāo)節(jié) 點(diǎn)的數(shù)據(jù)結(jié)構(gòu),確定所述第二節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),所述第二節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)中包括所述第二 節(jié)點(diǎn)的層級。
[0069] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第八種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第九種可能的實(shí)現(xiàn)方式中,
[0070] 所述執(zhí)行單元,還用于執(zhí)行S5,
[0071] S5:若所述第一節(jié)點(diǎn)的計(jì)算量大于等于所述第一計(jì)算量閾值,且所述第一節(jié)點(diǎn)的 下依賴節(jié)點(diǎn)數(shù)量大于等于1,則執(zhí)行S4。
[0072] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第九種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第十種可能的實(shí)現(xiàn)方式中,
[0073] 所述執(zhí)行單元,還用于執(zhí)行S6,
[0074] S6:若所述第一節(jié)點(diǎn)的計(jì)算量大于等于所述第一計(jì)算量閾值,且所述第一節(jié)點(diǎn)的 下依賴節(jié)點(diǎn)數(shù)量為〇,則結(jié)束循環(huán)。
[0075] 結(jié)合前述的第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式至第十種可能的實(shí)現(xiàn) 方式中的任一種實(shí)現(xiàn)方式,在第十一種可能的實(shí)現(xiàn)方式中,
[0076] 所述執(zhí)行單元,還用于將下依賴節(jié)點(diǎn)數(shù)量和上依賴節(jié)點(diǎn)數(shù)量均為0的所有節(jié)點(diǎn)合 并為所述第二節(jié)點(diǎn)。
[0077] 結(jié)合第二方面的第七種可能的實(shí)現(xiàn)方式,在第十二種可能的實(shí)現(xiàn)方式中,所述程 序劃分裝置還包括:
[0078] 分配單元,用于在所述生成單元采用SSA技術(shù),生成所述源程序的數(shù)據(jù)結(jié)構(gòu)之后, 為所述N個(gè)節(jié)點(diǎn)中的每個(gè)節(jié)點(diǎn)分別分配存儲地址。
[0079] 結(jié)合第二方面的第十二種可能的實(shí)現(xiàn)方式,在第十三種可能的實(shí)現(xiàn)方式中,在所 述執(zhí)行單元執(zhí)行循環(huán)結(jié)束后,所述N個(gè)節(jié)點(diǎn)合并為K個(gè)第二節(jié)點(diǎn),所述K個(gè)第二節(jié)點(diǎn)表征K 個(gè)線程,1彡K