演算/メモリ性能バランスを考慮したCell/B.E.向け オ

演算/メモリ性能バランスを考慮した
Cell/B.E.向け オンチップ・メモリ
活用法とその評価
九州大学
○林 徹生(現ルネサス)
福本 尚人 今里 賢一
井上 弘士 村上 和彰
1
発表手順


背景・目的
演算/メモリ性能バランシング




1月のARC/EMB
からの差分
プロファイルに基づくコア配分決定方法
性能評価



概要
Cell/B.E.への実装
姫野ベンチマーク
Susan@MiBench
おわりに
2
チップマルチプロセッサ (CMP)の普及

スレッドレベル並列性(TLP)により性能向上

汎用



特定用途





2コアが主流
4コアのプロセッサ(ハイエンド)
8コア:Cell(Sony,Toshiba,IBM)、Niagara2(Sun)
16コア:Raw(MIT)
80コア:Intelのプロセッサ
96コア:CSX600(Clear Speed)
メニーコアを想定した研究
3
メモリ・ウォール問題の深刻化


On-chip
Core 0 Core 1
Mem
主記憶へのアクセス時間が計算機
の性能ボトルネックとなることが多い
階層メモリ構造(オンチップ・メモリの
利用)により影響を軽減
Core N
・・・
Mem
Mem

Network
資源競合
データ競合主記憶
CMPではNコアに対応


データ競合
(物理的な)資源競合
Off-chip
4
メモリ性能の影響
Speedup
10
性能差は拡大
8
L2ミスなし
6
4
L2=2MBで実行
2
0
1
2
3
4
5
6
性能向上は
次第に飽和
7
8
Number of Threads(使用コア数)
SPLASH2ベンチマークよりFMMを抜粋
5
本研究の狙い
【目的】 CMPの実効性能向上

あるプログラムを全コアを用いて高速に処理
【動機】 コア数増加に伴う演算性能向上と、メモリ性能
改善による性能向上の影響の差異

コア数の増加に伴いメモリ性能の影響増大
【方法】 全コアを演算に割り当てず、一部のコアをメモ
リ性能向上用として利用


あえて演算性能を低下、代わりにメモリ性能向上
最大14.5%の性能向上を達成
6
発表手順


背景・目的
演算/メモリ性能バランシング




プロファイルに基づくコア配分決定方法
性能評価



概要
Cell/B.E.への実装
姫野ベンチマーク
Susan@MiBench
おわりに
7
Speedup
コアの割り当てによる性能向上
~提案方式のコンセプト~
9
8
7
6
5
4
3
2
1
0
7コア「演算用」、
1コア「メモリ性能向上用」
>
8コア「演算用」(従来手法)
従来の並列処理
1
2
3
4
5
6
7
8
Number of Threads
8
計算コア/メモリ提供コアのバランス
• メモリ性能改善
の可能性
• データ/資源競
合の減少?
並列化さ
れたプロ
グラムを
実行
計算コア
SPU
メモリ提供コア
SPU
・・
LS
SPU
SPU
LS
LS
・・
LS
プログラ
ムの実行
は行わな
い
計算コアに
LSを提供
EIB
To PPE
To MIC
演算性能低下
(コアあたりの
負担増加)
To BIC
9
計算コア/メモリ提供コアのバランス
メモリ性能重視
並列化さ
れたプロ
グラムを
実行
計算性能重視
計算コア
SPU
メモリ提供コア
SPU
・・
LS
SPU
SPU
LS
LS
・・
LS
計算コアに
LSを提供
↓
階層メモリ
として利用
EIB
To PPE
To MIC
プログラ
ムの実行
は行わな
い
To BIC
10
Cell/B.E.への実装
~メモリ貸与コア~

階層メモリとして利用
→共有データを多くマッピングする必要性(非キャッシュ)
(ループ内の)共有データ
の先頭アドレス(Base)
0x00
・・・
PPE
・・・
プログラム
静的領域
ヒープ領域
0xFF..
・・・
マッピング
メモリ提供コア
LS 1
LS 2
LS 3
11
Cell/B.E.への実装
~計算コア~

アドレスを判別してメモリアクセス

メモリ提供コアのLS or 主記憶
Step1: メモリ提供コア数(Naid)分の配列確保
Step2: 配列[i] = LS[i]アドレス+0x6000
Step3: offset = Baseからのアドレス距離
・ offset > 224(KB)* Naid 主記憶アクセス
・ それ以外 LS[offset/224(KB)]へアクセス
プログラム(24KB)
主記憶のデータ
(224KB)
スタック(8KB)
12
発表手順


背景・目的
演算/メモリ性能バランシング




プロファイルに基づくコア配分決定方法
性能評価



概要
Cell/B.E.への実装
姫野ベンチマーク
Susan@MiBench
おわりに
13
プロファイルの事前取得

静的に最適なコア分配を知ることは困難


ターゲットプログラム+実際の入力データ
N(コア数)パタンの事前実行
【対策1】 1回あたりの試行時間を短縮

実際の入力よりも小サイズの入力データを使用
【対策2】 事前実行のパタン数を削減

サンプリングにより代表とするパタンのみ事前実行
14
二次曲線を利用したコア分配決定方法

1
1 p
理想的な並列処理(p:並列化可能な割合)
SpeedUp 1/1  p  p / N 

現実の並列処理
極限値が一意に決定
コア数N
最適なコア分配(計算コア数)を決定
二次曲線
• 計算コア数x
• 従来実行方式に対する正規化性能を y を利用
15
二次曲線を利用したコア分配決定方法
 x12
 2
 x2
 x2
 3
x1
x2
x3
1 a   y1 
   
1 b    y2 
1 c   y3 
逆行列を用いて
a,b,cを求める
頂点座標(X,Y)
曲線
曲線
①Y<1の時
従来の全コア実行
②X<Nコアの時
従来の全コア実行
計算コア1個を最適と予測
③Xを四捨五入した値を
最適な計算コア数と予測
16
提案方式でのプログラム実行フロー(1/2)

コンパイル時にテスト実行を行い
プロファイル情報を取得
小サイズ
入力データ
ターゲット
プログラム
コンパイラ
バイナリ
プロファイル
17
提案方式でのプログラム実行フロー(2/2)

プロファイル情報を基に計算コア数を
決定、再コンパイルしてバイナリを実行
プロファイル
ターゲット
プログラム
実際の
入力データ
目的の処
理
コンパイラ
バイナリ
18
発表手順


背景・目的
演算/メモリ性能バランシング




プロファイルに基づくコア配分決定方法
性能評価



概要
Cell/B.E.への実装
姫野ベンチマーク
Susan@MiBench
おわりに
19
評価

評価環境

CRS(実機) +Time関数
 Cellプロセッサを搭載



7コアが計算コアまたはメモリ提供コアとして動作
10回測定、最大/最小値を除いた平均値
評価対象モデル



CONV:従来の全コア実行
PB-BEST:最適な計算コア数が既知
PB-Predict:最適な計算コア数を事前に予測
 1ランク小規模入力データ/計算コア【2,4,6】をサンプル
20
姫野ベンチマーク
13%の性能改善
1.15
最適な計算コア数を正確に予測
CONV
PB-BEST
PB-Predict
正規化性能
1.1
1.05
1
0.95
0.9
SS
S
M
入力データサイズ
21
姫野ベンチマーク
1.15
CONV
PB-BEST
PB-Predict
正規化性能
1.1
1.05
計算コア数=N(全コア)を予測
1
0.95
0.9
SS
S
M
CONVと同性能=
入力データサイズ
従来手法(全コア実行)が効果的
22
Susan-Edge
1.8
CONV
正規化性能
1.2
PB-Predict
大幅な性能改善
1.6
1.4
PB-BEST
CONVと同性能=
全コア実行が効果的
1
0.8
0.6
0.4
0.2
0
エッジ強調
原画像重ね
トータル
23
Susan-Edge
1.8
CONV
PB-BEST
1.6
正規化性能
1.4
1.2
PB-Predict
最適ではないが、
それに近い高性能
従来の並列処理
が有効と判別
1
0.8
0.6
0.4
0.2
0
エッジ強調
原画像重ね
トータル
24
Susan-Edge
1.8
CONV
PB-BEST
PB-Predict
1.6
正規化性能
1.4
1.2
1
0.8
0.6
0.4
0.2
0
・提案手法によって
17%性能改善の余地
・計算コア数予測によ
り14.5%性能向上
エッジ強調
原画像重ね
トータル
25
発表手順


背景・目的
演算/メモリ性能バランシング




プロファイルに基づくコア配分決定方法
性能評価



概要
Cell/B.E.への実装
姫野ベンチマーク
Susan@MiBench
おわりに
26
まとめ

新しい並列処理モデルを提案


コアを「演算用」と「メモリ性能向上用」とに分配
プロファイルに基づくコア配分決定方法を提案



最大14.5%の性能向上
従来の並列処理が有効な場合も判別
今後の課題



コア分配決定方法の精度向上
多くのベンチマークプログラムの評価
低消費エネルギー化への応用
27
ご清聴ありがとうございました
28
見た目上の主記憶アクセス・レイテ
ンシの変化
アクセス先
DMA命令
主記憶
AidコアのSPM
Read
↑オーバーヘッド
↓削減
Write
↑オーバーヘッド
↑オーバーヘッド

書込みはメモリ・コントローラへのリクエストによる完了を
想定



アクセス先 (主記憶/Aidコア)に関わらず、アクセス先判別
のためのオーバーヘッドが発生
Aidコアでのデータヒット率がメモリ性能向上の鍵
小オーバーヘッドでの実現が必要
29
演算処理
演算
演算
offset
A, B
offset
時間
DMA転送
主記憶アクセス
A = Mem [base +offset ]
B = Mem [base2+offset ]
30
(a)
レイテンシ
隠蔽可能
ループ・イタレーション(i)の処理
(i-1)の書込み
(i+1)の読込みA (i+1)の読込みB
時間
(b) レイテンシ
隠蔽不可
ループ・イタレーション(i)の処理
(i-1)の書込み
(i+1)の読込みA (i+1)の読込みB
31
評価

評価目的
 提案手法の効果の有無を調査

評価環境
 Cellプロセッサ(実機)+Time関数
 10回測定、最大値・最小値を除いた平均値を選出
 DMAキャッシュをウォームアップ

評価対象プログラム
 姫野ベンチマーク(SSサイズ、Sサイズ、Mサイズ)
 Susan-Edge (large input)
 コンパイルオプション:-O3

評価項目
 実行性能 (実行時間の逆数)
32
プログラム実装方針

並列処理方法
○処理分散(各コアは同じプログラムを処理)
×機能分散(各コアは異なるプログラムを処理)

負荷分散



粗粒度の並列処理
多重ループの最外ループをコア数Nで分割
コードチューニング

最内ループのデータをバッファリング
33
姫野ベンチマーク

3次元データ + 4次元データ(更新なし)を使用
k
for(i)
for(j)
for(k)
array[i][j][k]の更新に隣接
する配列の要素を使用
i
end for(k)
end for(j)
end for(i)
j
iのループを並列化
34
姫野ベンチでのローカル容量

(k+3)*34*4(Byte)
Input
i×j×l
ローカル容量
SS
33×33×65
9KB
S
65×65×129
17.5KB
M
129×129×257
34.5KB
35
Susanの逐次処理部分

画素によって、前の処理に移動


(ライン単位の)バッファリングが無駄になることも
書き戻す時は画素(バイト)単位
x-2
y-1
x-1
y-1
条件判定
画像(pgmファイル)
36
参考文献

D.J-Gonzalez et al. “Performance Analysis of Cell
Broadband Engine for High Memory Bandwidth
Applications” ISPASS 2007
*各SPEは同じアドレス
にアクセス
4-2-8-1
4-8-2-1
4-8-2-1
37