21
Akira Naruse, Senior Developer Technology Engineer GPUコンピューティング最新情報 MaxwellアーキテクチャとCUDA 7.5

1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

Embed Size (px)

Citation preview

Page 1: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

Akira Naruse, Senior Developer Technology Engineer

GPUコンピューティング最新情報~ MaxwellアーキテクチャとCUDA 7.5 ~

Page 2: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

GPUロードマップ (アーキテクチャ)電力あたり性能

2012 20142008 2010 2016

Tesla FermiKepler

Maxwell

PascalMixed Precision3D MemoryNVLink

Page 3: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

Pascal: 次世代GPUMixed Precision 3D Memory

NVLinkUnified Memory

FP16, FP32, FP64

大容量(16GB)、高バンド幅(~1 TB/s)

高バンド幅(80 GB/s)

POWER CPUとの接続、GPU間の接続 統合された単一のメモリ空間

Page 4: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

Maxwell: 最新世代GPU

Pascalのベースとなるアーキテクチャ

Pascal ≒ Maxwell + Mixed Precision + 3D Memory + NVLINK

ストリーム・マルチプロセッサ、KeplerからMaxwellで一新

Kepler

(cc30)

Kepler

(cc35)

Maxwell

(cc52)

Pascal

FP16 〇

FP32 (単精度) 〇 〇 〇 〇

FP64 (倍精度) 〇 〇

Page 5: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

SMM: Maxwell ストリーム・マルチプロセッサ

Kepler

(SMX)

Maxwell

(SMM)

Page 6: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

SMM: Maxwell ストリーム・マルチプロセッサ

より効率重視のアーキテクチャ

Kepler(SMX)との違い

命令スケジューリングの改善 (128 CUDA core, 4モジュール構成)

命令latencyの短縮

最大スレッドブロック数増

共有メモリサイズ増

共有メモリAtomicsの高速化

データパスの変更

Kepler(SMX) Maxwell(SMM)

CONTROL CONTROL

CONTROL

CONTROL

CONTROL

192 cores

32 32

32 32

Page 7: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

スペック比較

Kepler

Tesla K40

Maxwell

Quadro M6000

CUDAコア 2,880 3,072

SM数 15 24

最大スレッドブロック数(/SM) 16 32

共有メモリ(/SM) 48 KB 96 KB

L2サイズ 1.5 MB 3 MB

TFLOPS(単精度) 4.3 6.1

メモリ帯域 288 GB/s 317 GB/s

TDP 235 W 250 W

Page 8: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

共有メモリAtomicsの高速化

Kepler: グローバルメモリのAtomicsを高速化

Maxwell: 更に、共有メモリのAtomicsを高速化32-bit integer operation

32/64-bit compare-and-swap(CAS)

事例: ヒストグラム画像: Full HD(1920x1080), 8-bit(256 BIN), 1チャネル

1-phaseアルゴリズム

1) グローバル

2) 共有メモリ+グローバル

3) 共有メモリ (バンク競合無し)+グローバル

Page 9: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

共有メモリAtomicsの効果 (ヒストグラム)

10

100

1,000

10,000

0% 25% 50% 75% 100% 0% 25% 50% 75% 100%

Kepler(Tesla K40)

Maxwell(Quadro M6000)

1) グローバル

2) 共有メモリ+グローバル

3) 共有メモリ(バンク競合無し)

+ グローバル

画素値の偏り

実行時間

(use

c)

Page 10: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

データパスの変更

L2

Smem

L1Tex(RO)

CUDA cores

Kepler(SMX) Maxwell(SMM)

L2

SmemUnified

L1 and Tex

CUDA coresL1とTexを統合、

Smemを分離

Page 11: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

CUDAロードマップ

20152014

CUDA 6.0 (2014/4)

• Maxwell

• Unified Memory

• XT Libraries

• GPUDirect RDMA

CUDA 6.5 (2014/8)

• ARM64

• cuFFT Callbacks

• CUDA Fortran Debug

CUDA 7.0 (2015/3)

• POWER8

• C++11

• Thrust 1.8

• cuSOLVER

• Runtime Compilation

• Multi-GPU MPS

Page 12: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

CUDA 7.5 (2015/9)

Fp16ストレージ

GPUメモリ上に最大2倍のデータセット

Deep Learningに最適

cuSPARSE

密行列 x 疎ベクトル

自然言語処理を加速

命令レベル・プロファイリング

性能ボトルネックをピンポイントで特定

Page 13: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

FP16ストレージ

FP32と比べて, 2倍のデータをGPUメモリに搭載可能, メモリバンド幅要求が半分

cuda_fp16.h

FP16データ型: half, half2

IEEE 754

範囲: 6*10-8 ~ 6*104

FP16/FP32変換: half2float(), float2half()

cublasSgemmEx()FP16対応の行列積 (演算はFP32)

符号部(1 bit)

指数部(5 bit)

仮数部(10 bit)

Page 14: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

FP16ストレージの効果

事例: 画像フィルター (5x5コンボリューション)画像データ型にFP16を使用

データのロード・ストアのときにFP16/FP32変換

畳み込み演算はFP32を使用

GFLOPS実効メモリバンド(GB/s)

FP32 1,180 204 (64%)

FP16 1,716 164 (51%)1.45x

メモリバンド幅ネック

Quadro M6000

Page 15: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

FP16計算 (Tegra X1 only)

halfとhalf2の基本的な演算

cublasHgemm() … FP16の行列積

(math.hはまだフルサポートではない: sin, log等)

Page 16: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

cuSPARSE: 密行列 x 疎ベクトル

自然言語処理向け

cusparse<T>gemvi()

y = α ∗ op(A)∗x + β∗y

-

2

-

-

1

y1

y2

y3

α + βy1

y2

y3

A11

A21

A31

A12

A22

A32

A13

A23

A33

A14

A24

A34

A15

A25

A35

密行列密ベクトル 疎ベクトル

(例) テキスト内の単語の出現頻度

Page 17: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

カーネルレベル・プロファイリング (Keplerまで)

ボトルネックが実行遅延の場合、カーネル単位で、遅延の主要因は分かったが(データ待ち, 命令発行, 実行依存, …)、

具体的に、プログラムのどこで遅延が発生しているのか特定が難しかった

Page 18: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

命令レベル・プロファイリング (GM200以降)

命令レベルで遅延発生箇所を特定可能

性能改善作業の効率UP

対応CUDAコード

SASSコード

ホットスポットと遅延要因分析

Page 19: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

CUDA 7.5: その他の新機能・改善項目

Windows: Remote Desktop, TCC(TITAN)

Priority Stream: 全てのGPUで利用可能

Lop3: 任意の3入力論理演算 (ptxレベル)

CPUプロファイリング(β): nvprof –cpu-profiling on

Nsight Eclipse Edition: Power8対応

Page 20: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

まとめ

Maxwell

SMM: より効率重視のアーキテクチャ

高速な共有メモリAtomics

CUDA 7.5

FP16ストレージ

cuSPARSE: 密行列 x 疎ベクトル

命令レベルプロファイリング

Page 21: 1071: GPUコンピューティング最新情報 ~ CUDA 7.5とMaxwellアーキテクチャ ~

Thank you