TW201923612A - 平行計算 - Google Patents
平行計算 Download PDFInfo
- Publication number
- TW201923612A TW201923612A TW107136466A TW107136466A TW201923612A TW 201923612 A TW201923612 A TW 201923612A TW 107136466 A TW107136466 A TW 107136466A TW 107136466 A TW107136466 A TW 107136466A TW 201923612 A TW201923612 A TW 201923612A
- Authority
- TW
- Taiwan
- Prior art keywords
- output
- phase
- value
- port
- calculation
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 118
- 238000012545 processing Methods 0.000 claims abstract description 93
- 238000000034 method Methods 0.000 claims abstract description 50
- 238000004590 computer program Methods 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims description 140
- 238000005192 partition Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 description 21
- 230000004888 barrier function Effects 0.000 description 16
- 239000011449 brick Substances 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 5
- 239000003550 marker Substances 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
Abstract
本發明揭示一種用於執行一電腦程式之方法,該方法由包括複數個計算單元及連接至該等計算單元之一互連件之一處理器實施,其中各計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,其中該方法包括在各計算單元處:執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及藉由以下操作執行該程式之一隨後步驟:在一計算階段中:將該兩個埠之一者指派至該輸入區域及該輸出區域兩者;在該處理單元上執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取;在已完成該計算階段時,在一交換階段中:將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
Description
標的物係屬於平行計算之領域。
平行計算係一計算形式,藉此藉由一平行電腦之不同處理單元同時實行多個操作。一平行程式設計模型係用於寫入待在一平行電腦上編譯及執行之平行電腦程式之一模型。一平行程式設計模型不僅必須指定一循序模型,因為除指定如何定義待由一個別處理器實行之任務以外,一平行程式設計模型亦必須指定:
● 可用平行性,即,偶爾將一程式分解為可同時執行之任務;
● 同時任務之間的通信(路徑及類型);
● 保留程式含義所需之同步(即,因果性)。
● 集體終止準則,例如程式以共識方式還是多數方式終止。
● 可用平行性,即,偶爾將一程式分解為可同時執行之任務;
● 同時任務之間的通信(路徑及類型);
● 保留程式含義所需之同步(即,因果性)。
● 集體終止準則,例如程式以共識方式還是多數方式終止。
除必要同步資訊以外,一平行程式亦可指定一排程(部分執行順序)以最佳化效能。
一簡單且流行之軟體平行程式設計模型係在Leslie G. Valiant之「A bridging model for parallel computation」,Communications of the ACM,第33卷第8期,1990年8月中首先描述之整體同步平行(Bulk Synchronous Parallel;BSP)模型。圖1展示BSP之原理之一高階表示。符合BSP模型之軟體保證無僵局之自由(deadlock freedom)且使優先性變得明確。在最初由Valiant描述之BSP模型中,在數個「超步驟(superstep)」102中進行計算。超步驟102被屏障同步分隔。在各超步驟102期間,任務104係獨立的(即,可並行執行);一屏障106經跨越以當且僅當已完成執行該超步驟中之全部任務時開始下一超步驟。任務可在各超步驟期間的任何時間將訊息發佈至自身或其他任務(由圖1中之箭頭表示) (唯圖1並未明確反映此情況)。然而,該等訊息對接收者在開始下一超步驟之前係不可見。在各超步驟中,各任務可對在先前超步驟中由該任務自身產生之輸出資料及/或對在先前超步驟中由(若干)其他任務產生之輸出資料進行操作。
通常,在各超步驟中,將在各處理器上執行數個(可能甚多個)任務。即,通常存在多於(可能遠多於)實體處理器之任務。在各超步驟期間,各處理器可對其局部記憶體或暫存器中之資料執行計算,該資料可包含在先前超步驟中作為訊息從其他處理器接收之資料(即,在先前超步驟中由在不同處理器上運行之任務產生之輸出資料)及/或在先前超步驟中由該處理器自身計算之輸出資料(即,在先前超步驟中由在相同處理器上運行之任務產生之輸出資料)。
根據此BSP模型,每超步驟存在一次全部處理器之一單一同步,且一超步驟包括訊息之計算及交換兩者。
平行計算在機器學習之內容脈絡中具有有用應用。迄今,已致力於在分散式、基於雲端之電腦系統中用BSP實施機器學習演算法。
本發明之一第一態樣提供一種用於執行一電腦程式之方法,該方法由包括複數個計算單元及連接至該等計算單元之一互連件之一處理器實施,其中各計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,其中該方法包括在各計算單元處:執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及藉由以下操作執行該程式之一隨後步驟:在一計算階段中:將該兩個埠之一者指派至該輸入區域及該輸出區域兩者;對該處理單元執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取;在已完成該計算階段時,在一交換階段中:將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
藉由容許藉由在該交換階段中在各計算單元(磚片)處將不同埠指派至該輸入區域及該輸出區域以同時發送及接收訊息而最大化該交換階段之時間效率。然而,發明人已認知,在該計算階段中,經由相同埠存取該輸入區域及該輸出區域更具時間效率。此係因為在該計算階段之內容脈絡中,用於計算該新輸出組之較早值之哪一者由相同計算單元(即,磚片上)計算且哪一者由一(若干)不同計算單元(即,磚片外)計算係無關的,且因此在該交換階段中經由相同埠藉由該等碼序列(小碼(codelet))存取全部較早磚片上及磚片外值係更簡單且快速的。換言之,以此方式動態地變化埠分配減少完成該交換階段所用之總時間及完成該計算階段所用之總時間。
在實施例中,該一個埠亦可在該計算階段中指派至一第一工作空間區域。可使用在該計算單元局部(即,未發送至任何其他計算單元而僅在該所討論處理單元處產生及更新)、保持於該第一工作空間區域中且在該計算階段中經由該一個埠擷取之第一工作資料計算該輸出組。
該兩個埠之另一者可在該計算階段中指派至該記憶體之一第二工作空間區域。可使用在該計算單元局部、保持於該第二工作空間區域中且在該計算階段中經由該另一個埠擷取之第二工作資料計算該輸出組。
發明人已進一步認知,可經由該相同埠以及該輸入區域及該輸出區域更有效地存取某些類型之工作資料,而經由另一「備用」埠更有效地存取其他類型之工作資料。因此,此等實施例提供可進一步增加該計算階段之效率之一機制。
例如,發明人已認知,可經由與所傳送資料自身相同之埠最有效地存取定義不同小碼之間的通信路徑(邊緣)之工作資料,而可經由該備用埠最有效地存取用於操縱該所傳送資料以產生該組新輸出值之資料。一特定實例係實施神經網路之一處理器,其在下文詳細論述。
在實施例中,該一個埠亦可在該計算階段中指派至一第一工作空間區域,使用在該計算單元局部、保持於該第一工作空間區域中且在該計算階段中經由該一個埠擷取之第一工作資料計算該輸出組。
該第一工作資料可識別保持該初始輸出值之該輸出區域中之一第一位置及/或保持該初始輸入值之該輸入區域中之一第二位置。
該第一工作資料可包括至該第一位置之一第一記憶體指標及/或至該第二位置之一第二記憶體指標。
該兩個埠之另一者可在該計算階段中指派至該記憶體之一第二工作空間區域,使用在該計算單元局部、保持於該第二工作空間區域中且在該計算階段中經由該另一個埠擷取之第二工作資料計算該輸出組。
該第二工作資料可包括一局部值,且藉由用該局部值及該初始輸出及/或該初始輸入值作為一函數之輸入評估該函數而在該計算階段中計算該輸出組之至少一個新輸出值,經由該一個埠擷取該初始輸出及/或初始輸入且經由該另一個埠擷取該局部值。
該第二工作資料可包括一第一局部值及一第二局部值,且該至少一個新第一值可經計算為一總和之非線性函數,該總和具有至少以下項目:該第一局部值與該初始輸出值之一乘積及該第二局部值與該初始輸入值之一乘積,經由該一個埠擷取該初始值且經由該另一個埠擷取該等局部值。
可從該輸出區域擷取及發送該新輸出值且可藉由在該處理單元上執行一單一通信指令而將該新輸入值寫入至該輸入區域。
該單一通信指令可具有識別保持該新輸出值之該輸出區域中之一位置之一輸出運算元及識別寫入該所接收新輸入值之該輸入區域中之一位置之一輸入運算元。
可藉由依序執行數個子階段而執行該交換階段,且在各子階段中,各計算單元可將資料發送至至多一個各自其他計算單元,其中該各自其他計算單元在該子階段中不從任何其他計算單元接收資料,且其中該計算單元在該交換階段之任何其他子階段中不將資料發送至該各自其他計算單元。
子階段之數目可比複數個處理單元之數目少一個。
各處理單元處可保持一排程,其針對各子階段識別該各自其他計算單元。
該排程可包括一拉丁方陣之至少部分。
該單一通信指令可在該等子階段之一者中執行且可不包含識別其他處理單元之任何運算元。
各計算單元可藉由具有一個別帶寬之一各自連接而連接至該互連件,且該互連件可具有至少大至該等個別帶寬之一彙總之一帶寬。
各處理單元可具有一或多個控制暫存器,其中藉由將計算階段分區資料寫入至該(等)控制暫存器之至少一者而在該計算階段中將該一個埠指派至該輸入區域及該輸出區域兩者,且其中可藉由將交換階段分區資料寫入至該(等)控制暫存器之至少一者而在該交換階段中將該第一埠及該第二埠分別指派至該輸出區域及該輸入區域。
該計算階段分區資料可呈該記憶體中之一單一位址之形式,且該交換階段分區資料呈該記憶體中之一不同單一位址之形式。
該處理器可包括連接至該等計算單元之各者之同步邏輯,其中在各計算單元處:在該計算階段結束時,該計算單元可促成至該同步邏輯之一交換請求信號,其中該同步邏輯可僅當已從全部該等計算單元接收交換請求信號時促成至各計算單元之一交換進行信號,且該計算單元可回應於接收該交換進行信號而促成該交換階段。
在各計算單元處:可在該初始步驟之一交換階段中接收該初始輸入值,在該交換階段結束時,該計算單元可促成至該同步邏輯之一計算請求信號,其中該同步邏輯可僅當已從全部該等計算單元接收計算請求信號時促成至各計算單元之一計算進行信號,且該計算單元可回應於接收該計算進行信號而促成該隨後步驟之該計算階段。
該同步邏輯可為專用同步硬體。
該隨後步驟可為依序執行之多個隨後步驟之第一者,各隨後步驟在該步驟之一計算階段中計算寫入至該輸出區域之一或多個各自新輸出值之一各自輸出組且在該步驟之一交換階段中接收寫入至該輸入區域之一各自新輸入值,由在該先前步驟之該計算階段中寫入至該輸出區域之一輸出值及/或在該先前步驟之該交換階段中寫入至該輸入區域之一輸入值計算該各自輸出組。
針對各隨後步驟,可基於在該先前步驟之該計算階段中寫入至該輸出區域之該輸出值及/或在該先前步驟之該交換階段中寫入至該輸入區域之該輸入值更新該局部值;且其中可藉由用如針對各隨後步驟更新之局部變數及在該先前步驟之該計算階段中寫入至該輸出區域之該輸出值及/或在該先前步驟之該交換中寫入至該輸入區域之該輸入值作為該函數之輸入評估該函數而在該各隨後步驟之該計算階段中計算至少一個各自新輸出值。
本發明之另一態樣提供一種用於執行一電腦程式之處理器,該處理器包括複數個計算單元及連接至該等計算單元之一互連件,其中各計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,其中各計算單元經組態以:執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及藉由以下操作執行該程式之一隨後步驟:在一計算階段中:將該兩個埠之一者指派至該輸入區域及該輸出區域兩者;對該處理單元執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取;在已完成該計算階段時,在一交換階段中:將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
本發明之另一態樣提供電腦程式產品,其包括經組態以當在處理器上執行時實施方法之可執行指令。
本發明之另一態樣提供一種在用於執行一電腦程式之一處理器中使用之計算單元,該計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,該計算單元經組態以:執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及藉由以下操作執行該程式之一隨後步驟:在一計算階段中:將該兩個埠之一者指派至該輸入區域及該輸出區域兩者;對該處理單元執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取;在已完成該計算階段時,在一交換階段中:將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該處理器之一互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
另一態樣提供一種用於執行一電腦程式之方法,該方法由包括多個計算單元及連接至該等計算單元之一互連件之一處理器實施,其中各計算單元包括一處理單元及可對該處理單元進行存取之一記憶體,其中該方法包括在各計算單元處:執行一步驟序列之一初始反覆,該序列包括一較早步驟及一隨後步驟;及執行該步驟序列之一隨後反覆;其中藉由以下操作執行各步驟之各反覆:在該處理單元上執行碼序列以計算一或多個輸出值之一輸出組,將該輸出組寫入至該記憶體,經由該互連件將該輸出組之一輸出值發送至一不同計算單元,經由該互連件接收已在相同步驟之相同反覆中由一不同計算單元計算之一輸入值,且將該輸入值寫入至該記憶體;其中:i)在該較早步驟之該初始反覆中計算之該輸出組之至少一第一輸出值用於在該隨後步驟之該隨後反覆中計算該輸出組及/或在該隨後步驟之該隨後反覆中發送至一不同計算單元;且ii)在該較早步驟之該隨後反覆中計算之該輸出組之至少一第二輸出值用於在該隨後步驟之該隨後反覆中計算該輸出組及/或在該隨後步驟之該隨後反覆中發送至一不同計算單元。
與習知BSP相比,此藉由容許碼序列(小碼)之間的不同等級之通信(即,反覆間及反覆內通信兩者)而為程式設計者提供較大靈活性。
參考圖2及圖3,一分散式記憶體多重處理器202 (分析計算模組)包括多個處理單元304.0、……304.N,其可經組態以並行執行計算。
多重處理器202係一微處理器。其可例如嵌入一單一晶片或晶粒中,或其可嵌入一組兩個或兩個以上互連晶粒中及/或一單一積體電路(IC)封裝中。分析計算模組202執行一平行電腦程式以由(若干)輸入值產生呈一或多個輸出值之形式之輸出資料。
分析計算模組202可執行歸因於其平行結構而尤其適合之任務。例如,分析計算模組202可實施已從某一資料學習且可用於從類似資料進行預測之一機器學習(ML)模型。可在一離線訓練階段中及/或在線上學習模型,藉此模型在使用時學習。分析計算模組可接收(若干)輸入值且基於該模型進行預測。
圖3展示分散式記憶體多處理器202之一方塊圖。處理器202包括N複數個磚片(計算單元) 302.0、302.1、……、302.N-1;該N個302.0、302.1、……、302.N-1磚片所連接之一互連件308及該N個302.0、302.1、……、302.N-1磚片亦連接之同步邏輯310。此處,標記「302.n」在文字及各種圖中用於表示N個磚片302.0、302.1、……、302.N-1之一單一者。「*.n」形式之參考字元用於指代由N個磚片之各者個別展現之特徵。因此,關於一磚片「302.n」之任何描述或其之任何特徵「*.n」可個別地應用於N個磚片302.0、302.1、……、302.N-1之任一者。參考304用於共同地指代處理單元。應注意,偶爾個別處理單元在本文中稱為處理器,從內容脈絡將明白「處理器」指代多重處理器202或其一個別處理單元304.n。同步邏輯310在此實例中實施為專用同步硬體,不過不排除其他(例如,軟體或組合硬體/軟體實施方案)可能性。
各磚片302.n包括具有至少一個控制暫存器R.n之一各自處理單元304.0及具有一第一記憶體埠pA.n及一第二記憶體埠pB.n之一各自記憶體306.n。各磚片302.n之各自處理單元304.n經組態以執行(線性)碼序列(即,每次執行一個之低階機器碼指令序列)。藉由N個處理單元304.0、304.1、……、304.N-1之各者彼此同時執行一各自碼序列,N個處理單元304.0、304.1、……、304.N-1能夠實現平行計算。雖然圖3中未明確展示,但記憶體306.n由一組獨立記憶體庫形成,各記憶體庫具有一獨特記憶體位址。各記憶體庫係一記憶體位置之一實例,如本文中使用之術語。記憶體306.n可經由記憶體之第一埠pA.n或第二埠pB.n由處理器304.n進行存取。應注意,記憶體304.n可同時經由其第一埠pA.n及第二埠pB.n進行存取,藉此處理器304.n可經由第一埠pA.0從記憶體306.n中之一個位置讀取一值或將一值寫入至一個位置,同時經由第二埠從記憶體306.n中之另一位置讀取一值或將一值寫入至另一位置。「同時」意謂操作至少部分在時間上重疊。
互連件308提供不同處理單元之間的訊息通信。各處理單元304.n可經由互連件308將資料發送至任何其他處理單元304.n' (n'≠n),且可經由互連件308從任何其他處理單元304.n'接收已藉由該其他處理單元304.n'以一類似方式傳送至該處理單元304.n之資料。藉由利用兩個埠pA.n、pB.n,各處理單元302.n能夠執行同時發送及接收操作以藉由經由埠之一者(例如,第二埠pB.n)將經由互連件308接收之資料寫入至記憶體304.n同時擷取經由另一埠(例如,第一埠pA.n)發送之資料而分別經由互連件308發送及接收資料。
在處理器202上運行以執行一總體任務之一軟體程式將總體任務分為可並行操作之數個件(本文中稱為「小任務」)。各小任務包括程式碼之一對應部分(本文中稱為一「小碼」)及小碼在其上操作之程式資料之一對應部分。此處,「執行一小任務」或(類似者)意謂在對應程式資料上運行對應小碼。各小碼係呈在個別處理單元304之一者上運行之一碼序列之形式。針對一所謂資料平行程式,全部小碼係相同的,不過其通常將在不同資料元素上操作。針對一所謂任務平行程式,程式小任務係不同的。通常,一平行電腦程式將組合兩種類型之平行性。應注意,本標的物可應用於全部此等類型之平行程式。
小任務藉由經由互連件308互相發送訊息而互動。無需任何共用記憶體;圖3之處理器中不存在共用記憶體,因此訊息傳遞係小任務交換資料之唯一機制。在此實施例中,用專用同步硬體(參見下文)達成跨越多個磚片302之全域同步。然而,不排除在其他實施例中為了全域同步及/或其他目的而使用共用記憶體。
本發明提供一平行計算模型,現在將描述其細節。根據本模型結構化之一平行程式可表示為包括頂點(其表示小任務(含有小碼及資料))及邊緣(其表示可發送訊息之路徑)之一圖表。邊緣旨在表達計算順序,從而表示資料相依性及其他優先關係。
藉由實例,圖4展示可在分析計算模組202上運行之一平行電腦程式410之一例示性高階圖表表示。電腦程式410經表示為具有頂點V之一圖表406 (分析圖表)。頂點V之各者表示藉由在一處理單元304.n上執行對應小碼而實施之一小任務;在執行小碼時,小碼在已由(若干)其他小任務((若干)第二值)產生之(若干)值上操作及/或從一外部源(如從邊緣至頂點表示)供應以產生供應至其他小任務及/或返回至外部源(如從頂點至邊緣表示)之(若干)值(「(若干)第一值」或等效「(若干)輸出值」)。圖表406 (即,由圖表406表示之平行操作)反覆多次,藉此在除第一反覆以外的各反覆處,基於在先前反覆中產生之第二值產生第一值。一分析圖表之一反覆在本文中等效地稱為一「計算循環」。標記「I(m)」在本文中用於表示一分析圖表(諸如406)或此等圖表之序列之第m個反覆(參見下文之文字及附圖6A)。反覆係屏障同步的(如由圖4中之一屏障408表示),其中不開始圖表406之下一反覆I(m+1)直至已全部完成當前反覆I(m)之每一小任務。指向及來自屏障之邊緣(圖4中標記為「pe」)分別對應於待在下一反覆I(m+1)中接收之訊息及已來自先前反覆I(m-1)之訊息。在此程度上,根據類似於上文概述之BSP模型之一程式設計模型結構化程式410。然而,應注意,與BSP相比,在未經由屏障408之頂點之間亦容許邊緣(標記為「ce」)。此等表示訊息由相同反覆I(m)中之一頂點接收且變得對該頂點可見,且因此可在其產生時被該頂點使用。換言之,為容許在程式之此圖表表示中表達迴圈,區分兩種類型之邊緣:攜載在當前反覆期間接收之訊息(非管線訊息)之邊緣及攜載待在下一反覆中接收之訊息(管線訊息)之邊緣;前者稱為「非管線邊緣」(標記為「ce」)而後者稱為「管線邊緣」(標記為「pe」)。
如將瞭解,程式410為了圖解目的而大幅簡化且通常將含有顯著較大數目個頂點及邊緣。
雖然不如BSP般嚴格,但本程式設計模型仍對程式結構設置以下限制:
● 分析圖表406必須係非循環的,即,在任何頂點V處開始,不可能存在非管線邊緣ce之任何序列,藉由該等序列可在不跨越屏障408之情況下迴歸至該頂點;
● 由頂點V表示之小任務必須有原因地排程,即,經排程使得針對具有指向另一小任務之一非管線邊緣之每一小任務,前者在後者開始之前全部完成;
● 程式經共同驅動,即,下一反覆無法開始直至當前反覆之每一小任務已全部完成;
● 頂點之間的傳訊係張貼式(postal)的,即,頂點V可在程式中之任何點處將一訊息發送至頂點V'而無需頂點V'被告知有此訊息或在一訊息警覺狀態中。
● 分析圖表406必須係非循環的,即,在任何頂點V處開始,不可能存在非管線邊緣ce之任何序列,藉由該等序列可在不跨越屏障408之情況下迴歸至該頂點;
● 由頂點V表示之小任務必須有原因地排程,即,經排程使得針對具有指向另一小任務之一非管線邊緣之每一小任務,前者在後者開始之前全部完成;
● 程式經共同驅動,即,下一反覆無法開始直至當前反覆之每一小任務已全部完成;
● 頂點之間的傳訊係張貼式(postal)的,即,頂點V可在程式中之任何點處將一訊息發送至頂點V'而無需頂點V'被告知有此訊息或在一訊息警覺狀態中。
憑此等限制,本模型可提供經保證確定性程式行為,免於遭遇僵局,同時將大於習知BSP之靈活性提供給程式設計者。
一般言之,平行程式410之小任務與分析計算模組202之N個處理單元304之間將不存在一對一映射。針對效能可擴縮性及高效機器利用率,平行程式設計者通常優先表達多於機器平行性之小任務平行性。現在將參考圖7描述此背後之一些原因。一般言之,不同小任務將具有不同複雜性,且因此將用不同時間量來完成。在小任務與N個處理單元304之間的一對一映射之極端情況中,假定各小任務用一不同時間量來完成,則除N個處理單元302之一者以外的全部處理單元將在各反覆I(m)之至少一部分內未被佔用,且許多處理單元將在反覆I(m)之大部分內未被佔用,此係低效的。此在圖7之左手側上繪示(圖7中之各垂直條表示一處理單元304.n被一單一小任務佔用之時間間隔)。然而,藉由以一無偏(例如,循環)方式將多個小任務指派至各處理單元,如圖7之右手側上繪示,不同完成時間取平均,使得各處理單元304.n在各反覆之全部或大部分內保持佔用,從而高效地使用處理資源。
因此,各處理單元304.n通常將在程式執行之各反覆期間實施許多小任務。將表達程式之圖表406分為N個子圖表,每處理單元304.n一個子圖表,且各子圖表具有許多頂點,各頂點表示一小任務。因此,圖表之一些邊緣(訊息路徑)完全在一處理單元304.n局部,且其他邊緣需要經由互連件308在不同處理單元之間傳輸訊息以實施非管線及管線邊緣相依性兩者。因此,小任務之間需要一些協調以在一單一反覆內(歸因於非管線邊緣相依性)及不同反覆之間(歸因於管線邊緣相依性)實施一確定性程式。例如,必須遵守優先關係且必須避免遭遇僵局。
如將在下文詳細描述,為執行根據本程式設計模型結構化之一反覆平行程式,將程式分為多個BSP超步驟,藉此在圖表406之各反覆中執行多個超步驟。一「超步驟」有時在本文中簡稱為一「步驟」。此藉由實例在圖5及圖6中針對圖4中介紹之平行程式410繪示。展示表示程式410之個別小任務之六個頂點,在圖5及圖6中為了將變得明白之原因採用標籤V0a、V0b、V1、V2、V3a、V3b。
根據以下層級指派規則將各頂點指派至一層級:
● 將僅(若干)管線邊緣所指向之各頂點指派至一最低層級(l=0);
● 將各其他頂點指派至一層級(l'+1),其中l'係存在指向其他頂點之一非管線邊緣之最高層級頂點。
● 將僅(若干)管線邊緣所指向之各頂點指派至一最低層級(l=0);
● 將各其他頂點指派至一層級(l'+1),其中l'係存在指向其他頂點之一非管線邊緣之最高層級頂點。
因此,針對例示性程式410,將頂點V0a及V0b指派至層級0,因為僅管線邊緣指向其。由於存在指向全部其他頂點之非管線邊緣,所以將其指派至大於0之層級。存在指向V1之兩個非管線邊緣;由於兩者皆來自層級0頂點,所以將V1指派至層級0+1=1。存在指向V2之一管線邊緣,然而由於亦存在來自V1之一非管線邊緣(其係層級1),此意謂將2指派至層級1+1=2。繼而,存在從V2指向頂點V3a、V3b之非管線邊緣,因此將各者指派至層級2+1=3,儘管亦存在從V1至V3a之一邊緣之事實(因為V2具有高於V1之層級)。
一旦已指派標籤,藉由在處理單元304.n之各者處執行L個BSP型超步驟之一序列而實施圖表406之各單一反覆,其中L係頂點已經指派之不同層級之總數(在此實例中,L=4)。此在下文詳細描述。
首先,應注意,根據如先前技術章節中參考之Valiant之原始BSP之變體定義此內容脈絡中之一「超步驟」。在此變體中,BSP程式在一計算階段與一訊息交換階段之間交替。在計算階段中,容許各處理單元304.n對其局部記憶體306.n中之資料(包含在先前交換階段中在來自其他處理單元304.n'之訊息中接收之任何資料)執行計算。在計算階段期間,處理單元可製備待發送至其他處理單元之訊息,但下一交換階段之前將不發送此等訊息。當每一處理器已完成低局部計算時,交換階段開始。在交換階段期間,經由互連件308傳輸及接收全部訊息,使得其變得可用於下一計算階段中之計算。如本文中使用之術語,一單一超步驟可包括一單一計算階段及一單一交換階段。重要地,在此變體中在計算與交換之間及在交換與下一計算之間存在兩倍的同步(即,兩倍的屏障)。
儘管其使處理器同步數目加倍,然BSP之此變體係有利的,因為其完全分隔計算及交換活動。此給予數種優點,包含其容許協調訊息交換以使一互連光纖之高效使用(即,互連件408之高效使用)最大化。此行為將在適當時間加以描述。
首先,返回至圖5,中心圖表展示圖表406之一單一反覆I(m)可如何實施為一超步驟序列,其中使用標記SS(0,m)、SS(1,m)、……、SS(L-1,m)。應注意,SS(l,m)意謂在一分析圖表(諸如406)或此等圖表之序列之第m個反覆I(m)中執行之第l個超步驟。在各超步驟SS(l,m)處,僅執行由層級l之頂點表示之小任務。如在圖5之右手側上繪示,一反覆可因此視為一習知BSP超步驟SS之L個重複(不過具有將立刻處理之一重要差異),其包含由每一層級之頂點V0、……、V3b表示之全部小任務,在各反覆l處限制使得僅執行小任務之子組(即,層級l之小任務)。根據上文描述之BSP變體,如在圖6之右手側上繪示,超步驟SS (即,各超步驟SS(l,m))之各重複包括時間上不同之計算及交換階段,如由圖6之單獨計算階段屏障508C及交換階段屏障508E表示。
圖6A繪示一平行程式可如何包括多個分析圖表406a、406b、406c,其各者可以上文描述之方式實施。個別分析圖表(例如,406a及406b)或分析圖表之序列(例如,如由406a及406b形成)可反覆一或多次。在一分析圖表或圖表序列結束時,可藉由執行一碼序列602a、602b評估一迴圈條件以決定執行圖表序列之分析圖表之另一反覆還是分支至程式中之別處(例如,至一不同分析圖表(從406a至406b或從406b至406c))。
應注意,針對任何給定層級l,相同小碼在每一超步驟SS(l,m)處針對每一反覆m=0、1、……、M但在不同資料上運行。即,在各超步驟之每一反覆處執行各自一組碼序列。
上文提到之重要差異係在任何給定反覆I(m)之任何給定超步驟S(l,m)內,任何給定小任務可不僅在以下項目上操作:
1) 針對l>0,來自SS(l-1,m)之管線訊息。即,相同反覆I(m)之先前超步驟;及/或
2) 在先前反覆I(m-1)之超步驟SS(0,m-1)、SS(1,m-1)、……、SS(L,m-1)之任何一或多者中發送之訊息。
1) 針對l>0,來自SS(l-1,m)之管線訊息。即,相同反覆I(m)之先前超步驟;及/或
2) 在先前反覆I(m-1)之超步驟SS(0,m-1)、SS(1,m-1)、……、SS(L,m-1)之任何一或多者中發送之訊息。
1)歸因於程式410中之非管線邊緣ce而出現;2)歸因於程式410中之管線邊緣pe而出現。此係因為在接收非管線訊息時在相同反覆I(m)中使用非管線訊息,而管線訊息來自先前反覆I(m-1)。因此,在一給定超步驟SS(l,m)中,相同或不同小任務可同時在當前反覆I(m)及先前反覆I(m-1)兩者中發送之訊息上操作。下文呈現用以確保兩種類型之訊息在需要時可用之機制。
圖8展示呈一標示器804及一轉換器806之形式之一編譯器802之功能組件。標示器804及轉換器806經實施為在一電腦上執行之程式碼。標示器接收以一高階平行計算語言寫入、根據本計算模型結構化之一高階平行程式「[code, info]」。「code」表示定義如由程式設計者寫入之各種小任務(即,頂點)之高階程式碼;「info」表示一平行程式所需之額外資訊,且定義小任務之間的通信及同步(即,頂點之間的邊緣)及該等邊緣係非管線還是管線。如繪示,在圖8之實例中,程式「[code, info]」定義四個頂點V0i、V0ii、V1i、V1ii及以下邊緣:
● 管線邊緣:
○ 從V0ii至V1i之pe1,
○ 從V0ii至V0i之pe2,
○ 從V1i至V0i之pe3,
○ 從V1ii至V0ii之pe4,及
○ 從V1ii至V1ii (即,至自身)之pe5;及
● 非管線邊緣:
○ 從V0ii至V1ii之ce1,及
○ 從V0i至V1i之ce2。
● 管線邊緣:
○ 從V0ii至V1i之pe1,
○ 從V0ii至V0i之pe2,
○ 從V1i至V0i之pe3,
○ 從V1ii至V0ii之pe4,及
○ 從V1ii至V1ii (即,至自身)之pe5;及
● 非管線邊緣:
○ 從V0ii至V1ii之ce1,及
○ 從V0i至V1i之ce2。
頂點V0i、……、V1ii及邊緣pe1、……、ce2構成待反覆M次之一分析圖表。如將明白,根據上文呈現之標示方案,V0i、V0ii係層級0頂點且V1i、V1ii係層級0頂點,不過在此實例中,其層級未在程式[p, info]中明確識別。邊緣之選擇僅為例示性的;此邊緣選擇不存在特定意義,而事實上,V0ii具有至一層級1頂點之一非管線邊緣(ce1至V1ii)及至一層級1頂點之一管線邊緣(pe1至V1i)兩者(參見下文)。因此,根據上文描述之原理,分析圖表將實施為反覆M次之兩個超步驟之一序列(因為總共存在兩個層級。)
標示器804剖析程式[code, info]以根據標示器制識別各種頂點之層級且用傳達其識別層級之一標籤資料標記各頂點。編譯器802根據上文原理操作以將圖表轉換為反覆多次之一BSP超步驟序列。將標示程式輸入至轉換器806,轉換器806將高階程式轉換為適合於在處理器202上執行之一低階程式p,其由編譯器802輸出。低階程式p包括各適合於在一個別處理單元304.n上執行之一組機器碼序列C0i、C0ii、C1i、C1ii。碼序列C0i、C0ii、C1i、C1ii係呈低階機器碼形式之小碼,其分別對應於頂點V0i、V0ii、V1i、V1ii。程式p進一步包括一組N個監督器線程S0、……、SN-1,其包括機器碼指令序列。各監督器碼序列S.n係用於在一各自磚片302.n上執行且協調待在該磚片302.n上執行之一小碼子組之執行且尤其定義小碼之間的各種邊緣。即,程式之圖表結構由監督器碼序列體現。
程式p亦包括各自層級資料,其針對各層級識別該層級之各小碼。相關監督器碼序列在執行時藉由在各反覆中首先選擇識別為層級0之小碼以供執行接著選擇識別為層級1之小碼以供執行等而基於層級資料排程小碼。
各監督器碼序列亦實施各超步驟之交換階段。僅監督器碼序列在交換階段中運行,小碼C0i、……、C0ii並不在交換階段中運行。
圖9展示用於執行一編譯平行程式(諸如圖8之例示性程式p)之一方法之一流程圖。在圖9之方法中,執行一超步驟序列SS(0,m)、SS(1,m)……之多個反覆I(m) (其中m=0、1……),用第一反覆I(0)之第一超步驟SS(0,0)作為一當前超步驟開始。
各反覆之各超步驟S(l,m)開始於一各自計算階段C(l,m)。在各自計算階段C(l,m)中:
● 在步驟S2處,為了下文論述之原因將第一埠pA.n指派至第一工作空間區域WA.n、輸入區域IN.n及輸出區域OUT.n,且將第二埠pB.n指派至第二工作空間區域WB.n。在此實例中,藉由修改該磚片302.n處之分區位址以因此移動分區邊界而實現分配;
● 在步驟S4處,針對當前計算階段C(l,m)計算各自一組一或多個輸出值,此可係基於先前超步驟SS(l-1,m)及/或先前反覆I(m-1)計算之較早值。將輸出組寫入至輸出區域OUT.n。
● 在步驟S2處,為了下文論述之原因將第一埠pA.n指派至第一工作空間區域WA.n、輸入區域IN.n及輸出區域OUT.n,且將第二埠pB.n指派至第二工作空間區域WB.n。在此實例中,藉由修改該磚片302.n處之分區位址以因此移動分區邊界而實現分配;
● 在步驟S4處,針對當前計算階段C(l,m)計算各自一組一或多個輸出值,此可係基於先前超步驟SS(l-1,m)及/或先前反覆I(m-1)計算之較早值。將輸出組寫入至輸出區域OUT.n。
一旦計算階段C(l,m)已全部完成,方法便可進行當前超步驟SS(l,m)之一交換階段E(l,m) (S6至S8)。在交換階段E(l,m)中,在各磚片304.n處:
● 在步驟S6處,將交換階段分區資料寫入至該磚片之控制暫存器R.0。分區位址指定記憶體306.n中之一記憶體位址,第二埠pB.n在其下方具有存取權,且第一埠pA.n在其上方具有存取權。以此方式,將定義指定記憶體位址上方及下方之位址之不同區域分別指派至該磚片302.n之第一埠pA.n及第二埠pB.n (參見下文)。
● 在步驟S8處,一訊息交換程序執行如下。在當前超步驟SS(l,m)之計算階段C(l, m)中由該磚片302.n計算之值經由第一埠pA.n於記憶體306.n中存取且經由互連件308發送至其他磚片;類似地已在相同超步驟SS(l,m)之計算階段C(l, m)中由其他磚片計算之值(「第二值」或等效地「(若干)輸入值」)亦在交換階段E(l,m)中經由互連件308接收但經由第二埠pB.n寫入至記憶體306.n。
● 在步驟S6處,將交換階段分區資料寫入至該磚片之控制暫存器R.0。分區位址指定記憶體306.n中之一記憶體位址,第二埠pB.n在其下方具有存取權,且第一埠pA.n在其上方具有存取權。以此方式,將定義指定記憶體位址上方及下方之位址之不同區域分別指派至該磚片302.n之第一埠pA.n及第二埠pB.n (參見下文)。
● 在步驟S8處,一訊息交換程序執行如下。在當前超步驟SS(l,m)之計算階段C(l, m)中由該磚片302.n計算之值經由第一埠pA.n於記憶體306.n中存取且經由互連件308發送至其他磚片;類似地已在相同超步驟SS(l,m)之計算階段C(l, m)中由其他磚片計算之值(「第二值」或等效地「(若干)輸入值」)亦在交換階段E(l,m)中經由互連件308接收但經由第二埠pB.n寫入至記憶體306.n。
在圖9之程序中,第一次運行之當前超步驟係S(0,0),但針對相同及隨後反覆之隨後超步驟反覆地重複步驟,因此具有更一般標記。
在訊息交換S8期間,藉由每一處理單元同時全速發送及接收訊息訊務而達成互連件308之充分高效使用。此被稱為「多對多個別化通信」;在每一時刻,各處理單元將訊息資料發送至一第二處理器且從一第三處理單元接收訊息資料。
排程(藉此多個處理單元協調以達成此)被稱為拉丁方陣排程。一d維拉丁方陣係一dxd數字矩陣,使得在每一列及每一行中出現從0至d-1之各數字(在此實例中,計數從0開始,但此並不重要且可選擇任何數字),而每一列及每一行具有該等數字之一不同序列。在圖11B中展示維度d=4之一拉丁方陣L之一簡單實例。根據一拉丁方陣建構之一交換排程操作如下。產生維度d=N之一拉丁方陣,N係處理單元之數目。S6之訊息交換程序在N-1個子階段(個別地稱為「一子階段p」或類似者)中發生。為了將立刻變得明白之方便原因,本文中採用一慣例,藉此p ∈ {1,...,N-1}。
所產生之拉丁方陣具有N個列r.n及N個行c.n,其中n=0、……、N-1 (因此在圖11B中展示4個列)。在此實例中,處理單元304從0編號至N-1。在各子階段p ∈ {1,...,N-1}中,拉丁方陣之一各自列r.p指定從各處理單元304.n發送之訊息之目的地,使得處理單元304.n之目的地以列r.p之行c.n編號。拉丁方陣之列之一者(在此實例中,r.0)含有表示各處理單元至其自身之映射之數序[0,1,2,…N-1];未使用此列,這是具有S8之訊息交換程序之N-1個而非N個子階段之原因。
進行S8之交換程序,使得藉由拉丁方陣L之列定義之此等子階段之各者並不重疊。在此情況中,具有等於處理單元304與互連件308之間的彙總帶寬之一對分帶寬之任何互連件308保證係非阻斷的,且將因此按最快可能速度進行交換。應注意,存在任何有效維度p之許多可能拉丁方陣。圖11B繪示根據一模量(偏移)方案建構之一拉丁方陣L,其係有利的,因為處理單元304可特別簡單地進行計算,然而可使用維度N之任何拉丁方陣。
各處理器可計算個別拉丁方陣,或其可僅計算其使用之該等組件。各處理單元304.n可具有一(若干)專用排程暫存器,其中保持拉丁方陣或其相關組件以用於各交換階段。
為支援如上文描述之全速訊息交換,各處理單元304.n經組態以能夠同時讀取及寫入。特定言之,記憶體306.n具有此同時讀寫之性質,此係因為一般言之記憶體306.n係訊息資料之來源及目的地。記憶體密度在電腦設計中係具有關鍵重要性的,尤其在矽中與處理單元304.n整合之情況下。若一矽記憶體必須提供一個以上讀取/寫入埠,則其密度顯著減小。因此,在支援上文描述之本計算模型之圖2及圖3之多重處理器202中,將記憶體306細分為兩個部分(區域)係最有效的,使得在交換期間,可從一個部分讀取同時寫入至另一部分。可在交換期間單獨存取之記憶體之兩個區域稱為將來自其他處理器之訊息資料接收至其中之輸入區域及從其發送訊息資料至其他處理器之輸出區域。輸入區域及輸出區域彼此分隔(即,不重疊)。圖10A繪示記憶體306.n之輸入區域IN.n及輸出區域OUT.n。另外展示一第一工作空間區域WA.n及第二工作空間區域WB.n,其目的在下文描述。
此係圖9之步驟S6處之埠指派之部分原因。特定言之,在此步驟S6處,在促成當前超步驟SS(l,m)之交換階段E(l,m)之前,將交換階段分區資料寫入至各磚片302.n處之控制暫存器R.n以:
● 將第一埠pA.n指派至輸出區域OUT.n及第一工作空間WA.n兩者;及
● 將第二埠pB.n指派至輸入區域IN.n及第二工作空間區域WB.n。
● 將第一埠pA.n指派至輸出區域OUT.n及第一工作空間WA.n兩者;及
● 將第二埠pB.n指派至輸入區域IN.n及第二工作空間區域WB.n。
此在圖10A之右手側上繪示。在圖10A中,記憶體位址在如展示之向下方向上增量,但此僅為例示性的。
在如此分配埠之情況下,各處理單元304.n能夠在當前交換階段E(l,m)中將一載入/儲存指令發出至記憶體之一部分(其包含輸入區域IN.n),同時將另一載入/儲存操作發出至記憶體之一部分(其包含輸出區域OUT.n)。以此方式,(經由第一埠pA.n)從輸出區域OUT.n擷取及存取第一值,同時(經由第二埠pB.n)將已從其他磚片接收之第二值儲存至輸入區域IN.n,如圖11B中繪示。
不同程式可取決於小任務之內部狀態、其間的訊息訊務量及處理器之間的小任務圖表之分區而需要兩個區域中之不同記憶體量。因此,與其為各處理器配備兩個專用記憶體,在計算或交換期間使用之各記憶體埠各有一個記憶體,不如較佳地在各磚片302.n處提供一單一可分區記憶體306.n。如提及,一處理單元控制暫存器R.n識別一位址(分區),其分割第一工作空間區域WA.n及輸出區域OUT.n與輸入區域IN.n及第二工作空間區域WB.n。一單一控制暫存器可用於此目的。即,一個埠(例如,pB.n)在R.n中識別之位址下方(或下方或該處)具有存取權且另一個埠(例如,pA.n)在該位址處或上方(或上方)具有存取權。若記憶體由數個獨立記憶體庫構成,且分區被限制於一記憶體庫邊界處,則各記憶體庫僅需支援一單一埠且可達成記憶體306.n之最大密度。
本文中藉由實例,具有兩個運算元之一通信指令,稱為「COMM」。COMM具有兩個運算元:輸出區域OUT.n (addr_out)中之一輸出值之一位址及輸入區域IN.n中之一輸入值之一位址:
COMM addr_out addr_in
COMM addr_out addr_in
可在交換階段E(l,m)中在處理單元304.n上執行COMM以從addr_out擷取輸出值且將其供應至互連件308,同時將已經由互連件308接收之一輸入值寫入至addr_in。運算元可指定位置或其可識別識別位置之暫存器。例如在addr_out及addr_in始終寫入至專用暫存器時,運算元並非必要的。應注意,COMM無需具有識別addr_out處之輸出值所去往之磚片之任何運算元,因為此可代替地由拉丁方陣排程判定。即,由交換階段之當前子階段判定目的地。
因此,可藉由用不同運算元執行一或多個COMM指令而實施交換階段。在編譯程式p中,COMM指令將包含於監督器碼序列S0、……、SN-1中。
提供能夠同時處理輸入及輸出兩者之一單一通信指令減小需要在交換階段中執行之指令數目。
一旦交換階段S8之全部N-1個子階段已完成,方法便可以下列方式進行至下一超步驟。在步驟S10處,判定是否已達到當前反覆I(m)之結束,即,是否已執行當前反覆I(m)之最後超步驟。若是,則方法進行至步驟S12,在該處例如藉由評估程式中之一迴圈終止條件而判定是否執行超步驟序列之另一反覆。迴圈終止條件可為例如一反覆計數器達到一臨限值、一(若干)特定輸出值收斂至一穩定值等。若滿足條件,則執行分支至程式之某其他部分(S16),例如執行某不同超步驟序列或終止程式。
若在步驟S10處尚未達到當前反覆I(m)之結束,則方法進行至當前反覆I(m)之下一超步驟S(l+1,m)之計算階段C(l+1,m)。即,針對S(l+1,m)重複S2至S4。當已在相關計算階段中執行從最低階至最高階之全部小碼時完成當前反覆。一層級計數器可用於追蹤已執行哪一層級之小碼,且藉此確定何時達到當前反覆I(m)之結束。
返回至步驟S12,若已達到當前反覆I(m)之最終超步驟,則方法進行至下一反覆I(m+1)且如上文般開始下一反覆I(1+m)。
現在將說明改變埠分配之原因。
應注意,在一交換階段E(l,m)期間僅需跨越互連件308發送一訊息一次,然而,接收處理器處之許多小任務可在下一計算階段C(l+1,m)期間消耗訊息。回顧形成程式之小任務圖表之一些邊緣將在一處理單元304.n內部,因此將無需在交換階段期間透過互連件308發送任何對應訊息。仍可在輸出區域OUT.n中製備此等訊息。然而,在交換階段E(l,m)期間將訊息複製至輸入區域IN.n將浪費記憶體,此係因為相同處理單元304.n之記憶體306.n中將存在兩個相同複本。
現在考量在計算階段C(l,m)期間使用記憶體306.n。處理單元304.n將需要對輸入至其小任務之訊息進行讀取存取,此等訊息將在用於在其他處理單元上執行之小任務之輸入區域IN.n中或在用於在相同處理單元304.n上執行之小任務之輸出區域OUT.n中。處理單元304.n亦將需要對輸出區域OUT.n進行寫入存取以形成新傳出訊息且對某工作記憶體(即,工作空間區域WA.n、WB.n之至少一者)進行讀取/寫入存取以在小任務計算期間儲存小任務及中間值之永久狀態。
在計算階段C(l,m)期間,在兩個記憶體埠pA.n、pB.n亦可用於兩個同時發出之載入/儲存指令時可增強效能。即,由於交換階段需要兩個全效率記憶體埠,所以可期望容許在計算階段期間亦使用兩個埠。
現在考量一編譯器或總成程式設計者希望將一載入-儲存指令排程至一小任務之一輸入資料之一載入指令旁邊之工作空間。小任務輸入可來自輸入區域IN.n (用於局部訊息)或輸出區域OUT.n (用於來自其他處理單元之訊息)。若經由不同記憶體埠存取此等區域,則總會有一種情況將與對工作空間之存取發生衝突。因此,在計算階段中,重新映射(即,重新分區)係有用的,使得經由相同埠(pA.n或pB.n)存取輸入區域IN.n及輸出區域OUT.n兩者且經由另一埠(pB.n或pA.n)存取一工作空間(例如,WB.N)區域。即,使得一工作空間區域(例如, WB.n)在各計算階段中具有一專用埠。
因此,在計算階段中將記憶體埠映射至不同於在交換階段中之記憶體位址,在此實例中,輸入區域IN.n從一個記憶體埠之位址空間移動至另一記憶體埠。應注意,此僅為一實例,且替代地輸出區域OUT.n可為移動者。
圖10A在左手側上展示一例示性計算階段方案,其中第二埠pB.n專用於第二工作空間區域pB.n,且輸入區域IN.n、輸出區域OUT.n及第一工作空間區域WA.n皆共用第一埠pA.n。
在各交換階段E(l,m)中,各磚片可取決於下一超步驟SS(l+1,m)或SS(0,m+1)中之磚片外小任務之需求而發送管線資料、非管線資料或兩者之一組合。即,可在交換階段中將當前及舊輸出值兩者發送至(若干)其他磚片。
在任何給定計算階段C(l,m)中,可在各磚片302.n處由以下項目計算新第一值:
1) 針對各超步驟SS(l>0,m),即,針對除當前反覆I(m)之第一超步驟以外的各超步驟:
i 在相同磚片302.n處之當前反覆I(m)之先前超步驟SS(l-1,m)之計算階段C(l-1,m)中計算之第一值之一或多者。此等保持於輸出區域OUT.n中且在計算階段中經由第一埠pA.n存取;及/或
ii 在一(若干)不同磚片處之當前反覆I(m)之先前超步驟SS(l-1,m)之計算階段C(l-1,m)中計算之第二值之一或多者。此等將經由互連件308接收且保持於輸入區域IN.n中且亦可在計算階段中經由第一埠pA.n存取;及/或
2) 針對各反覆I(m>0),即,針對除第一個反覆I(0)之外的各反覆:如在相同磚片302.n處之先前反覆I(m-1)中產生之舊設定之一或多個值。此等經由第二埠pB.n存取;及/或
3) 保持於第一工作空間區域WA.n或第二工作空間區域WB.n中之局部工作資料,其可在程式之執行期間在任何點處產生。
1) 針對各超步驟SS(l>0,m),即,針對除當前反覆I(m)之第一超步驟以外的各超步驟:
i 在相同磚片302.n處之當前反覆I(m)之先前超步驟SS(l-1,m)之計算階段C(l-1,m)中計算之第一值之一或多者。此等保持於輸出區域OUT.n中且在計算階段中經由第一埠pA.n存取;及/或
ii 在一(若干)不同磚片處之當前反覆I(m)之先前超步驟SS(l-1,m)之計算階段C(l-1,m)中計算之第二值之一或多者。此等將經由互連件308接收且保持於輸入區域IN.n中且亦可在計算階段中經由第一埠pA.n存取;及/或
2) 針對各反覆I(m>0),即,針對除第一個反覆I(0)之外的各反覆:如在相同磚片302.n處之先前反覆I(m-1)中產生之舊設定之一或多個值。此等經由第二埠pB.n存取;及/或
3) 保持於第一工作空間區域WA.n或第二工作空間區域WB.n中之局部工作資料,其可在程式之執行期間在任何點處產生。
需要1)係歸因於用以適應程式中之非管線邊緣,而需要2)以適應管線邊緣。
在上述實例中,在第二埠pB.n (在交換階段中)與第一埠pA.n (在計算階段中)之間重新指派輸入區域IN.n,而輸出區域OUT.n始終保持指派至第一埠pA.n。一同樣有效之替代方案將為以此方式重新指派輸出區域OUT.n,且代替地始終使輸入區域指派至第一埠pA.n。
可在交換階段期間以及計算階段期間(在此實例中,分別經由第一埠pA.n及第二埠pB.n)定址第一工作空間WA.n及第二工作空間WB.n。此並非必要的,然而,工作空間可在處理器協調交換階段之期間同時對處理器有用。
藉由同步邏輯310協調跨越全部N個磚片302之計算及交換階段之全域同步。一旦各磚片302.n已在一當前超步驟之交換階段中執行其小碼之最後一者,各磚片302.n便可促成至同步器310之一交換請求信號。唯有當全部磚片302已完成此時,同步器310才會促成至各磚片302.n之一各自交換進行信號。回應於各自交換進行信號,在各磚片302.n處開始當前超步驟之交換階段E(l,m)。類似地,一旦各磚片302.n已發送其希望在交換階段中發送之全部輸出值,各磚片302.n便可促成至同步器310之一計算請求信號。唯有當已從全部磚片302接收計算請求信號時,同步器310才會促成至各磚片302.n之一各自計算進行信號,磚片302.n作為回應促成下一超步驟之計算階段。
為幫助繪示,在圖8A中針對在多重處理器202上執行時之圖8之編譯程式p以圖形方式繪示圖9之流程圖之一些步驟。在圖8及圖8A中,「i」及「o」表示程式p開始及結束時之(若干)輸入值及(若干)輸出值。應注意,例如,在各反覆之第二超步驟之計算階段中藉由層級1小碼C1i及C1ii同時使用層級0小碼C0ii之一管線版本及非管線版本兩者,因此需要將兩個版本保持於記憶體中。
為幫助繪示,將描述機器學習之內容脈絡中之標的物之一例示性實施方案。將瞭解,此係例示性的,且不同實施方案在標的物之範疇內。
可經由與所傳送資料自身相同之埠AA.n最有效地存取定義不同碼序列之間的邊緣之工作資料,而可經由「備用」埠WB.n (該埠在各計算階段中係備用的,使得無需擷取在一較早超步驟及/或反覆中計算之值)最有效地存取用於操縱所傳送資料以產生該組新輸出值之資料。定義邊緣之工作資料識別由較早小任務產生且由一當前小任務所需之輸出保持於輸入區域IN.n或輸出區域OUT.n中之位置。此等可例如藉由適合記憶體指標識別。
如熟知,藉由傳送「神經元」之層實施一神經網路。在除第一層以外的各層中之各神經元計算一輸出,其通常係一非線性函數,x係其中各分量係由先前層中之一神經元產生之一輸出之一向量,且w係在該神經元局部且反覆地更新以訓練神經網路之一加權向量wi
。
在此內容脈絡中,各層可經實施為一個別步驟且該層中之各神經元可經實施為在該步驟中執行以計算一各自x及w之w.x之一小碼。通常,x之個別分量xi
(在此內容脈絡中,其係在磚片上(在OUT.n中)計算之輸出值及/或在磚片外(在IN.n中)計算之所接收輸入值)將稀疏地分散於記憶體中以使此等能夠視需要由小碼擷取,其在磚片之記憶體中之位置可例如使用記憶體指標映射於記憶體中,經由與x之分量自身相同之埠最有效地存取映射,因此分量最有效地儲存於第一工作空間區域WA.n中。相比之下,經由備用埠存取及更新加權w係更高效的,因此此等可經儲存於第二工作空間區域WB.n中以使效率最大化。
各磚片上之監督器:
● 藉由在適當時間將小任務委派至工作者WT.n而排程小任務;
● 實施工作者之屏障同步以分隔計算階段與交換階段;
● 在一序列(例如,一分析圖表或分析圖表序列)之一整合結束時評估迴圈條件以判定執行該序列之另一反覆(若滿足條件)還是分支至程式中之別處(例如,至一不同分析圖表);
● 藉由促成計算及交換請求信號且回應於計算/交換進行信號而同步計算/交換階段。
● 藉由在適當時間將小任務委派至工作者WT.n而排程小任務;
● 實施工作者之屏障同步以分隔計算階段與交換階段;
● 在一序列(例如,一分析圖表或分析圖表序列)之一整合結束時評估迴圈條件以判定執行該序列之另一反覆(若滿足條件)還是分支至程式中之別處(例如,至一不同分析圖表);
● 藉由促成計算及交換請求信號且回應於計算/交換進行信號而同步計算/交換階段。
工作者WT.n之各者執行委派至其任何小任務。
儘管區域在上文中係連續的,然其不必係連續的。
在「一序列之較早及隨後步驟」之內容脈絡中,「較早」及「隨後」係相對彼此而言且僅在該序列之一給定反覆之內容脈絡中,在該序列之一隨後反覆之一較早步驟之前執行該序列之第一初始反覆之一隨後步驟。
應注意,術語初始不必指代一反覆中之第一個超步驟或一程式中之第一個反覆(不過不排除此情況)。即,一「初始」超步驟或反覆可僅在所描述之一(子)組超步驟或反覆之內容脈絡中係初始的。
即,一計算單元據稱將資料發送至一「不同」計算單元(其意謂不同於發送者/接收者之任何計算單元)/從一「不同」計算單元接收資料。在陳述「將一第一值發送至一不同計算單元/從一不同計算單元接收一第一值及將一第二值發送至一不同計算單元/從一不同計算單元接收一第二值」(或類似者)時,前者可相同於或可不相同於後者。即,術語涵蓋不同於發送者/接收者之一單一計算單元及不同於發送者/接收者且彼此不同之多個計算單元。
鑑於本文中之揭示內容,熟習此項技術者可明白所揭示技術之其他變體或應用。本發明之範疇不限於上文論述之例示性實施例,而僅受限於隨附發明申請專利範圍。
102‧‧‧超步驟
104‧‧‧任務
106‧‧‧屏障
202‧‧‧分散式記憶體多處理器/分析計算模組
302.0至302.N-1‧‧‧磚片(計算單元)
304.0至304.N-1‧‧‧處理單元
306.0至306.n-1‧‧‧記憶體
308‧‧‧互連件
310‧‧‧同步邏輯/同步器
406‧‧‧分析圖表
406a至406c‧‧‧分析圖表
408‧‧‧屏障
410‧‧‧平行電腦程式
508‧‧‧屏障
508C‧‧‧計算階段屏障
508E‧‧‧交換階段屏障
602a‧‧‧碼序列
602b‧‧‧碼序列
802‧‧‧編譯器
804‧‧‧標示器
806‧‧‧轉換器
c.0至c.3‧‧‧行
ce‧‧‧非管線邊緣
ce1‧‧‧非管線邊緣
ce2‧‧‧非管線邊緣
IN.0至IN.n‧‧‧輸入區域
L‧‧‧拉丁方陣
OUT.0至OUT.n‧‧‧輸出區域
pA.0至pA.n‧‧‧第一記憶體埠
pB.0至pB.n‧‧‧第二記憶體埠
pe‧‧‧管線邊緣
pe1至pe5‧‧‧管線邊緣
r.0至r.3‧‧‧列
R.0至R.N-1‧‧‧控制暫存器
S2至S16‧‧‧步驟
V‧‧‧頂點
V0a‧‧‧頂點
V0b‧‧‧頂點
V0i‧‧‧頂點
V0ii‧‧‧頂點
V1‧‧‧頂點
V1i‧‧‧頂點
V1ii‧‧‧頂點
V2‧‧‧頂點
V3a‧‧‧頂點
V3b‧‧‧頂點
WA.n‧‧‧第一工作空間區域
WB.n‧‧‧第二工作空間區域
圖1展示習知BSP之一些原理之一高階示意表示;
圖2展示一多重處理器之一示意方塊圖;
圖3進一步詳細展示一多重處理器之一示意方塊圖;
圖4展示本文中呈現之一平行計算模型之一高階示意概觀;
圖5及圖6展示可如何解譯寫入至新模型之一程式以使其在一電腦上運行之一高階示意概觀;
圖6A展示包括多個分析圖表之一電腦程式;
圖7繪示一負載平衡機制之原理;
圖8展示一編譯器之功能組件;
圖8A提供由執行一編譯平行程式引起之操作之一示意圖圖解;
圖9展示用於執行一編譯平行程式之一方法之一流程圖;
圖10A繪示在一平行程式之執行期間實施之一記憶體埠分配機制;
圖11A示意性地繪示一平行程式之一交換階段中之一訊息交換程序;及
圖11B展示一拉丁方陣之一示意表示。
Claims (25)
- 一種用於執行一電腦程式之方法,該方法由包括複數個計算單元及連接至該等計算單元之一互連件之一處理器實施,其中各計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,其中該方法包括在各計算單元處: 執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及 藉由以下操作執行該程式之一隨後步驟: 在一計算階段中: 將該兩個埠之一者指派至該輸入區域及該輸出區域兩者; 在該處理單元上執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取; 在已完成該計算階段時,在一交換階段中: 將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及 經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
- 如請求項1之方法,其中該一個埠亦在該計算階段中指派至一第一工作空間區域,使用在該計算單元局部、保持於該第一工作空間區域中且在該計算階段中經由該一個埠擷取之第一工作資料計算該輸出組。
- 如請求項2之方法,其中該第一工作資料識別保持該初始輸出值之該輸出區域中之一第一位置及/或保持該初始輸入值之該輸入區域中之一第二位置。
- 如請求項3之方法,其中該第一工作資料包括至該第一位置之一第一記憶體指標及/或至該第二位置之一第二記憶體指標。
- 2、3或4之方法,其中該兩個埠之另一者在該計算階段中指派至該記憶體之一第二工作空間區域,使用在該計算單元局部、保持於該第二工作空間區域中且在該計算階段中經由該另一個埠擷取之第二工作資料計算該輸出組。
- 如請求項5之方法,其中該第二工作資料包括一局部值,且藉由用該局部值及該初始輸出及/或該初始輸入值作為一函數之輸入評估該函數而在該計算階段中計算該輸出組之至少一個新輸出值,經由該一個埠擷取該初始輸出及/或初始輸入且經由該另一個埠擷取該局部值。
- 如請求項6之方法,其中該第二工作資料包括一第一局部值及一第二局部值,且該至少一個新第一值經計算為一總和之非線性函數,該總和具有至少以下項目:該第一局部值與該初始輸出值之一乘積及該第二局部值與該初始輸入值之一乘積,經由該一個埠擷取該初始值且經由該另一個埠擷取該等局部值。
- 2、3或4之方法,其中從該輸出區域擷取及發送該新輸出值且藉由在該處理單元上執行一單一通信指令而將該新輸入值寫入至該輸入區域。
- 如請求項8之方法,其中該單一通信指令具有識別保持該新輸出值之該輸出區域中之一位置之一輸出運算元及識別寫入該所接收新輸入值之該輸入區域中之一位置之一輸入運算元。
- 如請求項1之方法,其中藉由依序執行數個子階段而執行該交換階段,且在各子階段中,各計算單元將資料發送至至多一個各自其他計算單元,其中該各自其他計算單元在該子階段中不從任何其他計算單元接收資料,且其中該計算單元在該交換階段之任何其他子階段中不將資料發送至該各自其他計算單元。
- 如請求項10之方法,其中子階段之數目比複數個處理單元之數目少一個。
- 如請求項10或11之方法,其中在各處理單元處保持一排程,其針對各子階段識別該各自其他計算單元。
- 如請求項12之方法,其中該排程包括一拉丁方陣之至少部分。
- 如請求項7之方法,其中: 藉由依序執行數個子階段而執行該交換階段,且在各子階段中,各計算單元將資料發送至至多一個各自其他計算單元,其中該各自其他計算單元在該子階段中不從任何其他計算單元接收資料,且其中該計算單元在該交換階段之任何其他子階段中不將資料發送至該各自其他計算單元; 子階段之該數目比複數個處理單元之該數目少一個; 該排程包括一拉丁方陣之至少部分;且 該單一通信指令在該等子階段之一者中執行且不包含識別該其他處理單元之任何運算元。
- 2、3、4、10或11中任一項之方法,其中各計算單元藉由具有一個別帶寬之一各自連接而連接至該互連件,且該互連件具有至少大至該等個別帶寬之一彙總之一帶寬。
- 2、3、4、10或11中任一項之方法,其中各處理單元具有一或多個控制暫存器,其中藉由將計算階段分區資料寫入至該(等)控制暫存器之至少一者而在該計算階段中將該一個埠指派至該輸入區域及該輸出區域兩者,且其中藉由將交換階段分區資料寫入至該(等)控制暫存器之至少一者而在該交換階段中將該第一埠及該第二埠分別指派至該輸出區域及該輸入區域。
- 如請求項16之方法,其中該計算階段分區資料呈該記憶體中之一單一位址之形式,且該交換階段分區資料呈該記憶體中之一不同單一位址之形式。
- 如請求項1之方法,其中該處理器包括連接至該等計算單元之各者之同步邏輯,其中在各計算單元處: 在該計算階段結束時,該計算單元促成至該同步邏輯之一交換請求信號,其中該同步邏輯僅當已從全部該等計算單元接收交換請求信號時促成至各計算單元之一交換進行信號,且 該計算單元回應於接收該交換進行信號而促成該交換階段。
- 如請求項18之方法,其中在各計算單元處其中: 在該初始步驟之一交換階段中接收該初始輸入值, 在該交換階段結束時,該計算單元促成至該同步邏輯之一計算請求信號,其中該同步邏輯僅當已從全部該等計算單元接收計算請求信號時促成至各計算單元之一計算進行信號,且 該計算單元回應於接收該計算進行信號而促成該隨後步驟之該計算階段。
- 如請求項18或19之方法,其中該同步邏輯係專用同步硬體。
- 2、3、4、10、11、18或19中任一項之方法,其中該隨後步驟係依序執行之多個隨後步驟之第一者,各隨後步驟藉由在該步驟之一計算階段中計算寫入至該輸出區域之一或多個各自新輸出值之一各自輸出組且在該步驟之一交換階段中接收寫入至該輸入區域之一各自新輸入值,由在該先前步驟之該計算階段中寫入至該輸出區域之一輸出值及/或在該先前步驟之該交換階段中寫入至該輸入區域之一輸入值計算該各自輸出組。
- 如請求項6之方法,其中: 各處理單元具有一或多個控制暫存器,其中藉由將計算階段分區資料寫入至該(等)控制暫存器之至少一者而在該計算階段中將該一個埠指派至該輸入區域及該輸出區域兩者,且其中藉由將交換階段分區資料寫入至該(等)控制暫存器之至少一者而在該交換階段中將該第一埠及該第二埠分別指派至該輸出區域及該輸入區域; 該計算階段分區資料呈該記憶體中之一單一位址之形式,且該交換階段分區資料呈該記憶體中之一不同單一位址之形式; 針對各隨後步驟,基於在該先前步驟之該計算階段中寫入至該輸出區域之該輸出值及/或在該先前步驟之該交換階段中寫入至該輸入區域之該輸入值更新該局部值;且 其中藉由用如針對各隨後步驟更新之局部變數及在該先前步驟之該計算階段中寫入至該輸出區域之該輸出值及/或在該先前步驟之該交換中寫入至該輸入區域之該輸入值作為該函數之輸入評估該函數而在該各隨後步驟之該計算階段中計算至少一個各自新輸出值。
- 一種用於執行一電腦程式之處理器,該處理器包括複數個計算單元及連接至該等計算單元之一互連件,其中各計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,其中各計算單元經組態以: 執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及 藉由以下操作執行該程式之一隨後步驟: 在一計算階段中: 將該兩個埠之一者指派至該輸入區域及該輸出區域兩者; 在該處理單元上執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取; 在已完成該計算階段時,在一交換階段中: 將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及 經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
- 一種電腦程式產品,其包括經組態以在如請求項23之處理器上執行時實施如請求項1至22中任一項之方法之可執行指令。
- 一種在用於執行一電腦程式之一處理器中使用之計算單元,該計算單元包括一處理單元及具有至少兩個記憶體埠之一記憶體,各埠可經指派至該記憶體之一或多個各自區域,該計算單元經組態以: 執行該程式之一初始步驟以將一初始輸出值寫入至該記憶體之一輸出區域且將一初始輸入值寫入至該記憶體之一輸入區域;及 藉由以下操作執行該程式之一隨後步驟: 在一計算階段中: 將該兩個埠之一者指派至該輸入區域及該輸出區域兩者; 在該處理單元上執行碼序列以計算一或多個新輸出值之一輸出組,且將該輸出組寫入至該輸出區域,由該等初始輸出及初始輸入值計算該輸出組,其各者在該計算階段中經由該一個埠擷取; 在已完成該計算階段時,在一交換階段中: 將該兩個埠之一第一者指派至該輸出區域且將該兩個埠之一第二者指派至輸入區域;及 經由該第一埠從該輸出區域擷取該輸出組之一新輸出值且經由該處理器之一互連件將該擷取值發送至一不同計算單元,及經由該互連件接收已在該隨後步驟中由一不同計算單元計算之一新輸入值且經由該第二埠將該接收值寫入至該輸入區域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1717292.5 | 2017-10-20 | ||
??1717292.5 | 2017-10-20 | ||
GB1717292.5A GB2569270B (en) | 2017-10-20 | 2017-10-20 | Parallel computing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201923612A true TW201923612A (zh) | 2019-06-16 |
TWI687818B TWI687818B (zh) | 2020-03-11 |
Family
ID=60481903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107136466A TWI687818B (zh) | 2017-10-20 | 2018-10-17 | 用於平行計算之方法、處理器、電腦程式產品及計算單元 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10585716B2 (zh) |
KR (1) | KR102168565B1 (zh) |
GB (1) | GB2569270B (zh) |
TW (1) | TWI687818B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7159696B2 (ja) * | 2018-08-28 | 2022-10-25 | 富士通株式会社 | 情報処理装置,並列計算機システムおよび制御方法 |
US11481256B2 (en) * | 2020-05-29 | 2022-10-25 | Advanced Micro Devices, Inc. | Task graph scheduling for workload processing |
US11782757B2 (en) * | 2021-05-07 | 2023-10-10 | SiMa Technologies, Inc. | Scheduling off-chip memory access for programs with predictable execution |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4468736A (en) | 1982-06-08 | 1984-08-28 | Burroughs Corporation | Mechanism for creating dependency free code for multiple processing elements |
US5142686A (en) * | 1989-10-20 | 1992-08-25 | United Technologies Corporation | Multiprocessor system having processors and switches with each pair of processors connected through a single switch using Latin square matrix |
JP3190748B2 (ja) * | 1992-11-19 | 2001-07-23 | エヌイーシーマイクロシステム株式会社 | Ramスキャン装置 |
RU2148857C1 (ru) * | 1998-02-20 | 2000-05-10 | Бурцев Всеволод Сергеевич | Вычислительная система |
US7669014B2 (en) * | 2007-07-23 | 2010-02-23 | Nokia Corporation | Transpose memory and method thereof |
US20160224379A1 (en) * | 2015-01-29 | 2016-08-04 | The Intellisis Corporation | Mapping Processes to Processors in a Network on a Chip Computing System |
US10169105B2 (en) | 2015-07-30 | 2019-01-01 | Qualcomm Incorporated | Method for simplified task-based runtime for efficient parallel computing |
TWM515677U (zh) | 2015-09-14 | 2016-01-11 | Nat Univ Tainan | 平行計算的嵌入式感測系統 |
KR102628902B1 (ko) * | 2015-10-28 | 2024-01-24 | 구글 엘엘씨 | 계산 그래프들 프로세싱 |
-
2017
- 2017-10-20 GB GB1717292.5A patent/GB2569270B/en active Active
-
2018
- 2018-02-01 US US15/885,949 patent/US10585716B2/en active Active
- 2018-10-17 TW TW107136466A patent/TWI687818B/zh active
- 2018-10-17 KR KR1020180123864A patent/KR102168565B1/ko active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI740761B (zh) * | 2020-01-21 | 2021-09-21 | 大陸商上海商湯智能科技有限公司 | 數據處理裝置、人工智能晶片 |
Also Published As
Publication number | Publication date |
---|---|
GB2569270A (en) | 2019-06-19 |
GB2569270B (en) | 2020-02-19 |
KR102168565B1 (ko) | 2020-10-21 |
US10585716B2 (en) | 2020-03-10 |
GB201717292D0 (en) | 2017-12-06 |
TWI687818B (zh) | 2020-03-11 |
KR20190044518A (ko) | 2019-04-30 |
US20190121678A1 (en) | 2019-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI687818B (zh) | 用於平行計算之方法、處理器、電腦程式產品及計算單元 | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
US8495604B2 (en) | Dynamically distribute a multi-dimensional work set across a multi-core system | |
CN103365631B (zh) | 用于存储器访问的动态库模式寻址 | |
CN103425533B (zh) | 用于管理嵌套执行流的方法和系统 | |
CN103294536B (zh) | 控制用于处理任务的工作分布 | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
CN103778072A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN103777926A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN103777925A (zh) | 多线程处理单元中的高效存储器虚拟化 | |
CN101802789A (zh) | 多处理器上的并行运行时执行 | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
CN103309702A (zh) | 用于并行线程子集的一致加载处理 | |
CN111630505A (zh) | 深度学习加速器系统及其方法 | |
Erciyes et al. | Parallel Graph Algorithms | |
CN103885902A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN103279379A (zh) | 用于在没有指令解码的情况下调度指令的方法和装置 | |
CN103810743A (zh) | 在上游着色器中设置下游渲染状态 | |
CN103870309A (zh) | 用于集群多级寄存器堆的寄存器分配 | |
US20190197018A1 (en) | Dynamic reconfiguration using data transfer control | |
CN103885903A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN103996216A (zh) | 用于曲面细分和几何着色器的电力高效属性处置 | |
CN103870213A (zh) | 经由管线化的状态包触发性能事件捕获 | |
Bäumelt et al. | A novel approach for nurse rerostering based on a parallel algorithm | |
CN103197918B (zh) | 多通道时间片组 |