slides: timegraph: gpu scheduling for real-time multi-tasking...
TRANSCRIPT
加藤真平 計算機アーキテクチャ
計算機アーキテクチャ第11回マルチプロセッサ
本資料は授業用です。無断で転載することを禁じます。
名古屋大学
大学院情報科学研究科
准教授 加藤真平
加藤真平 計算機アーキテクチャ
デスクトップ
ジョブレベル並列性
加藤真平 計算機アーキテクチャ
スーパーコンピュータ
並列処理プログラム
加藤真平 計算機アーキテクチャ
プログラムの並列化
for (i = 0; i < N; i++) {
x[i] = a[i] + b[i];
}
加藤真平 計算機アーキテクチャ
プログラムの並列化
x[0] = a[0] + b[0];
・・・
x[1] = a[1] + b[1]; x[2] = a[2] + b[2]; x[N-1] = a[N-1] + b[N-1];
加藤真平 計算機アーキテクチャ
逐次処理
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
時間
シングルコアの世界・コアの周波数を上げる
for (i = 0; i < N; i++) {
for (j = 0; j < M; j++) {
.
.
.
}
}
繰り返し処理も逐次的にひたすら高速処理する
加藤真平 計算機アーキテクチャ
並列処理
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
時間
シングルコアの世界・コアの周波数を上げる
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
時間
コア数
マルチコアの世界・コアを数個並べる・コアの周波数は上げない・プログラムを並列化する
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
計算ブロック
時間
コア数
メニーコアの世界・コアを数百から数千個並べる・コアの周波数は下げる・プログラムを並列化する
加藤真平 計算機アーキテクチャ
津波シミュレーション(ロスアラモス国立研究所&ワシントン大学)
加藤真平 計算機アーキテクチャ
交通流
核融合プラズマ
津波
気象
加藤真平 計算機アーキテクチャ
共有記憶型マルチプロセッサ(SMP)
Processor Processor Processor・・・
Cache Cache Cache
InterconnectMain Memory I/O
加藤真平 計算機アーキテクチャ
クラスタ型マルチプロセッサ
・・・
Processor
Cache
Main
Memory
Processor
Cache
Main
Memory
Processor
Cache
Main
Memory
Processor
Cache
Main
Memory
Interconnect
加藤真平 計算機アーキテクチャ
マルチコア(チップマルチプロセッサ)
Processor・・・ Cache
Interconnect
Main Memory I/O
Processor
Core
Processor
Core
加藤真平 計算機アーキテクチャ
マルチスレッディング
Processor
・・・
Cache
Interconnect
Main Memory I/O
Thread Thread
加藤真平 計算機アーキテクチャ
マルチスレッディング方式
スレッドA スレッドB スレッドC スレッドD
命令発行スロット
時間
加藤真平 計算機アーキテクチャ
マルチスレッディング方式
粗粒度マルチスレッディング
命令発行スロット
時間
細粒度マルチスレッディング
同時マルチスレッディング
加藤真平 計算機アーキテクチャ
SISD, MIMD, SIMD
• SISD = Single Instruction stream, Single Data stream
• MIMD = Multiple Instruction stream, Multiple Data stream
• SIMD = Single Instruction stream, Multiple Data stream
– データレベル並列性(forループなど)
加藤真平 計算機アーキテクチャ
主流はマルチコア
MemoryL3 Cache
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
高々10個程度のCPUコアが、1つの共有メモリに、均一的にアクセスする。
1つのOSカーネルで済む 開発環境が整っている 並列化の性能が出やすい
ソフトウェア的視点
加藤真平 計算機アーキテクチャ
メニーコアの時代へ
L2 Cache
L1 L1 L1 L1 L1 L1 L1L1
Memory
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
Memory Memory
Memory Memory
加藤真平 計算機アーキテクチャ
Graphics Processing Unit (GPU)
2008 2010 20123000コア
500コア250コア
2014
Tesla FermiKepler
Maxwell
Next
Gen.
C言語
C++Java
5000コア
加藤真平 計算機アーキテクチャ
Graphics Processing Unit (GPU)
Host MemoryL3 Cache
Core
L1
L2
Core
L1
L2
Core
L1
L2
Core
L1
L2
I/Oバス
Host CPU
GPU
加藤真平 計算機アーキテクチャ
GPUによる並列処理
Grid = (2, 2)
Block = (3, 3)
Thread
加藤真平 計算機アーキテクチャ
GPUによる並列処理
加藤真平 計算機アーキテクチャ
GPUによる並列処理
Node = (2, 2)
加藤真平 計算機アーキテクチャ
GPUによる並列処理
Cluster = (3, 3)
加藤真平 計算機アーキテクチャ
CUDAプログラミング
void multiply(double *a, double *b, double *c, int n)
{
double product = 0.0;
int row = blockIdx.y * blockDim.y + threadIdx.y;
int col = blockIdx.x * blockDim.x + threadIdx.x;
int i, idx;
for (i = 0; i < n; i++)
product += a[row * n + i] * b[i * n + col];
c[row * n + col] = product;
}
ほとんどC言語と変わらないが複数のジョブが並列実行していることを意識してプログラミングする必要がある。
加藤真平 計算機アーキテクチャ
CUDAプログラミング
加藤真平 計算機アーキテクチャ
性能トレンド
単精度浮動小数点性能 電力性能
8800 GTX9800 GTX
GTX 285GTX 480
GTX 580
GTX 680
GTX Titan
GTX Titan Black
X7350X7460 X7560
E7-8870E7-8890
0
1000
2000
3000
4000
5000
6000
2006 2008 2010 2012 2014
GF
LO
PS
RELEASE YEAR
Single Precision Performance
NVIDIA GTX
Intel Xeon
8800 GTX 9800 GTX
GTX 285
GTX 480GTX 580
GTX 680
GTX Titan
GTX Titan Black
X7350X7460 X7560
E7-8870E7-8890
0
5
10
15
20
25
2006 2008 2010 2012 2014
GF
LO
PS
/WA
TT
RELEASE YEAR
Performance per Watt
NVIDIA GTX
Intel Xeon
加藤真平 計算機アーキテクチャ
CMD_HtoD CMD_HtoD CMD_LAUNCH CMD_DtoH
GPU
CodeInput
Data
Host Memory
GPU
CodeInput
Data
Device Memory
GPU
CodeInput
Data
Host Memory
GPU
CodeInput
Data
Device Memory
GPU
CodeInput
Data
Host Memory
GPU
Code
Device Memory
GPU
CodeInput
Data
Host Memory
Device Memory
General Purpose Computing on
GPUs (GPGPU)
GPU
CodeOutput
Data
Output
Data
copy
Input
Data
copy
Output
Data
copy
加藤真平 計算機アーキテクチャ
GPGPUの実行
Start
CodeUpload
MemAlloc
DataUpload
DataDownload
EndCPU
I/O
GPUParallel
Execution
Host
Memory
Device
Memory
Copy Copy Copy
加藤真平 計算機アーキテクチャ
10
100
1000
10000
100000
1000000
100 1K 10K 100K 1M
Sim
ula
tio
n t
ime
(m
s)
The number of agents
GPU (simple)
GPU (data optimized)
GPU (fully optimized)
CPU
1000x
GTX 560 Ti (192 cores)
交通流シミュレーションの例
加藤真平 計算機アーキテクチャ
期末試験
• 7月24日4限
–資料の持ち込みなし
• 出題範囲
–本講義で習った全範囲
–教科書(上下巻)
• 出題形式
–必須問題3問
–選択問題2問
加藤真平 計算機アーキテクチャ
レポート
• 「なぜ計算機アーキテクチャが大事なのか」を自分なりに4000~5000字でまとめて提出
–締切:7月23日23時59分
–書式自由(Word、LaTex等)
– [email protected]宛にメールで添付して提出
–件名は「計算機アーキテクチャ講義レポート」としてください
–本文に氏名と学籍番号を記載してください
加藤真平 計算機アーキテクチャ
計算機アーキテクチャの応用(研究紹介)