演算/メモリ 性能バランスを考慮したマルチコア向けオ

演算/メモリ性能バランスを考慮した
マルチコア向けオンチップメモリ貸与法
○福本 尚人, 井上 弘士,村上 和彰
九州大学
マルチコア・プロセッサ
• 1チップに複数のプロセッサコアを搭載
• 複数コアによる並列処理により高性能化
• 性能だけでなく、消費エネルギーも重要
Cell/B.E.(ソニー/東芝/IBM)
IBM:http://domino.research.ibm.com/comm/res
earch_projects.nsf/pages/multicore.CellBE.html
並列
プログラム
Core
i7 (Intel)
http://ascii.jp/elem/000/000/124/124281/img.html
2
マルチコアにおけるメモリウォール問題
• メモリ性能によるトータル性能の抑制
– 大きな主記憶アクセスレイテンシ
– オフチップメモリバンド幅の不足
Ideal memory
256KB private
memory
1
○
SpeedUp
SpeedUp
10
8
6
4
2
0
プログラム:Barnes
2
3
4 5 6
実行コア数
7
Idealとの差が小さい
8
12
10
8
6
4
2
0
プログラム:Cholesky
Ideal
memory
1
2
256KB private
memory
3 4 5 6 7 8
実行コア数
× コア数に見合う性能が
得られない
3
提案手法の狙い
• 用途に応じてコアを使い分け
– メインコア:並列プログラム実行用
– ヘルパーコア:メモリ性能向上用
• コア同士で協調実行
メイン
コア
コア
メイン
コア
コア
メイン
コア
コア
ヘルパー
コア
コア
メイン
コア
コア
メイン
コア
コア
メイン
コア
コア
ヘルパー
コア
コア
従来の8並列実行
6並列実行+2サポート実行
本手法を実装し、評価した結果、
SpeedUp
– 演算性能とメモリ性能のバランシング
12
10
8
6
4
2
0
プログラム: Cholesky
Ideal
memory
本研究
のねらい
1
2
256KB private
memory
3 4 5 6 7
実行コア数
• 最大、46%の実行時間、32%の消費エネルギーを削減
• ハードウェアコストなし
8
4
発表手順
• マルチコアにおけるメモリウォール問題
• 演算/メモリ性能バランスを考慮したマルチコ
ア向けオンチップメモリ貸与法
– 基本アイディア
– 詳細な実装(ソースコードの自動変換)
• 貸与メモリのデータ割当て決定
• ヘルパーコア数決定
• 評価
• まとめと今後の課題
5
対象マルチコア・プロセッサ
並列
プログラム
コア
SPM
コア
SPM
コア
SPM
コア
SPM
チップ
コア
SPM
コア
SPM
コア
SPM
ソフトウェア制御
オンチップメモリ
オンチップ接続
主記憶
6
マルチコア向けオンチップメモリ貸与法
• メインコア
– 並列プログラムを実行
• ヘルパーコア
– メインコアに自身のメモリを
提供(階層メモリとして
活用される)
– アイドル
• ヘルパーコアを増やすと
○メモリ性能が向上
○消費電力が減少
×演算性能が低下
並列プログラム
メインコア
ヘルパーコア
コア
コア
コア
コア
SPM
SPM
SPM
SPM
Idle
オンチップ接続
ロード
主記憶
メモリ性能改善効果>演算性能低下効果
となるようにヘルパーコア数を決定
7
プログラムの特徴に応じた
コアの使い分け
Speed up
Speedup
10
8
6
4
2
0
プログラム: Barnes
Ideal memory
256KB private
memory
1
2
3 4 5 6
実行コア数
全てメインコア
7
8
12
10
8
6
4
2
0
プログラム: Cholesky
Ideal
memory
1
2
3
4
256KB private
memory
5 6 7 8
実行コア数
メインコア数3
ヘルパーコア数1
コア
コア
コア
コア
コア
コア
コア
コア
SPM
SPM
SPM
SPM
SPM
SPM
SPM
SPM
オンチップ接続
オンチップ接続
○メモリ性能向上による性能向上 大
○従来の全コア実行により高性能化
プログラムの特徴に応じて適切なコアの配分を決定
○演算性能低下による性能低下 小
8
○コアの消費電力の削減
発表手順
• マルチコアにおけるメモリウォール問題
• 演算/メモリ性能バランスを考慮したマルチコ
ア向けオンチップメモリ貸与法
– 基本アイディア
– 詳細な実装(ソースコードの自動変換)
• 貸与メモリのデータ割当て決定
• ヘルパーコア数決定
• 評価
• まとめと今後の課題
9
提案手法の適用手順
コア数1で
事前実行
入力
並列化
ソースコード
DMA転送トレース
逐次処理時間の割合・・・
プロファイ
ル情報
事前
実行
ハード
ウェア
情報
貸与メモリの
データ割当て決定
コア配分決定
貸与メモリ
データ割当て
コア配分
ソースコード生成
メインコア
ソースコード
ヘルパーコア
ソースコード
10
貸与メモリのデータ割当て決定法
• 目標:メインコアの主記憶アクセス回数が最小とな
る貸与メモリのデータ割当ての算出
• 決定手順
1. プロファイル情報を元に各データごとのアクセス回数
を集計
2. アクセス回数の多い順にデータを貸与メモリへ配置
プロファイ
ル情報
DMA転送トレース
アクセス回数
6000
貸与メモリ
データ割当て
4000
2000
1.アクセス
回数の集計
0
アドレス
2.保持する
データの選択
11
ヘルパーコア数決定法
• 目標: 最も高性能となるヘルパーコア数の算出
• 決定手順
1. 性能モデルにプロファイル情報を代入することで
全てのコア配分の実行時間を予測
2. 最も実行時間の短いコア配分を選択
•DMA転送に関する情報
•搭載コア数・・・
プロファイ
ル情報
実行時間
ハードウェア
情報
性能予測
•逐次実行時間の割合
・・・
0.8
0.6
0.4
0.2
0
予測実行時間
コア配分
1:6 2:5 3:4 4:3 5:2 6:1 7:0
メインコア: ヘルパーコア
実行時間の
比較
12
メモリ貸与法適用時にプログラマが行う作業
• 元ソースコードの並列実行部の前後に目印の挿入
• スレッド生成部の修正
• 他は全て自動で適用される
入力
並列化
ソースコード
自動ソースコード変換
プロファイ
ル情報
事前
実行
ハード
貸与メモリの
データ割当て決定
プロファイル情報取得
ウェア
用の関数の挿入 情報
コア配分決定
性能モデルによる
実行時間の予測
アドレス変換処理の挿入
実行コア数の変更
貸与メモリのデータ入替え
貸与メモリ
データ割当て
主記憶アクセス数最
小となる割当て決定
コア配分
ソースコード生成
メインコア
ソースコード
ヘルパーコア
ソースコード
13
発表手順
• マルチコアにおけるメモリウォール問題
• 演算/メモリ性能バランスを考慮したマルチコ
ア向けオンチップメモリ貸与法
– 基本アイディア
– 詳細な実装(ソースコードの自動変換)
• 貸与メモリのデータ割当て決定
• ヘルパーコア数決定
• 評価
• まとめと今後の課題
14
評価環境
• Cell/B.E.の実機(Cell reference set)で評価
• 実行プログラム
– HIMENO, LU (SPLASH-2), FFT (CellSDK), Matrix_mul (CellSDK)
• SPEの実行時間を計測
SPE
SPU
SPU
SPU
SPU
SPU
SPU
SPU
LS
LS
LS
LS
LS
LS
LS
256KB
Element Interconnect Bus (204.8GB/s)
L2$
PPE
MIC
BIC
•7個のSPEに対して、オン
チップメモリ貸与法を適用
•適切なコアの配分の算出法
•性能モデルを用いて予測
(PB-PREDICT)
•事前実行を全パタン行い予測
(PB-MEASURE) 【最適な配分】
25.6GB/s
L1$
PPU
Main
Memory
Off-chip
15
0
0.8
0.6
0.4
0.2
HIMENO(SS) HIMENO (S)
1
LU (256)
LU (512)
3
LU (1024)
最大で46%の実行時間の削減
FFT
0
PB-MEASURE
0
PB-PREDICT
1
BASE
1
PB-MEASURE
0
PB-PREDICT
DMA転送によるストール
BASE
3
PB-MEASURE
2
0
PB-PREDICT
0
BASE
2
PB-MEASURE
1
PB-PREDICT
0
BASE
1
PB-MEASURE
0
PB-PREDICT
0
BASE
0
PB-MEASURE
演算
PB-PREDICT
0
BASE
1
PB-MEASURE
0
PB-PREDICT
1.2
BASE
正規化実行時間
実行時間
メインコア数6
ヘルパーコア数1
アドレス変換
1
Matrix_mul
16
実行時間
2
3
0
1
1
0
0
PB-PREDICT
1
2
3
BASE
1
PB-MEASURE
0.8
PB-PREDICT
1
0
PB-MEASURE
0
PB-MEASURE
0
PB-PREDICT
0
BASE
1
0
PB-MEASURE
0
0
PB-PREDICT
0
1
0.6
0.4
HIMENO(SS) HIMENO (S)
LU (256)
LU (512)
LU (1024)
FFT
PB-MEASURE
BASE
BASE
BASE
PB-MEASURE
PB-PREDICT
BASE
PB-MEASURE
0
PB-PREDICT
0.2
BASE
正規化実行時間
1.2
アドレス変換
DMA転送によるストール
PB-PREDICT
演算
メインコア数6
ヘルパーコア数1
Matrix_mul
主記憶アクセス削減によるストール時間の削減
>
従来実行が最も性能が高いと予測した場合
メインコア減少による演算時間増加+アドレス変換時間増加
17
実行時間
2
3
0
1
1
0
0
PB-PREDICT
1
2
3
BASE
1
PB-MEASURE
0.8
PB-PREDICT
1
0
PB-MEASURE
0
PB-MEASURE
0
PB-PREDICT
0
BASE
1
0
PB-MEASURE
0
0
PB-PREDICT
0
1
0.6
0.4
HIMENO(SS) HIMENO (S)
LU (256)
LU (512)
LU (1024)
FFT
PB-MEASURE
BASE
BASE
BASE
PB-MEASURE
PB-PREDICT
BASE
PB-MEASURE
0
PB-PREDICT
0.2
BASE
正規化実行時間
1.2
アドレス変換
DMA転送によるストール
PB-PREDICT
演算
メインコア数6
ヘルパーコア数1
Matrix_mul
ヘルパーコア数を正しく予測できていないが、
最適なヘルパーコア数を予測することで性能向上
従来実行と比較して性能は低下していない
18
0
0.8
0.6
0.4
0.2
HIMENO(SS) HIMENO (S)
1
LU (256)
LU (512)
3
LU (1024)
最大で46%の実行時間の削減
FFT
0
PB-MEASURE
0
PB-PREDICT
1
BASE
1
PB-MEASURE
0
PB-PREDICT
DMA転送によるストール
BASE
3
PB-MEASURE
2
0
PB-PREDICT
0
BASE
2
PB-MEASURE
1
PB-PREDICT
0
BASE
1
PB-MEASURE
0
PB-PREDICT
0
BASE
0
PB-MEASURE
演算
PB-PREDICT
0
BASE
1
PB-MEASURE
0
PB-PREDICT
1.2
BASE
正規化実行時間
実行時間
メインコア数6
ヘルパーコア数1
アドレス変換
1
Matrix_mul
19
消費エネルギー評価方法
• 消費エネルギーモデルを用いて評価
– SPU, LS, 主記憶の動的消費エネルギー
SPE
SPU
SPU
SPU
SPU
SPU
SPU
SPU
LS
LS
LS
LS
LS
LS
LS
Pact  Tact  Pstall  Tstall
256KB
Element Interconnect Bus (204.8GB/s)
L2$
PPE
MIC
BIC
25.6GB/s
L1$
PPU
Main
Memory
消費電力*実行時間
Pact :非ストール時の消費電力
Pstall :ストール時の消費電力
Tact :非ストール時の実行時間
Tstall :ストール時間
• Pstall    Pact とする(α=0~1)
•ヘルパーコアの Tact は読込み
完了までの時間とする
Off-chip
アクセス回数*アクセス当たりの消費エネルギー
•メモリ貸与法の適用により、
•動作コア数減少、ストール時間削減→SPUの消費エネルギー削減
(ストール時の消費電力が大きいほど、削減効果大)
•主記憶アクセスがLS間転送へ→DMA転送の消費エネルギー削減
20
αに対する消費エネルギーの変化
(α: ストール時の消費電力の割合/通常実行時の消費電力)
性能向上が大きいプログ
ラムではαに対する変化が
大きい
60%
消費エネルギー削減率
50%
40%
HIMENO (SS)
30%
HIMENO (S)
20%
LU (256)
10%
LU (512)
LU (1024)
0%
-10%
-20%
-30%
0
0.2
0.4
0.6
0.8
1
FFT
Matrix_mul
ヘルパーコア実行ならびに
アドレス変換による処理の増加
α
>DMA転送のエネルギー削減
α=1のとき、最大52%の消費エネルギー削減
α=0のとき、最大12%の消費エネルギー削減
21
消費エネルギー (α=0.4)
2
2
PB-MEASURE
1
PB-PREDICT
1
PB-MEASURE
1
0.8
0
0
3
3
1
1
0
0
PB-PREDICT
0
BASE
0
PB-MEASURE
0
PB-PREDICT
1
0
PB-MEASURE
0
0
PB-PREDICT
0
主記憶
LS
PB-PREDICT
1.2
1
0.6
0.4
0.2
HIMENO(SS)HIMENO (S) LU (256)
LU (512)
LU (1024)
FFT
PB-MEASURE
BASE
BASE
BASE
BASE
PB-MEASURE
PB-PREDICT
BASE
PB-MEASURE
PB-PREDICT
0
BASE
正規化消費エネルギー
SPU
Matrix_mul
実行コア数減少、実行時間削減→SPUの消費エネルギー削減
最大で32%の消費エネルギーの削減
主記憶アクセスがLS間転送に置き換え→DMA転送の消費エネルギー削減
22
まとめと今後の課題
• プログラムの特徴に応じて演算性能とメモリ性能の
バランスをとるマルチコア向けオンチップメモリ貸与法
– 適切なヘルパーコア数と貸与メモリのデータ割当てを決定
– 自動ソースコード変換により実装
– 最大で、46%の実行時間の削減と32%の消費エネルギーの
削減を達成
• 今後の課題
– 詳細な消費エネルギー評価
• コア、オンチップメモリ、主記憶のエネルギー比を変更
– 消費エネルギーを考慮したヘルパーコア数決定法の考案
23
Backup slides
主記憶アクセス削減率
主記憶アクセス削減率
PB-PREDICT
PB-MEASURE
100%
80%
1
60%
40%
1
2 2
01
20%
33
00
11
0
1
0%
SS
S
HIMENO
256
512
LU
1024
FFT Matrix_mul
25
使用メモリ量
26
1
0
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
BASE
PB-PREDICT
PB-MEASURE
THROTTLE
正規化実行時間
既存研究との比較
演算
0 0
1
1
DMA転送によるストール
0 0 0 0 0
0.8
0.6
HIMENO(SS) HIMENO (S)
0 0
LU (256)
LU (512)
アドレス変換
1.2
0 0 3 3 0 0 1 1 0 0 0 1 0
2 2
1 1
0.4
0.2
LU (1024)
FFT
Matrix_mul
27