本技術(shù)涉及計算機,特別是涉及一種任務(wù)處理方法和異構(gòu)系統(tǒng)。
背景技術(shù):
1、異構(gòu)計算指的是使用不同類型的指令集、體系架構(gòu)的計算單元組成系統(tǒng)的計算方式。例如,中央處理器(central?processing?unit,cpu)和圖形處理器(graphicsprocessing?unit,gpu),cpu和神經(jīng)網(wǎng)絡(luò)處理器(neural?network?processing?unit,npu)等。
2、以cpu和gpu的異構(gòu)系統(tǒng)為例,相關(guān)技術(shù)中,cpu和gpu的異構(gòu)系統(tǒng)執(zhí)行異構(gòu)計算任務(wù)的過程中,通常是按照順序執(zhí)行任務(wù)的。示例地,cpu和gpu的異構(gòu)系統(tǒng)執(zhí)行常規(guī)算法推理流程可以是cpu先進(jìn)行前處理,gpu再執(zhí)行計算,然后cpu進(jìn)行后處理。
3、然而,相關(guān)技術(shù)中的異構(gòu)計算任務(wù)執(zhí)行時,存在cpu和gpu的利用率低的問題。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種任務(wù)處理方法和異構(gòu)系統(tǒng),能夠提高cpu和gpu的利用率。
2、第一方面,本技術(shù)提供了一種任務(wù)處理方法,應(yīng)用于異構(gòu)系統(tǒng)中的第一處理器,該方法包括:
3、對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理;
4、調(diào)用異構(gòu)系統(tǒng)中第二處理器按照任務(wù)樣本數(shù),對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,并在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;
5、根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果。
6、本技術(shù)實施例提供的任務(wù)處理方法應(yīng)用于異構(gòu)系統(tǒng)中的第一處理器,通過對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理;調(diào)用異構(gòu)系統(tǒng)中第二處理器按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,并在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;根據(jù)各子任務(wù)的后處理結(jié)果確定待處理任務(wù)的任務(wù)處理結(jié)果。該方法中,對多個子任務(wù)是并行進(jìn)行前處理,以及對多個子任務(wù)計算結(jié)果是并行進(jìn)行后處理的,這樣能夠提高第一處理器的利用率;并且調(diào)用第二處理器按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,與對子任務(wù)計算結(jié)果進(jìn)行并行后處理是同時進(jìn)行的,這樣能夠提高第二處理器的利用率。另外,第二處理器是按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行計算的,這樣第二處理器可以同時對多個子任務(wù)中的數(shù)據(jù)進(jìn)行處理,能夠提高第二處理器的計算利用率。
7、在其中一個實施例中,第一處理器中包括多個處理單元;多個子任務(wù)的數(shù)量與多個處理單元的數(shù)量相同;對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理,包括:
8、在處理單元為線程,或者,處理單元為線程和進(jìn)程的情況下,調(diào)用多個線程對多個子任務(wù)并行進(jìn)行前處理;
9、在處理單元為進(jìn)程的情況下,調(diào)用多個進(jìn)程對多個子任務(wù)并行進(jìn)行前處理。
10、本實施例提供的任務(wù)處理方法,在處理單元為線程,或者處理單元為線程和進(jìn)程的情況下,調(diào)用多個線程對多個子任務(wù)并行進(jìn)行前處理;在處理單元為進(jìn)程的情況下,調(diào)用多個進(jìn)程對多個子任務(wù)并行進(jìn)行前處理。該方法中,提供了處理單元為線程、進(jìn)程,以及線程和進(jìn)程的不同情況下對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理的方法,這樣使用者可以根據(jù)實際應(yīng)用自行選擇,使得任務(wù)處理方法具有更高的實用性。
11、在其中一個實施例中,對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理,包括:
12、第一處理器對各子任務(wù)并行進(jìn)行前處理;或者,
13、第一處理器調(diào)用第二處理器對各子任務(wù)并行進(jìn)行前處理。
14、本技術(shù)實施例提供的任務(wù)處理方法,通過第一處理器對各子任務(wù)并行進(jìn)行前處理;或者通過第一處理器調(diào)用第二處理器對各子任務(wù)并行進(jìn)行前處理。該方法中,提供了對各子任務(wù)并行進(jìn)行前處理的兩種方式,使用者可以根據(jù)實際應(yīng)用場景自行選擇,這樣使得任務(wù)處理方法具有更高的實用性。并且,無論是第一處理器對各子任務(wù)進(jìn)行前處理,還是第二處理器對各子任務(wù)進(jìn)行前處理,均是并行處理,這樣能夠提高第一處理器和第二處理器的利用率。
15、在其中一個實施例中,每輪獲得的子任務(wù)計算結(jié)果是第二處理器基于任務(wù)樣本數(shù)劃分出多個執(zhí)行單元對相應(yīng)的子任務(wù)的前處理結(jié)果進(jìn)行計算得到;每輪計算中每個執(zhí)行單元對應(yīng)執(zhí)行一個子任務(wù)的前處理結(jié)果計算操作。
16、本實施例提供的任務(wù)處理方法,每輪獲得的子任務(wù)計算結(jié)果是第二處理器基于任務(wù)樣本數(shù)劃分出多個執(zhí)行單元對相應(yīng)的子任務(wù)的前處理結(jié)果進(jìn)行計算得到的,每輪計算中每個執(zhí)行單元對應(yīng)執(zhí)行一個子任務(wù)的前處理結(jié)果計算操作。該方法中,第二處理器在對各子任務(wù)的前處理結(jié)果執(zhí)行計算操作時,是由第二處理其中的多個執(zhí)行單元計算的,執(zhí)行單元的數(shù)量與需要處理的子任務(wù)的前處理結(jié)果的數(shù)量相同,這樣能夠提高第二處理器對各子任務(wù)的前處理結(jié)果進(jìn)行計算的效率,從而能夠提高第二處理器的利用率。
17、在其中一個實施例中,該方法還包括:
18、在第二處理器中多個執(zhí)行單元進(jìn)行每輪計算之前,對多個執(zhí)行單元執(zhí)行加鎖操作;
19、在檢測到多個執(zhí)行單元每輪計算完成的情況下,對多個執(zhí)行單元執(zhí)行釋放鎖操作。
20、本實施例提供的任務(wù)處理方法,在第二處理器中多個執(zhí)行單元進(jìn)行每輪計算之前,對多個執(zhí)行單元執(zhí)行加鎖操作;在檢測到多個執(zhí)行單元每輪計算完成的情況下,對多個執(zhí)行單元執(zhí)行釋放鎖操作。該方法中,在第二處理器對任務(wù)樣本數(shù)的子任務(wù)的前處理結(jié)果進(jìn)行每輪計算時進(jìn)行加鎖,在計算完成后釋放鎖,這樣能夠防止第二處理器中的多個執(zhí)行單元子進(jìn)行每輪計算時子任務(wù)之間的競爭,從而能夠避免計算出錯,提高最終得到的任務(wù)處理結(jié)果的準(zhǔn)確性,使得任務(wù)處理方法具有更高的可靠性。
21、在其中一個實施例中,在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理,包括:
22、在每獲得一輪子任務(wù)計算結(jié)果的情況下,第一處理器執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;或者,
23、在每獲得一輪子任務(wù)計算結(jié)果的情況下,第二處理器執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理。
24、本實施例提供的任務(wù)處理方法,在每獲得一輪子任務(wù)計算結(jié)果的情況下,可以由第一處理器執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理,也可以由第二處理器執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理。該方法中,提供了對各子任務(wù)計算結(jié)果進(jìn)行并行后處理的兩種方式,使用者可以根據(jù)實際應(yīng)用場景自行選擇,這樣使得任務(wù)處理方法具有更高的實用性。
25、在其中一個實施例中,第一處理器中包括多個處理單元;第一處理器執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理,包括:
26、在處理單元為線程,或者,處理單元為線程和進(jìn)程的情況下,第一處理器調(diào)用多個線程執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;
27、在處理單元為進(jìn)程的情況下,第一處理器調(diào)用多個進(jìn)程執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理。
28、本實施例提供的任務(wù)處理方法中,在處理單元為線程,或者處理單元為線程和進(jìn)程的情況下,調(diào)用多個線程對多個子任務(wù)計算結(jié)果并行進(jìn)行后處理;在處理單元為進(jìn)程的情況下,調(diào)用多個進(jìn)程對多個子任務(wù)計算結(jié)果并行進(jìn)行前處理。該方法中,提供了處理單元為線程、進(jìn)程,以及線程和進(jìn)程的不同情況下對待處理任務(wù)劃分的多個子任務(wù)計算結(jié)果并行進(jìn)行后處理的方法,這樣使用者可以根據(jù)實際應(yīng)用自行選擇,使得任務(wù)處理方法具有更高的實用性。
29、在其中一個實施例中,該方法還包括:
30、根據(jù)第二處理器的顯存大小和對第二處理器預(yù)設(shè)的多個初始任務(wù)樣本數(shù),確定每個初始任務(wù)樣本數(shù)對應(yīng)的初始進(jìn)程數(shù);
31、將每個初始任務(wù)樣本數(shù)和對應(yīng)的初始進(jìn)程數(shù)確定為一個任務(wù)搜索空間;
32、基于各任務(wù)搜索空間,確定任務(wù)樣本數(shù)和第一處理器中的處理單元數(shù)量。
33、本實施例提供的任務(wù)處理方法,根據(jù)第二處理器的顯存大小和對第二處理器預(yù)設(shè)的多個初始任務(wù)樣本數(shù),確定每個初始任務(wù)樣本數(shù)對應(yīng)的初始進(jìn)程數(shù);將每個初始任務(wù)樣本數(shù)和對應(yīng)的初始進(jìn)程數(shù)確定為一個任務(wù)搜索空間;基于各任務(wù)搜索空間確定多個處理單元和任務(wù)樣本數(shù)。該方法中,通過搜索的方法確定最優(yōu)的任務(wù)樣本數(shù),以及處理單元的數(shù)量,能夠充分的利用第一處理器和第二處理器的硬件資源,提高第一處理器和第二處理器的利用率,從而能夠提高整個異構(gòu)系統(tǒng)的性能。
34、在其中一個實施例中,基于各任務(wù)搜索空間,確定任務(wù)樣本數(shù)和第一處理器中的處理單元數(shù)量,包括:
35、根據(jù)第一處理器的核心數(shù),獲取每個任務(wù)搜索空間中的多個初始線程數(shù);
36、根據(jù)每個任務(wù)搜索空間中的多個初始線程數(shù),確定各任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù)耗時;
37、將最小目標(biāo)線程任務(wù)耗時對應(yīng)的線程數(shù)確定為處理單元數(shù)量,以及,將最小目標(biāo)線程任務(wù)耗時對應(yīng)的任務(wù)搜索空間中的初始任務(wù)樣本數(shù)確定為任務(wù)樣本數(shù)。
38、本技術(shù)實施例提供的任務(wù)處理方法,根據(jù)第一處理器的核心數(shù)獲取每個任務(wù)搜索空間中的多個初始線程數(shù);根據(jù)每個任務(wù)搜索空間中的多個初始線程數(shù),確定各任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù)耗時;獲取最小目標(biāo)線程任務(wù)耗時對應(yīng)的任務(wù)搜索空間中的初始樣本數(shù)確定為第二處理器的任務(wù)樣本數(shù)。該方法中,通過確定各初始線程對應(yīng)的目標(biāo)線程任務(wù)耗時,將最小的任務(wù)耗時對應(yīng)的初始線程數(shù)、初始任務(wù)樣本和初始進(jìn)程數(shù)確定為最終的線程數(shù)、進(jìn)程數(shù)和任務(wù)樣本數(shù),從而能夠確定第一處理器中處理單元的數(shù)量,這樣能夠得到處理任務(wù)耗時最小的線程數(shù)、進(jìn)程數(shù)和任務(wù)樣本數(shù),使用該線程數(shù)、進(jìn)程數(shù)和任務(wù)樣本數(shù)能夠提高使用異構(gòu)系統(tǒng)對待處理任務(wù)進(jìn)行處理的效率。
39、在其中一個實施例中,根據(jù)每個任務(wù)搜索空間中的多個初始線程數(shù),確定各任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù)耗時,包括:
40、針對任一個任務(wù)搜索空間中的多個初始線程數(shù),確定任務(wù)搜索空間中每個初始線程數(shù)對應(yīng)的線程任務(wù)耗時;
41、將確定的多個線程任務(wù)耗時中的最小線程任務(wù)耗時,確定為任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù)耗時。
42、本實施例提供的任務(wù)處理方法,針對任一任務(wù)搜索空間中的多個初始線程數(shù),確定任務(wù)搜索空間每個初始線程數(shù)對應(yīng)的線程任務(wù)耗時;將確定的多個線程任務(wù)耗時中的最小線程任務(wù)耗時確定為任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù)耗時。該方法中,將任一任務(wù)搜索空間中多個初始線程數(shù)對應(yīng)的最小線程任務(wù)耗時確定為該任務(wù)搜索空間對應(yīng)的目標(biāo)線程任務(wù),這樣后續(xù)直接將各目標(biāo)線程任務(wù)耗時進(jìn)行對比,將最小目標(biāo)線程任務(wù)耗時對應(yīng)的初始線程數(shù)和初始任務(wù)樣本數(shù)分別確定為第一處理器的線程數(shù)和第二處理器的任務(wù)樣本數(shù),這樣能夠提高確定線程數(shù)和任務(wù)樣本數(shù)的效率,并且這樣確定線程數(shù)和任務(wù)樣本數(shù)的方法快捷,且容易實現(xiàn),使得任務(wù)處理方法具有更高的實用性。
43、在其中一個實施例中,根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果,包括:
44、對各子任務(wù)的后處理結(jié)果進(jìn)行融合處理,獲得待處理任務(wù)的任務(wù)處理結(jié)果。
45、本技術(shù)實施例提供的任務(wù)處理方法,通過對各子任務(wù)的后處理結(jié)果進(jìn)行融合處理,獲得待處理任務(wù)的任務(wù)處理結(jié)果,這樣能夠提高確定的任務(wù)處理結(jié)果的準(zhǔn)確性和可靠性。
46、第二方面,本技術(shù)實施例還提供一種任務(wù)處理方法,應(yīng)用于異構(gòu)系統(tǒng)中的第二處理器,該方法包括:
47、根據(jù)異構(gòu)系統(tǒng)中第一處理器的調(diào)用指示,按照任務(wù)樣本數(shù)對多個子任務(wù)的前處理結(jié)果進(jìn)行輪循計算;多個子任務(wù)是對待處理任務(wù)劃分得到的;
48、在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;
49、根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果。
50、本技術(shù)實施例提供的任務(wù)處理方法應(yīng)用于異構(gòu)系統(tǒng)中的第二處理器,通過根據(jù)異構(gòu)系統(tǒng)中第一處理器的調(diào)用指示,按照任務(wù)樣本數(shù)對多個子任務(wù)的前處理結(jié)果進(jìn)行輪循計算;多個子任務(wù)是對待處理任務(wù)劃分得到的;在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果。該方法中,對多個子任務(wù)是并行進(jìn)行前處理,以及對多個子任務(wù)計算結(jié)果是并行進(jìn)行后處理的,這樣能夠提高第一處理器的利用率;并且調(diào)用第二處理器按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,與對各子任務(wù)計算結(jié)果進(jìn)行并行后處理是同時進(jìn)行的,這樣能夠提高第二處理器的利用率。另外,第二處理器是按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行計算的,這樣第二處理器可以同時對多個子任務(wù)中的數(shù)據(jù)進(jìn)行處理,能夠提高第二處理器的計算利用率。
51、第三方面,本技術(shù)實施例還提供一種異構(gòu)系統(tǒng),包括第一處理器和第二處理器,第一處理器用于執(zhí)行如上述第一方面中任一實施例中的步驟;第二處理器,用于執(zhí)行如上述第二方面中任一實施例中的步驟。
52、第四方面,本技術(shù)實施例還提供一種任務(wù)處理裝置,該裝置包括:
53、前處理模塊,用于對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理;
54、第一計算模塊,用于調(diào)用異構(gòu)系統(tǒng)中第二處理器按照任務(wù)樣本數(shù),對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,并在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;
55、第一確定模塊,用于根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果。
56、第五方面,本技術(shù)一個實施例還提供一種任務(wù)處理裝置,該裝置包括:
57、第二計算模塊,用于根據(jù)異構(gòu)系統(tǒng)中第一處理器的調(diào)用指示,按照任務(wù)樣本數(shù)對多個子任務(wù)的前處理結(jié)果進(jìn)行輪循計算;多個子任務(wù)是對待處理任務(wù)劃分得到的;
58、后處理模塊,用于在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;
59、第二確定模塊,用于根據(jù)各子任務(wù)的后處理結(jié)果,確定待處理任務(wù)的任務(wù)處理結(jié)果。
60、第六方面,本技術(shù)一個實施例還提供一種計算機設(shè)備,包括存儲器和處理器,存儲器存儲有計算機程序,處理器執(zhí)行計算機程序時實現(xiàn)上述第一方面和第二方面中任一實施例中的步驟。
61、第七方面,本技術(shù)一個實施例還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述第一方面和第二方面中任一實施例中的步驟。
62、第八方面,本技術(shù)一個實施例還提供一種計算機程序產(chǎn)品,包括計算機程序,計算機程序被處理器執(zhí)行時實現(xiàn)上述第一方面和第二方面中任一實施例中的步驟。
63、上述任務(wù)處理方法和異構(gòu)系統(tǒng),該方法應(yīng)用于異構(gòu)系統(tǒng)中的第一處理器,通過對待處理任務(wù)劃分的多個子任務(wù)并行進(jìn)行前處理;調(diào)用異構(gòu)系統(tǒng)中第二處理器按照任務(wù)樣本數(shù),對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,并在每獲得一輪子任務(wù)計算結(jié)果的情況下,執(zhí)行一次子任務(wù)計算結(jié)果的并行后處理;每輪計算的子任務(wù)數(shù)量與任務(wù)樣本數(shù)相同;根據(jù)各子任務(wù)的后處理結(jié)果確定待處理任務(wù)的任務(wù)處理結(jié)果。該方法中,對多個子任務(wù)是并行進(jìn)行前處理,以及對多個子任務(wù)計算結(jié)果是并行進(jìn)行后處理的,這樣能夠提高第一處理器的利用率;并且調(diào)用第二處理器按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行輪循計算,與對子任務(wù)計算結(jié)果進(jìn)行并行后處理是同時進(jìn)行的,這樣能夠提高第二處理器的利用率。另外,第二處理器是按照任務(wù)樣本數(shù)對各子任務(wù)的前處理結(jié)果進(jìn)行計算的,這樣第二處理器可以同時對多個子任務(wù)中的數(shù)據(jù)進(jìn)行處理,能夠提高第二處理器的計算利用率。