33
加藤真平 計算機アーキテクチャ 計算機アーキテクチャ第11マルチプロセッサ 本資料は授業用です。無断で転載することを禁じます。 名古屋大学 大学院情報科学研究科 准教授 加藤真平

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

計算機アーキテクチャ第11回マルチプロセッサ

本資料は授業用です。無断で転載することを禁じます。

名古屋大学

大学院情報科学研究科

准教授 加藤真平

Page 2: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

デスクトップ

ジョブレベル並列性

Page 3: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

スーパーコンピュータ

並列処理プログラム

Page 4: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

プログラムの並列化

for (i = 0; i < N; i++) {

x[i] = a[i] + b[i];

}

Page 5: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

プログラムの並列化

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];

Page 6: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

逐次処理

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

時間

シングルコアの世界・コアの周波数を上げる

for (i = 0; i < N; i++) {

for (j = 0; j < M; j++) {

.

.

.

}

}

繰り返し処理も逐次的にひたすら高速処理する

Page 7: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

並列処理

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

時間

シングルコアの世界・コアの周波数を上げる

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

時間

コア数

マルチコアの世界・コアを数個並べる・コアの周波数は上げない・プログラムを並列化する

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

計算ブロック

時間

コア数

メニーコアの世界・コアを数百から数千個並べる・コアの周波数は下げる・プログラムを並列化する

Page 8: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

津波シミュレーション(ロスアラモス国立研究所&ワシントン大学)

Page 9: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

交通流

核融合プラズマ

津波

気象

Page 10: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

共有記憶型マルチプロセッサ(SMP)

Processor Processor Processor・・・

Cache Cache Cache

InterconnectMain Memory I/O

Page 11: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

クラスタ型マルチプロセッサ

・・・

Processor

Cache

Main

Memory

Processor

Cache

Main

Memory

Processor

Cache

Main

Memory

Processor

Cache

Main

Memory

Interconnect

Page 12: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

マルチコア(チップマルチプロセッサ)

Processor・・・ Cache

Interconnect

Main Memory I/O

Processor

Core

Processor

Core

Page 13: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

マルチスレッディング

Processor

・・・

Cache

Interconnect

Main Memory I/O

Thread Thread

Page 14: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

マルチスレッディング方式

スレッドA スレッドB スレッドC スレッドD

命令発行スロット

時間

Page 15: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

マルチスレッディング方式

粗粒度マルチスレッディング

命令発行スロット

時間

細粒度マルチスレッディング

同時マルチスレッディング

Page 16: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

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ループなど)

Page 17: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

主流はマルチコア

MemoryL3 Cache

Core

L1

L2

Core

L1

L2

Core

L1

L2

Core

L1

L2

高々10個程度のCPUコアが、1つの共有メモリに、均一的にアクセスする。

1つのOSカーネルで済む 開発環境が整っている 並列化の性能が出やすい

ソフトウェア的視点

Page 18: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

メニーコアの時代へ

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

Page 19: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

Graphics Processing Unit (GPU)

2008 2010 20123000コア

500コア250コア

2014

Tesla FermiKepler

Maxwell

Next

Gen.

C言語

C++Java

5000コア

Page 20: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · 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

Page 21: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

GPUによる並列処理

Grid = (2, 2)

Block = (3, 3)

Thread

Page 22: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

GPUによる並列処理

Page 23: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

GPUによる並列処理

Node = (2, 2)

Page 24: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

GPUによる並列処理

Cluster = (3, 3)

Page 25: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

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言語と変わらないが複数のジョブが並列実行していることを意識してプログラミングする必要がある。

Page 26: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

CUDAプログラミング

Page 27: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

性能トレンド

単精度浮動小数点性能 電力性能

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

Page 28: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

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

Page 29: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

GPGPUの実行

Start

CodeUpload

MemAlloc

DataUpload

DataDownload

EndCPU

I/O

GPUParallel

Execution

Host

Memory

Device

Memory

Copy Copy Copy

Page 30: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

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)

交通流シミュレーションの例

Page 31: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

期末試験

• 7月24日4限

–資料の持ち込みなし

• 出題範囲

–本講義で習った全範囲

–教科書(上下巻)

• 出題形式

–必須問題3問

–選択問題2問

Page 32: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

レポート

• 「なぜ計算機アーキテクチャが大事なのか」を自分なりに4000~5000字でまとめて提出

–締切:7月23日23時59分

–書式自由(Word、LaTex等)

[email protected]宛にメールで添付して提出

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

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

Page 33: Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking ...shinpei/class/2015/arch/slides/arch_0709_multiprocess… · Maxwell Next Gen. C言語 C++ Java 5000コア . 加藤真平計算機アーキテクチャ

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

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