HPDS Lab Introduction ( cont. )

Download Report

Transcript HPDS Lab Introduction ( cont. )

KUAS
HPDS
Company name
Preliminary Evaluation
of Dynamic Load
Balancing
Using Loop Re-partitioning on Omni/SCASH
http://hpds.ee.kuas.edu.tw/
Author:
Yoshiaki Sakae
Satoshi Matsuoka
Mitsuhisa Sato
Hiroshi Harada
CCGRID 03
1
Abstract
HPDS Lab

使用運算叢集已經成為大量運算的一個解法,然而
運算叢集會碰上運算資源相異的問題
–

(不同的硬體架構、不同的資源量、運算效能不同,即使
運算資源相同,多使 用者的情況仍會造成運算資源無法
達成平衡),
本篇主要談及運算效能不同造成效能不均的問題,
作者提出以效能監控以及迴圈重新配置的方法來達
成 Dynamic Load Balancing。
CCGRID 03
2
Introduction (cont.)
HPDS Lab

OpenMP
–
一個期待programmer可以輕易上手的MultiProcessing SPEC.
以Directive(指令)跟Clause(相對參數)附加在原始碼,使得程式
可以被平行處理。
–
Ex:
–
int array[1024]; // shared global variable.
void somefunc(){
int sharedVar = 0;
#pragma omp parallel numthreads(32)
{
int i; // private variable.
#pragma omp for
for(i=0; i<1024; ++i)
array[ i ] = i;
}
}
CCGRID 03
3
Introduction (cont.)
HPDS Lab

Atomic
–

Barrier
–

指定平行區域內各個thread的不同任務,一個section只有一個thread執行。
Single
–

被修飾的程式碼會被多個Thread執行
sections
–

修飾的程式碼Thread必須循序執行。
Parallel
–

讓該區域只有Master Thread可以執行。
ordered
–

切割for迴圈給平行區間的Thread
Master
–

讓所有Thread可以在這個敘述之後看到同樣的值
for
–

讓修飾的程式碼同一時間只有一個Thread
flush
–

同步化所有的Thread,讓平行區間的Thread在一個地方暫停,直到所有Thread到達Barrier區域
Critical
–

讓一個記憶體存取的動作為atomic expression(盡可能替換為處理器直接的atomic op)
讓修飾的區域只有一個thread執行。(不一定是master)
Threadprivate
–
讓全域變數為每個thread所獨立擁有。(不共享)
CCGRID 03
4
Introduction (cont.)
HPDS Lab

Omni OpenMP Compiler
–
一個OpenMP的Open Source implementation,將
原始碼轉為Xobject(抽象資料的Syntax Tree,描述節
點型別、資料內容與符號,可以用Java Object直接對
應),使得相當容易轉換。
CCGRID 03
5
Introduction ( cont. )
HPDS Lab
CCGRID 03
6
Introduction ( cont. )
HPDS Lab

Additional Handling
–

已知global variable在原本只有在單node上, 由一個process內
共享資源並且在同一個記憶體空間。因此對於多個processes(不
論是不是多節點)來說,這個global memory仍然是private的,
不具有共享的特性。
為了要讓全域變數可以在各個節點共享,必須作以下的事
情
–
–
–
1.將global variable改為指標
2.為每個(具有讀寫性質的)global variable產生初始化函式,動作
即是為指標配置記憶體並初始化。(將初始化的expression放到函
式內)
3.重寫所有expression,使得有參考到全域變數的地方全變成指
標的參考。(dereference the pointer)
CCGRID 03
7
Introduction ( cont. )
HPDS Lab

SCASH
–
以分頁為單位的分散系統共享記憶體系統,使用作業系
統的memory protection製作。採用Eager Release
作為Consistency Protocol。每次的記憶體一致性維護
的地方是在barrier的地方。
CCGRID 03
8
Load Imbalance
HPDS Lab
應用程式本身沒有作到load balance
 各個節點使用者情形(使用者數量)
 應用程式跑在運算能力相異的多個叢集

CCGRID 03
9
Solving Load Imbalance
HPDS Lab

已知在分散系統上資料與運算單元的區域性會影響效能,因此已經有
些放置資料的技巧有發表了,比如 :
1.在迴圈一開始的地方放置一些提前準備資料的迴圈
– 2.提示資料與thread的存取關係。
– 3.藉由directive來描述資料放置方式
–


但是這些都只能靜態指定,也就是他不會隨著執行期的資訊而改變,
比方說他無法得知執行期間最常被存取資料的資訊。
為了達成執行期調整,作者延伸Openmp的排程指令,提出迴圈
profile以及動態重新分配的的方法。
–

#omp parallel for schedule(profiled[ , chunk_size [,eval_size [,
eval_skip ]]])
當使用profiled的排程規則,每個thread會執行eval_skip次的迴圈,
每次的效能評估的資訊都會給下一輪的迴圈使用,在每次的執行都會
評估效能,調整迴圈要執行的次數為chunk_size的整數倍。
CCGRID 03
10
Solving Load Imbalance ( cont. )
HPDS Lab
• 轉換結果
CCGRID 03
11
Evaluation
HPDS Lab

Benchmark:
–
EP
使用蒙地卡羅方法隨機處理2n個亂數,每點的資料
只相依於鄰近節點,分享情況不大,可以測量乾淨的
微調與平行情形。
CG
 隨機地使用反矩陣運算找出鬆散矩陣對稱點的
eigenvalue,每個子序列迴圈(ompFor切割迴圈)
存取共享資源頻繁,可以量出data locality對效能
的影響。

–
CCGRID 03
12
Evaluation ( cont. )
HPDS Lab
• Environment:
CCGRID 03
13
Evaluation ( cont. )
HPDS Lab
• 在同質叢集的量測結果:
– Dynamic較慢,因為每次迴圈計算chunk size
需要存取遠端節點資訊。
– 可以看到profiled幾乎沒有overhead
CCGRID 03
14
Evaluation ( cont. )
HPDS Lab
• 異質叢集測量結果:
– 不指定chunk size
– EP 使用1 Celeron +
PentiumIII
• 因為迴圈比較小,使得
dynamic在這時候比
static適用。
• 進行profiled的時候,迴
圈會因為profile的關係,
被動態調整得比較大
– 凸顯chunk size比率的配
置確實影響效能。
CCGRID 03
15
Evaluation ( cont. )
HPDS Lab
• CG不指定ChunkSize
• 迴圈重新切割會產
生大量的parallel for,
迴圈資料初始化會
變多。
• 在這裡顯示出profile
最差的情況
CCGRID 03
16
Discussion
HPDS Lab
• Profile對資料區域性
的影響
• L2Cache使用PAPI量
測
– PAPI(存取硬體效能
資訊的API)
CCGRID 03
17
Discussion
HPDS Lab
雖然miss rate相似,但profile的SCASH的page
fault很大,因為profile會改變迴圈次數,進行
profile的時候要存取遠端與記憶體同步。大量的
遠端存取造成效能下降。
 因為目前的分享記憶體沒有分頁轉移,因此預先量
測好的CPU效能會被遠端存取拖累。

–
效能下降又造成下一次的再度切割,不僅使得profile失
效,也產生大量無謂的barrier
CCGRID 03
18
Future Work
HPDS Lab

期待製作基於Page Reference Count的Page
Migration
–
–
–
因為沒有辦法直接使用硬體支援的Page Reference
Count
只能假設迴圈存取的記憶體次數不會改變
使用延伸的directive告訴compiler哪個資料最常被存
取。(Programmer主動提示),期待以編譯器技術減少
page fault次數。
CCGRID 03
19
Company name
KUAS
HPDS
http://hpds.ee.kuas.edu.tw/
CCGRID 03
20