標題: 減少 CUDA 程式分支分歧之編譯器技術
Compiler Techniques for Reducing Branch Divergence in CUDA Programs
作者: 羅世融
Luo, Shih-Rong
游逸平
You,Yi-Ping
資訊學院資訊科技(IT)產業研發碩士專班
關鍵字: 分支分歧;圖形晶片;CUDA;GPU;branch divergence
公開日期: 2012
摘要: 由於GPU (Graphics Processing Unit)核心數量與傳輸性能的大幅提升, 使得GPU不單單只以圖形運算的方式應用於電腦或是多媒體設備中, 更可做為CPU的加速器也就是以一般目的計算的GPU (GPGPU,General-purpose computing on GPU)應用於大量數值與科學運算上。 然而以 SIMT (Single Instruction Multiple Threads)架構為設計考量 的GPU,常會因 branch divergence(分支分歧)的問題而降低程式在GPU上的執行效能,使得程式撰寫者需要在程式設計上,額外針對branch divergence的問題做程式設計上的修改,甚至可能需要重新改寫程式以確保程式不會被 branch divergence 的問題降低太多效能。 我們設計branch divergence reduction的最佳化方法,實作在NVIDIA的 CUDA (Compute Unified Device Architecture,統一計算架構)編譯器中,減輕程式撰寫者對 branch divergence 的問題花費心力。我們藉由已知應用於code size reduction的最佳化方法中的code factoring演算法,來解決branch divergence的問題。並以Par4all的轉換程式將多個C程式轉成CUDA程式,藉此我們可以產生更多未針對branch divergence做最佳化的程式,目的是產生一組可供測試的benchmark;我們的benchmark除了前述的之外也包含CUDA的SDK與Rodinia的CUDA程式等。我們也藉由gpuocelot去評估benchmark中branch divergence 的比例與執行時間上的關係。benchmark在經過我們的branch divergence reduction最佳化方法後,可測量出程式的執行時間平均可以降低3.5%,最大可以降低8.5%的執行時間。
URI: http://140.113.39.130/cdrfb3/record/nctu/#GT079790502
http://hdl.handle.net/11536/46587
顯示於類別:畢業論文