行政院國家科學委員會專題研究計畫 期中進度報告
智慧型記憶體架構下平行編譯整合環境之建立(2/3)
計畫類別: 個別型計畫 計畫編號: NSC92-2213-E-110-003- 執行期間: 92 年 08 月 01 日至 93 年 07 月 31 日 執行單位: 國立中山大學電機工程學系(所) 計畫主持人: 黃宗傳 計畫參與人員: 陳彥峰、柯漢駿、蔡凱俞、吳晟褘 報告類型: 精簡報告 報告附件: 出席國際會議研究心得報告及發表論文 處理方式: 本計畫可公開查詢中 華 民 國 93 年 5 月 25 日
智慧型記憶體架構下平行編譯整合環境之建立(2/3)
The Development of an Integrated Parallelizing Environment for
Intelligent Memory System
計畫編號:NSC 92-2213-E-110-003
執行期限:92 年 8 月 1 日至 93 年 7 月 31 日
主持人:黃宗傳教授 國立中山大學電機工程學系
計畫參與人員:
陳彥峰
國立中山大學電機工程學系
柯漢駿
國立中山大學電機工程學系
蔡凱俞
國立中山大學電機工程學系
吳晟褘
國立中山大學電機工程學系
一、中文摘要 在電腦相關技術的進步下, 一種新的 計算機結構─Intelligent Memory─已被提 出,用以解決記憶體與處理器間的速度差 異所造成的效能瓶頸。我們在第一年的計 劃中提出數個適用於 Intelligent Memory 架構分析轉換演算法,以便充分發揮此架 構之主處理機(Host Processor)與記憶體處 理機(Memory Processor) 的效能。在今年 (第二年)的計劃裡,我們實際撰寫程式 來實現去年所發展出來的演算法,並將部 分成果,發表於相關的研討會上[2,3]。在 現有的基礎上,我們計劃將原來之 SAGE [1, 2, 3] 雛形擴充成一個完整的系統。而 今年最主要的工作就是強化上述幾個模 組,並將其整合在 SAGE 系統內,同時在 SGI Origin 200 機器上的 FlexRAM 模擬環 境,從事效能驗證與實驗。關鍵詞:Intelligent Memory, FlexRAM, SAGE,
Abstract
With the rapid growth of computer technology, a new class of computer architecture, intelligent memory, has been proposed to solve the bottleneck arising from the performance gap between the memory and processor. In the first year of
of analysis, translation and optimization for the intelligent memory platform. In this year, we implement these algorithms and present the preliminary results in the related conference [2, 3]. Also, we attempt to enhance the functionality of SAGE system by integrating the modules developed in the first year into SAGE. The performance verification is performed using FlexRam simulator which is built on the SGI Origin 200 machine.
Keywords: Intelligent Memory, FlexRAM,
SAGE 二、緣由與目的 最近幾年中諸多研究者為了縮短處理 器與記憶體的效能差距,提出了 Intelligent Memory 這種新的計算機結構,此結構整 合處理器與記憶體於同一晶片上,使得記 憶體也擁有計算能力。為了充分發揮此新 架構的特性,我們提出 SAGE(Statement Analysis Group Evaluation)程式分析系統 [4][5][6],使得原始程式透過轉換技巧與適 當排程,可以得到適合這個新架構執行的 程式。 在目前的平行化系統中,轉換的重心 大都放在盡可能讓迴圈(Loop)中所有的或 部分的輪次(Iteration)能同時被執行,而我 們所提出的 SAGE 系統則採用另一種不同 的轉換方式,它以陳述(Statement)為基本
單 元 對 迴 圈 執 行 迴 圈 分 散 轉 換 (Loop Distribution Transformation),盡可能將迴 圈分成最多個工作單位,然後再根據每個 工作單位的特性分給適合的處理器。所以 如何讓 SAGE 系統自動地幫我們分析程 式,以及針對陳述作分割並作出相對應的 轉換是我們的目標。 在今年的計劃裡,除了將前一年所發 展之分析轉換、最佳化模組充分的予以驗 證外,我們提出了更精確之區塊權重評估 機制:自我補償區塊權重評估(Self-Patch Weight Evaluation),使用 SPEC95、Perfect Benchmark 等測試程式,並設計人為參 數,仔細驗證 SAGE 最佳化轉換模組在不 同情況下之正確性與效能。最後,將上述 所有模組,予以整合,使之能充分發揮 SAGE 分析轉換程式之能力。 三、結果與討論 圖一是我們 SAGE 系統各個基本的轉 換模組組織圖。其中包含這兩年所發展之 陳 述 間 資 料 相 依 分 析 (Statement Dependence Analysis) 模 組 、 陳 述 分 割 (Statement Splitting) 模組、WPG 產生器
(Weighted Partition Dependence Graph Generation) 模 組 、 區 塊 權 重 評 估 (Block Weight Evaluation)模組、區塊執行次序分
析(Block Execution Order Analysis) 模組、
區塊排程(Block Scheduling) 模組以及程
式 碼 產 生 器 (Source Code Generation) 模 組。其相關演算法與說明,請詳見去年之 成果報告。 在今年的計劃裡,延續去年的成果, 我們發展幾項適合 Intelligent Memory 架 構之最佳化技巧,以加強 SAGE 分析系統 轉換程式的能力,提升程式執行的速度。 其中包括迴圈分割(Loop Splitting)、智慧型 記 憶 體 區 塊 化 (Intelligent Memory Tiling) 、 以 及 智 慧 型 記 憶 體 運 算 辨 識 (Intelligent Memory Operation Recognition) 等。此外,我們也以幾個著名的測速程式 SPEC95、Perfect 與 NAS Benchmark 驗證 這些模組之正確性與效能。 在迴圈分割(Loop Splitting)這一部份 裡,我們發展與先前 SAGE 雛型不同的一 個工作切割方法,也就是迴圈切割法。透 過基本分析模組中之區塊權重評估(Block Weight Evaluation) ,求出區塊權重的比 值,並依此將工作分成兩部份,分別交由 P.Host 與 P.Mem 來執行,以改進在 SAGE 雛型中,某些可以平行處理的關鍵區塊, 無 法 利 用 排 程 法 去 同 時 使 用 P.Host 與 P.Mem 的缺點。 在 智 慧 型 記 憶 體 區 塊 化 (Intelligent Memory Tiling) 這一部份裡,我們設計了 一個全新的分塊演算法,此演算法除了能 夠得到一個精確的迴圈邊界外,還能夠同 時對多層的迴圈依其適合的記憶體架構做 相應的切塊。此外,我們採用展開與塞入 法 這 種 最 佳 化 技 巧 , 配 合 純 量 取 代 法 (Scalar Replacement),有效的降低程式 對記憶體的存取次數,使得參考快取記憶 體失敗(Cache Miss)的情況降到最低。 並針對不同的記憶體階層,使用大小不同 的分塊法,以增加資料的區域性。 在智慧型記憶體運算辨識(Intelligent Memory Operation Recognition) 這一部份 裡,我們發展辨識智慧型記憶體運算的演 算法,找出適合記憶體處理機執行之區 塊,以加速程式的執行。透過 IMOP 的辨 認,可以有效的利用各種處理器潛在的效 能並節省其他企圖達到最佳工作分配所花 的轉換時間。當某一個區塊(Block)被辨 識出具有 IMOP 的行為時,SAGE 將不會 對這個區塊再做迴圈切割,因為這有可能 導致原來的 IMOP 行為被破壞掉,因而可 以省去執行工作切割的步驟。 最後,我們在 SGI Origin 200 上安裝 了 SGI Varsity、SGI IRIX 6.5 MIPS Pro Fortran 77、SGI IRIX 6.5 MIPS Pro Fortran 90、SGI IRIX 6.5 MIPS Pro C/C++ 相關套
件 以 及 SCI IRIX 6.5 MIPS Pro
Performance Analyzer 程式效能分析軟體 以幫助我們在 SGI 上作研究,並發展上述 模組,以上述數套測速程式,驗證這些模 組。
四、計劃結果自評 在這兩年的計劃中,我們已設計完成 SAGE 系統的各個基本的分析轉換模組, 發展了三項適合智慧型記憶體架構的最佳 化轉換機制,並且在模擬器上,驗證各個 獨立模組的功能。在實際撰寫程式實作各 模組、測試模組功能與實驗模擬系統安裝 時,我們學到許多原本我們所忽略到的知 識;相關參與這項研究計劃的學弟們也能 夠藉此學得了作研究的方法及作學問的態 度。對於最後一年的研究計劃目標:整合 上述模組於 SAGE 系統內並以實際例子測 試完整系統的目標,我們有信心可以完成。 五、參考文獻
[1] T. C. Huang, and S. L. Chu, “SAGE: A New Analysis and Optimization System for FlexRAM Architecture,” in Proc. 2nd Workshop on Intelligent Memory Systems, 2000.
[2] S. L. Chu, and T. C. Huang,
“Exploiting Application Parallelism for Processor-in-Memory Architecture,” in Procs. 2003 National Computer Symposium; pp. 2293-2303, 2003.
[3] S. L. Chu, and T. C. Huang, “A New Code Scheduling Mechanism for a Processor-in-Memory Architecture,” in Proceedings of The Tenth Workshop on Compiler Techniques for High- Performance Computing pp. 42-51, 2004.
[4] Y. Kang, W. Huang, S. Yoo, D. Keen, Z. Ge, V. Lam, P. Pattnaik, and J. Torrellas, “FlexRAM: Toward an Advanced Intelligent Memory System,”
International Conference on Computer Design, 1999.
[5] M. Oskin, F. T. Chong, and T.
Sherwood, “Active Page: A Computation Model for Intelligent Memory Computer Architecture,” in Proc. 25th Annual
International Symposium on Computer Architecture, pp. 192 –203, 1998.
[6] J. Granacki, et al. “Data Intensive
http://www.isi.edu/asd/ diva/, 1998. [7] Polaris Developer’s Document. Center
for Supercomputing Research and Development University of Illinois at Urbana-Champaign, June. 1995.
[8] K. Faigin, S. Weatherford, J.
Hoeflinger, D. Padua, and P. Petersen, The Polaris Internal Representation. International Journal of Parallel Programming. Vol. 22, No. 5, Oct. 1994. [9] Veenstra, J., and Fowler, R.: MINT: A
Front End for Efficient Simulation of Shared-Memory Multiprocessors. In MAS-COTS’94, pp 201-207, Jan. 1994. 演算法: 迴圈分割( Loop Splitting ) [ Input ] WPG( P, E ) [ Output ] WPG( P, E) [Algorithm]
Step 1. Identify a block from the WPG to be split.
Step 2. Compute the workload ratio by the weights of P.Host over P.Mem. (The weights can be obtained from the WPG.
Step 3. Split the iteration space of the block by this ratio into two blocks, and modify the WPG according to their dependence relations.
Step 4. If there are blocks to be split, go to Step 1.
演算法:智慧型記憶體區塊化(Intelligent Memory Tiling)
[ Input ]
WPG( P, E ) and pid /* it could be P.Host or P.Mem*/
[ Output ]
WPG( P, E ); WPG( P, E ) after be applied SMT and unroll_and_jam.
[ Intermediate ]
HL1_cache; /* P.Host Level one cache. */ HL2_cache; /* P.Host Level two cache. */ ML1_cache; /* P.Mem level one cache. */
{
For each bi ∈ WPG
If ( pid = P.Host ) then
If ( the outmost thorugh the
innermost loop are fully permutable ) bi = SMT(bi, HL1_cache,
HL2_cache );
Unroll_and_jam ( Ii, PH_reg );
End if Else
If ( the outmost thorugh the
innermost loop are fully permutable ) bi = SMT(bi, ML1_cache ); Unroll_and_jam (Ii, PM_reg ); End if End if End for End 區塊排程 (Block Scheduling) 程式碼產生器 (Source Code Generation) 原始程式 (Source Program) 適合P.Host執行 的原始程式碼
(Source Codes for PHost)
適合P.Mem執行的 原始程式碼
(Source Codes for PMem) 區塊權重評估 (Block Weight Evaluation) 陳述分割 (Statement Splitting) 陳述間資料相依 分析 (Statement Dependence Analysis) WPG 產生器 (Weighted Partition Dependence Graph Generation) 區塊執行次序 分析 (Block Execution Order Analysis) 圖一、 SAGE 系統各個基本的模組組織圖。