slides: timegraph: gpu scheduling for real-time multi-tasking...

Post on 20-May-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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等)

– shinpei@ertl.jp宛にメールで添付して提出

–件名は「計算機アーキテクチャ講義レポート」としてください

–本文に氏名と学籍番号を記載してください

加藤真平 計算機アーキテクチャ

計算機アーキテクチャの応用(研究紹介)

top related