国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在多線程數(shù)據(jù)處理裝置上對(duì)線程調(diào)度進(jìn)行配置的制作方法

      文檔序號(hào):8380724閱讀:276來(lái)源:國(guó)知局
      在多線程數(shù)據(jù)處理裝置上對(duì)線程調(diào)度進(jìn)行配置的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)處理。更具體地,本發(fā)明涉及在多線程數(shù)據(jù)處理裝置上執(zhí)行的多個(gè)線程的調(diào)度。
      【背景技術(shù)】
      [0002]以單程序多數(shù)據(jù)(SPMD)方式進(jìn)行編程、然后執(zhí)行多個(gè)線程來(lái)執(zhí)行所需的數(shù)據(jù)處理的數(shù)據(jù)處理裝置,特別是圖形處理單元(GPU),在性能上有所增長(zhǎng),并且確實(shí)成為了非圖形計(jì)算的通用平臺(tái)。通過(guò)編程模型(例如,OpenCL、Renderscript和CUDA),程序員能夠?qū)⑦@些大規(guī)模并行架構(gòu)用于計(jì)算域,例如,線性代數(shù)、圖像處理和分子科學(xué)。這種設(shè)備越來(lái)越普及,使得可編程性、可維護(hù)性和可移植性問題變得非常重要。
      [0003]SPMD編程模型(例如上面提到的那些)具有有利的靈活性,它們?cè)试S程序員指定線程的獨(dú)立性,從而消除了排序約束。然而,正是這一靈活性也給程序員帶來(lái)了負(fù)擔(dān),由于線程被編程的具體方式可對(duì)架構(gòu)性能產(chǎn)生影響。正因如此,程序員仍然需要手動(dòng)執(zhí)行數(shù)據(jù)局部性優(yōu)化(例如,存儲(chǔ)器合并或循環(huán)分塊),并且考慮GPU架構(gòu)特征(例如,核心計(jì)數(shù)和片上存儲(chǔ)器分級(jí)結(jié)構(gòu))。此外,從純編程的角度來(lái)看,程序員確定線程到工作組(在OpenCL中)/塊(在CUDA中)的分配的自由可能是可取的,但會(huì)負(fù)面地影響GPU的調(diào)度自由和緩存性能。
      [0004]仍然存在提高多線程數(shù)據(jù)處理裝置(例如,GPU)的性能的可能性。

      【發(fā)明內(nèi)容】

      [0005]從第一方面來(lái)看,本發(fā)明提供了一種用于以單程序多數(shù)據(jù)的方式對(duì)目標(biāo)數(shù)據(jù)集執(zhí)行數(shù)據(jù)處理的裝置,該裝置包括:
      [0006]執(zhí)行電路,該執(zhí)行電路被配置為執(zhí)行多個(gè)線程以執(zhí)行數(shù)據(jù)處理;
      [0007]線程調(diào)度配置存儲(chǔ)設(shè)備,該線程調(diào)度配置存儲(chǔ)設(shè)備被配置為存儲(chǔ)定義多個(gè)線程調(diào)度配置的信息,每個(gè)線程調(diào)度配置定義多個(gè)線程將由所述執(zhí)行電路執(zhí)行的順序;以及
      [0008]線程調(diào)度電路,該線程調(diào)度電路被配置為響應(yīng)于線程調(diào)度選擇信號(hào)使得所述執(zhí)行電路按照選定順序執(zhí)行所述多個(gè)線程,該選定順序由多個(gè)線程調(diào)度配置中的選定線程調(diào)度配置來(lái)定義。
      [0009]從第二方面來(lái)看,本發(fā)明提供了一種以單程序多數(shù)據(jù)的方式對(duì)目標(biāo)數(shù)據(jù)集執(zhí)行數(shù)據(jù)處理的方法,該方法包括以下步驟:
      [0010]執(zhí)行多個(gè)線程以執(zhí)行數(shù)據(jù)處理;
      [0011]存儲(chǔ)定義多個(gè)線程調(diào)度配置的信息,每個(gè)線程調(diào)度配置定義多個(gè)線程將在執(zhí)行步驟中執(zhí)行的順序;以及
      [0012]響應(yīng)于線程調(diào)度選擇信號(hào)控制多個(gè)線程按照由所述多個(gè)線程調(diào)度配置中的選定線程調(diào)度配置定義的選定順序來(lái)執(zhí)行。
      [0013]從第三方面來(lái)看,本發(fā)明提供了一種用于以單程序多數(shù)據(jù)的方式對(duì)目標(biāo)數(shù)據(jù)集執(zhí)行數(shù)據(jù)處理的裝置,該裝置包括:
      [0014]用于執(zhí)行多個(gè)線程以執(zhí)行數(shù)據(jù)處理的裝置;
      [0015]用于存儲(chǔ)定義多個(gè)線程調(diào)度配置的信息的裝置,每個(gè)線程調(diào)度配置定義多個(gè)線程將由用于執(zhí)行多個(gè)線程的裝置執(zhí)行的順序;以及
      [0016]用于響應(yīng)于線程調(diào)度選擇信號(hào)控制所述多個(gè)線程按照由所述多個(gè)線程調(diào)度配置中的選定線程調(diào)度配置定義的選定順序來(lái)執(zhí)行的裝置。
      【附圖說(shuō)明】
      [0017]本發(fā)明將參考附圖中所示出的本發(fā)明的實(shí)施例,僅以舉例的方式來(lái)進(jìn)一步說(shuō)明,其中:
      [0018]圖1示意性地示出了根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng),在該數(shù)據(jù)處理系統(tǒng)中,編譯器根據(jù)源程序生成可執(zhí)行程序以在裝置上執(zhí)行;
      [0019]圖2示出了由程序員作出的算法選擇能夠?qū)彺嬖L問效率產(chǎn)生影響,以及本技術(shù)能夠如何解決這一問題;
      [0020]圖3示意性地示出了在一個(gè)實(shí)施例中,可由裝置執(zhí)行的六個(gè)不同的數(shù)據(jù)處理類型;
      [0021]圖4示意性地示出了五個(gè)不同的線程調(diào)度配置風(fēng)格;
      [0022]圖5A示意性地示出了在一個(gè)實(shí)施例中,在使用不同配置跨步值的“跨步”風(fēng)格中配置的一些線程調(diào)度;
      [0023]圖5B示意性地示出了在一個(gè)實(shí)施例中,“分片式”風(fēng)格線程調(diào)度配置的不同片大?。?br>[0024]圖6A示意性地示出了在一個(gè)實(shí)施例中的二維目標(biāo)數(shù)據(jù)集;
      [0025]圖6B示意性地示出了對(duì)應(yīng)于圖6A所示的目標(biāo)數(shù)據(jù)集的、要被執(zhí)行的線程的全集,以及這些線程的子集可被如何分配給處理器核以供執(zhí)行;
      [0026]圖6C示意性地示出了兩種用于將四個(gè)線程塊分配到兩個(gè)并行多線程處理器核上的調(diào)度技術(shù);
      [0027]圖7示意性地示出了在一個(gè)實(shí)施例中的、具有兩個(gè)并行處理器核的裝置;
      [0028]圖8示意性地示出了在一個(gè)實(shí)施例中,在性能分析過(guò)程中可被執(zhí)行的步驟序列;
      [0029]圖9示意性地示出了在一個(gè)實(shí)施例的方法中可被采取的一系列步驟;
      [0030]圖10示意性地、更詳細(xì)地示出了在一個(gè)實(shí)施例中的編譯器;
      [0031 ] 圖1IA示意性地示出了在一個(gè)實(shí)施例中,對(duì)于若干線程的存儲(chǔ)器訪問序列的相似性度量的計(jì)算;
      [0032]圖1lB示意性地示出了在一個(gè)實(shí)施例中,考慮到對(duì)于若干線程的存儲(chǔ)器訪問序列的兩個(gè)存儲(chǔ)器訪問之間的存儲(chǔ)器空間距離的相似性度量的計(jì)算;
      [0033]圖12示意性地示出了在一個(gè)實(shí)施例中,可由編譯器采取的一系列步驟;
      [0034]圖13示意性地、更詳細(xì)地示出了在一個(gè)實(shí)施例中的編譯器;
      [0035]圖14示意性地示出了在一個(gè)實(shí)施例中,可由編譯器采取的一系列步驟;以及
      [0036]圖15示意性地生成了通用計(jì)算設(shè)備,在一些實(shí)施例中,本技術(shù)可在該通用計(jì)算設(shè)備上執(zhí)行。
      【具體實(shí)施方式】
      [0037]本發(fā)明的發(fā)明人發(fā)現(xiàn),(例如,根據(jù)每周期指令(IPC)進(jìn)行測(cè)量的)以單程序多數(shù)據(jù)(SPMD)的方式進(jìn)行編程以同時(shí)執(zhí)行多個(gè)線程來(lái)執(zhí)行數(shù)據(jù)處理的多線程數(shù)據(jù)處理裝置的性能能夠根據(jù)該裝置被配置為按照其進(jìn)行操作的線程調(diào)度策略而各不相同。該數(shù)據(jù)處理例如可以是但不限于圖形處理任務(wù),并且能夠是(如上面所提到的GPU現(xiàn)在發(fā)現(xiàn)的各種應(yīng)用)比如與線性代數(shù)或分子科學(xué)相關(guān)的非圖形任務(wù)。對(duì)于圖形處理的示例,當(dāng)考慮五個(gè)不同的線程調(diào)度風(fēng)格(即,簡(jiǎn)單順序、“跨步”(具有可配置的跨步長(zhǎng)度和粒度)、“之字形(zigzag) ” (在線程的2D網(wǎng)格中,將奇數(shù)行的排序反轉(zhuǎn))、“分片式(tiled) ” (在線程的2D網(wǎng)格中的2D子分片)、以及“希爾伯特(Hilbert)曲線”(用于穿過(guò)2D網(wǎng)格的空間填充分形(fractal))),并且使用六個(gè)不同的基準(zhǔn)處理任務(wù)(S卩,積分圖像(按行)計(jì)算、積分圖像(按列)計(jì)算、11乘11卷積,矩陣乘法、矩陣復(fù)制(每行)和矩陣復(fù)制(每列))來(lái)測(cè)試這些風(fēng)格中的每一個(gè)的若干配置時(shí),發(fā)明人的研宄顯示,產(chǎn)生了各種不同的性能。本發(fā)明通過(guò)提供具有線程調(diào)度配置存儲(chǔ)設(shè)備的裝置來(lái)解決這一問題,該線程調(diào)度配置存儲(chǔ)設(shè)備被配置為存儲(chǔ)定義多個(gè)線程調(diào)度配置的信息,這些線程調(diào)度配置定義多個(gè)線程要被執(zhí)行電路執(zhí)行的順序。定義很多不同的線程調(diào)度配置的信息可被存儲(chǔ)在線程調(diào)度配置存儲(chǔ)設(shè)備中,從而允許該裝置以其調(diào)度它的線程用于執(zhí)行的方式進(jìn)行有利地重新配置。該重新配置例如可以根據(jù)該裝置需要執(zhí)行的具體種類的數(shù)據(jù)處理、在其上執(zhí)行該數(shù)據(jù)處理的目標(biāo)數(shù)據(jù)集的性質(zhì)和/或該裝置的具體架構(gòu)布局。為了實(shí)現(xiàn)所存儲(chǔ)的線程調(diào)度配置之一,提供了線程調(diào)度電路,該線程調(diào)度電路響應(yīng)于線程調(diào)度選擇信號(hào)來(lái)使得執(zhí)行電路根據(jù)相應(yīng)的選定線程調(diào)度來(lái)執(zhí)行多個(gè)線程(即,按照由該選定線程調(diào)度定義的特定順序來(lái)執(zhí)行多個(gè)線程)。線程調(diào)度選擇信號(hào)本身可來(lái)自若干不同的源,這些源或在該裝置的內(nèi)部或在該裝置的外部,并且這進(jìn)一步提供了該裝置適應(yīng)不同處理需求的有利的靈活度。
      [0038]在一些實(shí)施例中,該裝置可進(jìn)一步包括性能控制電路,該性能控制電路被配置為收集與由執(zhí)行電路執(zhí)行的數(shù)據(jù)處理相關(guān)的性能數(shù)據(jù),并且根據(jù)該性能數(shù)據(jù)生成線程調(diào)度選擇信號(hào)。因此,線程調(diào)度選擇信號(hào)可在該裝置自身中生成,特別是由監(jiān)測(cè)執(zhí)行電路在執(zhí)行數(shù)據(jù)處理中的性能,以及然后根據(jù)該性能觀測(cè)而生成線程調(diào)度選擇信號(hào)的電路來(lái)生成。性能控制電路例如可以改變線程調(diào)度選擇電路以使得執(zhí)行電路切換到新的線程調(diào)度配置,該新的線程調(diào)度配置預(yù)期可改變由性能數(shù)據(jù)表示的一個(gè)或多個(gè)性能度量。通常,期望的性能改進(jìn)是增加指令吞吐量(即,IPC)或降低能量消耗。
      [0039]在一些實(shí)施例中,性能控制電路被配置為控制性能分析過(guò)程,該性能分析過(guò)程包括以下步驟:
      [0040]選擇要被執(zhí)行的多個(gè)線程的少數(shù)子集;
      [0041]控制執(zhí)行電路按照由第一線程調(diào)度配置定義的第一選定順序來(lái)執(zhí)行多個(gè)線程的少數(shù)子集中的第一子集;
      [0042]改變線程調(diào)度選擇信號(hào)以使得執(zhí)行電路按照由下一線程調(diào)度配置定義的下一選定順序來(lái)執(zhí)行多個(gè)線程的少數(shù)子集中的下一子集;以及
      [0043]重復(fù)該改變步驟,直到線程的少數(shù)子集中的所有線程均已被執(zhí)行電路執(zhí)行,
      [0044]其中,性能控制電路被配置為設(shè)置線程選擇信號(hào)以使得執(zhí)行電路執(zhí)行多個(gè)線程的多數(shù)剩余子集,該多個(gè)線程的多數(shù)剩余子集要被執(zhí)行以按照由在性能分析過(guò)程中進(jìn)行測(cè)試的選定線程調(diào)度定義的順序?qū)δ繕?biāo)數(shù)據(jù)集執(zhí)行數(shù)據(jù)處理。
      [0045]因此,性能控制電路可被配置為參與選擇適當(dāng)?shù)木€程調(diào)度配置來(lái)定義執(zhí)行電路調(diào)度多個(gè)線程的順序的基本實(shí)證方法。這可能是有利的,因?yàn)椴煌赡艿木€程調(diào)度配置的數(shù)量和該裝置可能被要求執(zhí)行數(shù)據(jù)處理的不同數(shù)據(jù)處理情境(context)的數(shù)量,在一些情況下可使更具分析性的方法難以達(dá)到不能實(shí)行的程度。因此,由性能控制電路控制的性能分析過(guò)程采用迭代的方法,在該迭代方法中,若干不同的線程調(diào)度配置被測(cè)試,并且針對(duì)每個(gè)線程調(diào)度配置收集性能數(shù)據(jù),最終使得性能控制電路能夠設(shè)置線程選擇信號(hào),以使得執(zhí)行電路隨后使用(基于所收集的性能數(shù)據(jù))被確定為優(yōu)選的(如上所述,該“優(yōu)選”可根據(jù)情境采取若干形式)線程調(diào)度配置來(lái)繼續(xù)執(zhí)行其數(shù)據(jù)處理。此外,性能分析過(guò)程在要被執(zhí)行的多個(gè)線程的少數(shù)子集上執(zhí)行。換句話說(shuō),性能控制電路從需要被執(zhí)行的所有多個(gè)線程中選擇線程的小測(cè)試樣本群組,并且控制性能分析在該測(cè)試樣本上執(zhí)行。此后(即,當(dāng)性能分析執(zhí)行完成時(shí)),選定的線程調(diào)度配置被執(zhí)行電路用于對(duì)要被執(zhí)行的多個(gè)線程中的多數(shù)(即,在性能分析過(guò)程已在初始“測(cè)試”子集上執(zhí)行后剩余的、要被執(zhí)行的所有線程的較大部分)進(jìn)行排序。
      [0046]在一些實(shí)施例中,第一子集和下一子集各自對(duì)應(yīng)于線程的工作組,其中線程的工作組是由該裝置的程序員定義的或默認(rèn)設(shè)置的多個(gè)線程的選定子集?!肮ぷ鹘M”(在OpenCL術(shù)語(yǔ)中)或“塊”(在CUDA術(shù)語(yǔ)中)表示要被一起分配給處理器核以供執(zhí)行的、分組在一起的若干線程(這可由程序員定義,而這還可交給默認(rèn)設(shè)置),因此,這樣的分組可提供由性能控制電路選擇的線程的適當(dāng)子集作為用于在性能分析過(guò)程的每次迭代進(jìn)行測(cè)試的性能分析過(guò)程的對(duì)象。
      [0047]在一些實(shí)施例中,多個(gè)線程調(diào)度配置中的至少一些進(jìn)一步根據(jù)控制參數(shù)進(jìn)行配置,并且性能分析過(guò)程進(jìn)一步包括針對(duì)多個(gè)控制參數(shù)值收集關(guān)于由執(zhí)行電路執(zhí)行的數(shù)據(jù)處理的性能數(shù)據(jù)。大量的線程調(diào)度配置可被設(shè)想(上面提到了它的一些示例),但不僅可存在一系列線程調(diào)度配置的“風(fēng)格”(例如,順序、跨步、分片式等),而且這些線程配置風(fēng)格中的一些可將其自身進(jìn)行進(jìn)一步的配置(例如,跨步長(zhǎng)度或片大小),并且,在這種情況下,如果性能分析過(guò)程進(jìn)一步收集針對(duì)一系列控制參數(shù)值的性能數(shù)據(jù)是有利的。例如,這可在性能分析過(guò)程的性能分析程序的迭代程序中采取嵌套循環(huán)的形式,其中外層循環(huán)在不同風(fēng)格的線程調(diào)度配置上進(jìn)行迭代,而內(nèi)層循環(huán)在控制參數(shù)值的范圍上進(jìn)行迭代。此外,應(yīng)該理解的是,雖然一些線程調(diào)度配置可根據(jù)單個(gè)控制參數(shù)進(jìn)行配置,但是其他線程調(diào)度配置可根據(jù)兩個(gè)或更多控制參數(shù)(例如,在跨步風(fēng)格線程調(diào)度配置中,一個(gè)控制參數(shù)可確定跨步長(zhǎng)度、而另一控制參數(shù)可確定粒度(即,在每個(gè)跨步間隔中有多少線程被當(dāng)作一組))進(jìn)行配置。該粒度例如可以繞排(wrap)或線程塊粒度相對(duì)應(yīng)。
      [0048]在性能分析過(guò)程中,在對(duì)多個(gè)控制參數(shù)值進(jìn)行迭代時(shí),被測(cè)試的具體控制參數(shù)值被選擇的方式可采取各種不同的形式。例如,雖然控制參數(shù)可簡(jiǎn)單地遞增,但是可應(yīng)用函數(shù)來(lái)確定控制參數(shù)值的下一迭代。例如,在一些實(shí)施例中,多個(gè)控制參數(shù)值對(duì)應(yīng)于控制參數(shù)的幾何級(jí)數(shù)。這能夠是有利的,因?yàn)榭刂茀?shù)值的較大范圍使得性能分析以有限次數(shù)的迭代進(jìn)行測(cè)試。這可使得性能分析過(guò)程更加快速地識(shí)別(至少粗略地,或許隨后跟隨
      當(dāng)前第1頁(yè)1 2 3 4 5 6 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1