18
Couillard: 透透透透透透透透透透透透透 透透透 透透透透 CAD Group Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C

Couillard : 透過 粗尺度資料流編譯做平行化編程

  • Upload
    jela

  • View
    94

  • Download
    0

Embed Size (px)

DESCRIPTION

Couillard : 透過 粗尺度資料流編譯做平行化編程. 指導教授 :周 哲 民 學 生:黃 喬 楷 CAD Group Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C. Outline. Introduction TALM & Trebuchet Compilation Front-end Back-end Auxiliary Functions and Command Line Arguments - PowerPoint PPT Presentation

Citation preview

Page 1: Couillard : 透過 粗尺度資料流編譯做平行化編程

Couillard: 透過粗尺度資料流編譯做平行化編程

指導教授 :周 哲 民 學 生:黃 喬 楷

CAD GroupDepartment of Electrical Engineering

National Cheng Kung UniversityTainan, Taiwan, R.O.C

Page 2: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 2 NCKU

OutlineIntroductionTALM & TrebuchetCompilation

Front-endBack-endAuxiliary Functions and Command Line Arguments Illustrative Examples

Experiment and ResultsConclusion

Page 3: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 3 NCKU

Introduction (1/3)資料流編程提供了一個自然的方法去做平行化,當指令一執行其輸入運算元就立即有效。

實際上在動態資料流中,我們甚至可以從多次重覆同時運行在迴圈中得到多個獨立指令,在迴圈部分可能比別人跑得更快並到達下一次重複,因此,描述資料流的控制是複雜的。

使用 TALM模型去平行化程式,程序員將變成超級指令部分的代碼區塊做標記,並描述它們的相依性,並根據他們的資料相依性在圖中 (即資料流圖 )做簡單的指令連接。通過這種方法,從資料流中自然地執行平行化。

TALM是一個旨在利用多執行緒編程資料流優勢的執行模型。 TALM的實用與否取決於程序員是否可以將超級指令指定連接在一起,包括描述使用資料流指令控制的複雜任務。

Page 4: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 4 NCKU

Introduction (2/3)TALM的主要優點是提供了一種可以利用資料流的粗尺度平行化模型。這也是一個非常有彈性的模型,若主要的資料流指令為可用的,允許以資料流的方式做完全編譯控制。

這給了程序員去選擇從粗糙到細尺度的自由執行策略。Trebuchet 系統為 TALM的第一個實施,已開發如一個混合

Von Neumann /資料流的執行系統,在共用記憶體平台中給基於執行緒的架構。 Trebuchet模擬如一個資料流機器同時支援簡單指令與超級指令。

超級指令被編譯如獨立的功能由運行環境呼叫。初步結果顯示平行化機器與使用 OpenMP的平行化應用相比,無論是在基本的性能或加速都具良好競爭力。

在實驗過程中,應用需要更複雜的技術,此時使用 TALM成為明顯的主要優點

如軟體的管線化 (Pipelining)或猜測執行

Page 5: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 5 NCKU

Introduction (3/3)我們提出 Couillard(一個 C編譯器的設計 )去編譯 TALM註釋

C程式到一個資料流圖,包括程式使用動態資料流控制的描述。Couillard設計使程序員可以忽略資料流編程的細節,程序員所要做的便是將超級指令定義和其相依性代碼進行註釋。

主要有兩個貢獻 :1. 我們定義 TALM的語言如 ANSI C的擴展,並提出了 Couillard編譯器的全面實施,其產生資料流圖和超級指令代碼給TALM。

2. 我們透過兩個 PARSEC的 benchmarks評估了 Couillard的表現。我們證明了 Trebuchet和 Couillard可探索複雜的平行化編程技術,如非線性的軟體管線化和隱藏 I / O延遲。與現行的平行化編程模型相比,顯示,我們的做法與最先進的技術相比不只具競爭力,甚至可以達到更好的加速,並允許人們很容易地利用設計空間做複雜的平行化程式。

Page 6: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 6 NCKU

TALM & Trebuchet(1/3)TALM允許應用開發人員在當前 Von Neumann的架構中去利用可用的資料流模型,以更富彈性的方式去探討 TLP。

TALM的 ISA將應用以資料流圖的形式表示,並可以平行化運行。TALM的主要貢獻是它使程序員可以引入用戶定義的指令,即所謂的超級指令。 TALM與程序員做一個假設協議,不管他或她保證如果所有的輸入都是可用的,超級指令便可啟動執行,他或她保證盡快使輸出參數可用。

Page 7: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 7 NCKU

TALM & Trebuchet(2/3)TALM已經多核心執行如一個混合 Von Neumann/資料流的執行系統: Trebuchet。

Trebuchet實際上是一個資料流的虛擬機,具有一組資料流處理單元( PE )連接在一個虛擬網絡。

在主機中( Von Neumann ),每個 PE 聯繫一個執行緒。當一個程式被執行在 Trebuchet上,指令被加載到各個 PE並根據資料流模型發射。獨立的指令會平行運行,如果它們被映射到不同的 PE上,並會有在主機上可用的核心去同時運行 PE執行緒。

Page 8: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 8 NCKU 圖 1. 當用 Trebuchet 寫入平行化應用的工作流程

Page 9: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 9 NCKU

Compilation我們提出 Couillard,一個 C編譯器做資料流類型執行。程序員將變成超級指令的區塊做註解,並註解變化輸入輸出相對應的程式變化。 Couillard接著產生 C代碼相對應於每下個被編譯的超級指令,如一個共用物件到目標架構,並由 Trebuchet加載。

Couillard 會產生 TALM 組合代碼去連接全部由使用者指定的超級指令。

此組合代碼代表了全部資料流圖的程式,並根據資料流規則,由Trebuchet 引導執行。

Page 10: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 10 NCKU

Front-endCouillard的前端 (front-end)使用 PLY和 ANSI-C,但

Couillard並不需要去支援全部的 ANSI-C語法。使用 ANSI-C語法的子集延伸去支援資料流的超級指令和其相關指令。

我們假設超級指令佔了一個應用的大部分時間,如常規指令大都被使用去描述超級指令間資料與控制的關係。

超級指令碼會被常規的 C編譯器作編譯,指令也趨於簡化。我們改變了平行化超級指令中必要的不同聲明和存取的句法。

編譯器前端產生一個輔助語法樹” AST”(Auxiliary Syntax Tree)會處理如一個資料流圖表示。

Page 11: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 11 NCKU

Back-endCouillard的後端 (back-end) 會產生 TALM 組合代碼給

TALM 、超級指令的 C代碼 (被編譯給動態鏈結庫 ) 、程式圖……等。

當產生了程式的 AST 後, Couillard 會產生其相對應的資料流圖;

從此資料流圖中,會產生 3個輸出檔 :

1. .dot 檔 : 描述了在 Graphviz表示法中的圖。2. .fl 檔 : 描述使用了 TALM的 ISA的圖,此檔為 Trebuchet的

組譯器的輸入產生 .flb 二進制檔加載到 Trebuchet的虛擬機器中。3. .lib 檔 : 將多個超級指令描述如多個功能,在 C碼中會被編譯如動態鏈結庫。

Page 12: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 12 NCKU

Auxiliary Functions and Command Line Arguments在我們的系統中,應用可以用 Trebuchet 虛擬機器執行;命令線參數變量不能被宣布在應用代碼中,必須透過

Trebuchet的命令線。因此, Trebuche分別在 tre_superargv和treb_superargc 儲存了一個命令線參數向量和參數數目。

然後當產生 .lib 檔, Couillard 聲明這些變數如 extern ,意思為程序員可以用超級指令主體存取這些參數。

Page 13: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 13 NCKU

Illustrative Examples

圖 2. 如何使用 TALM去隱藏 I/O延遲的例子。

Page 14: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 14 NCKU

Illustrative Examples (2/4)圖 2為在平行應用中如何使用 TALM 高階語言去隱藏 I/O延遲的例子。

在此例子中,我們假設有 300個元素需要從檔案中被讀取,處理並把結果記錄在一個輸出檔。

在 A 格中,超級指令所做了不同動作 :1) 初始化變量與檔案 (FILE)指標器2) 讀取3) 處理4) 寫入5) 關閉檔案

在 B 格中,顯示了由 Couillard產生的資料流圖。這個構造能讓每個處理任務的執行在相對應的讀取動作結束後立即開始;也允許每個寫入每個處理任務 i的結果在不需要等待任務 x的情況下 (當 x<i)去完成。

Page 15: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 15 NCKU

Illustrative Examples

圖 3. 用 TALM 作非線性平行化管線化例子。

Page 16: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 16 NCKU

Illustrative Examples(4/4)圖 3提供了一個如何用 TALM 高階語言去描述一個非線性的平行化管線化的例子。其主碼可分為三部分處理 (Proc-1~3)

Proc-2被分為兩個部分 Proc-2A 、 Proc-2B被條件式處理;在 A 格中顯示, TALM的註釋同時對應兩個執行緒在資料流圖中。

在 B 格中顯示了由 Couillard編譯器產生的兩個執行緒。

Page 17: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 17 NCKU

Experiment and Results

圖 4. 執行 Blackscholes結果 圖 4. 執行 Ferret結果

Page 18: Couillard : 透過 粗尺度資料流編譯做平行化編程

NCKU EE CAD

ASIC Lab 18 NCKU

Conclusion我們實現了一個 Couillard編譯器去編譯一個延伸的 C語言到

TALM碼中。TALM已經實現如一個混合 Von Neumann /資料流的執行系統

(如 : Trebuchet)。我們觀察到 TALM的有用性在很大程度上取決於程序員如何指定和連接超級指令。

實驗結果顯示與現行最先進的平行化應用相比(Pthreads 、 TBB 、 OpenMP)都極具競爭力,甚至有較好的效能。