- 高效能分散式系統實驗室

Download Report

Transcript - 高效能分散式系統實驗室

KUAS
HPDS
Company name
Mars: A MapReduce Framework on
Graphic Processors
http://hpds.ee.kuas.edu.tw/
Bingsheng He (HKUST)
Wenbin Fang (HKUST)
Qiong Luo (HKUST)
Naga K. Govindaraju(Microsoft USA)
Tuyong Wang(Sina China)
PACT'08
Presenter: Hung-Fu Li
摘要
HPDS Lab

作者在實做了GPU介面的MapReduce,期待能簡
化GPU程式撰寫的部份,並且能使得使用者可以
因此發揮GPU的運算能力。在效能評估的部份,
作者實做了CPU的版本,期待與Phoenix(另一種
基於單機多核心的MapReduce介面)進行比較。
動機
HPDS Lab

網頁資訊發布
–

發布、複製的決定成為搜尋引擎的重點工作
網頁處理
–
機械學習、分析
MapReduce
HPDS Lab

由google提出的分散式運算介面(用於分散式系統
的運算)
–
適合於機械學習、網頁分析、資料處理、資料探勘的用
途。
Map to Multiple PC(CPUs)
MapReduce ( cont. )
HPDS Lab
Map:將一對Key/Value的資料切割為多份
Key/Value的配對
 Reduce:將多對同Key不同Value的資料結合為
多對Key/Value
舉例:

–
–

Map:對於文件中每個字,發散為(字,1)的配對
Reduce:對於所有具有字的暫時結果,累加字的出現次
數,將結果(字,出現次數)存入集合。
Phoenix 製作了再多個CPU進行MapReduce的介
面
GPGPU(GPU)
HPDS Lab

GPU為特殊用途多處理器
–
–
–
–
作為大量三角與矩陣運算用途
普遍具有多核心
記憶體存取頻寬普遍比CPU快10倍以上
效能遠比受限於摩爾定律的CPU還快
GPGPU (cont.)
HPDS Lab
將多個圖形處理器當成普通處理器使用
 Context Switch以及Thread的Overhead產生遠
比CPU小
 普遍用途(程式運算)

–

Brook:以DirectX/OpenGL將資料當成圖形串流
 門檻高,不易上手
有廠商提供與C語言相容介面的GPGPU SDK
–
–
Nvidia CUDA
ATI CTM,CAI
GPGPU (cont.)
HPDS Lab

nVidia CUDA
–
(Compute Unified Device Architecture)
使用者不需要有圖形處理的知識背景
將GPU視為具有多處理器的超級電腦
– 採用Client-Server運算架構
– 記憶體具有合併存取的特性
– 提供通用資料處理API
 線性代數函式庫
 快速傅立葉轉換函式庫
–
以GPGPU寫程式的難處
HPDS Lab

並非所有程式都可以直接因為GPU而加速
–

只適合Single Instruction Multiple Threading/Data
GPGPU不支援
靜態變數
– 遞迴函式
– 動態配置記憶體
– 函式指標(跳躍點定址)
–

效能受限於硬體規範
使用者仍需知道硬體特性才能真正發揮效能
– 使用者無權得知硬體規範細節
–
CUDA記憶體合併存取
HPDS Lab
Implement with GPGPU
HPDS Lab

作者提出Mars
–
–

便於使用 (使用者可以專心於資料處理)
應該要比CPU實做的還快
與Phoenix比較
Mars特性
HPDS Lab

不使用Lock作為同步
–
–
Lock再GPU相當慢
資料處理再位址無重疊的情況下
為GPU特性製作常用字串處理操作
 Key排序

–
–

key使用CUDA內建的型別,使得可以啟動合併存取能
力
使用bitonic sort
使用者介面
–
–
–
MAP_COUNT 計算切割大小
MAP
REDUCE_COUNT 計算結果大小
Mars系統流程
HPDS Lab
Mars的Workflow
HPDS Lab







準備key/values並且以陣列儲存
初始runtime設定
將key/value放入顯卡記憶體
啟動map操作,並將中間結果放入陣列
如果需要,將key/value 排序
如果需要,啟動GPU的reduce並且產生最後結果
將GPU的結果放回主記憶體
Mars的最佳化技術
HPDS Lab
利用CUDA的合併存取能力
 Thread數目使用32的倍數(最小核心數目)
 使用CUDA內建型別處理可變大小的型別變數

–

達到記憶體對齊與合併存取
Hashing
–
–
–
將key處理為32bit的整數(hash code)
依照Hash code排序
當兩筆資料碰撞,再取出原有的key比較
效能評估
HPDS Lab

作者群利用Mars以及Phoenix實做以下AP
效能評估 (cont.)
HPDS Lab

實驗環境
–
–
–
GPU:G80
 16個多處理器
 一共128核心 (每個核心1.35GHz)
 768 MB 裝置記憶體
 記憶體頻寬34.5GB/s~69.2GB/s
(合併存取啟動
與否)
PCI-E理想頻寬:4GB/s
CPU:Intel Core2 四核心
 每個核心2.4GH
 主記憶體:2GB
 主記憶體頻寬: 5.6GB/s
效能評估 (cont.)
HPDS Lab
Mars於GPU實做字串處理基本函式的比較
 opt與non-opt的差別在於CUDA內建型別使用與
否的差異

效能評估 (cont.)
HPDS Lab

各種應用程式在資料量與效能增進差異
效能評估 (cont.)
HPDS Lab

同樣在CPU的實做,Mars贏過Phoenix的比較表
–
–
Phoenix總是執行Reduce(Mars也許不用)
Mars採取Lock-Free的演算法
效能評估 (cont.)
HPDS Lab

Mars在GPU上贏過CPU實做品的表現
效能評估 (cont.)
HPDS Lab

各部份時間細節
效能評估 -最佳化差異
HPDS Lab

使用GPU合併存取與否-(安排Thread存取順序)
–
不使用Hashing策略
效能評估 -最佳化差異 ( cont. )
HPDS Lab

使用Hashing策略的效能增進圖
–
由於PVC要叫用兩次的MapReduce,因此差異性多過
II
效能評估 -最佳化差異 ( cont. )
HPDS Lab

使用CUDA內建型別
Company name
KUAS
HPDS
http://hpds.ee.kuas.edu.tw/