1071: gpuコンピューティング最新情報 ~ cuda 7.5とmaxwellアーキテクチャ ~

Post on 16-Apr-2017

3.919 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Akira Naruse, Senior Developer Technology Engineer

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

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

2012 20142008 2010 2016

Tesla FermiKepler

Maxwell

PascalMixed Precision3D MemoryNVLink

Pascal: 次世代GPUMixed Precision 3D Memory

NVLinkUnified Memory

FP16, FP32, FP64

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

高バンド幅(80 GB/s)

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

Maxwell: 最新世代GPU

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

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

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

Kepler

(cc30)

Kepler

(cc35)

Maxwell

(cc52)

Pascal

FP16 〇

FP32 (単精度) 〇 〇 〇 〇

FP64 (倍精度) 〇 〇

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

Kepler

(SMX)

Maxwell

(SMM)

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

スペック比較

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

共有メモリ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) 共有メモリ (バンク競合無し)+グローバル

共有メモリ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)

データパスの変更

L2

Smem

L1Tex(RO)

CUDA cores

Kepler(SMX) Maxwell(SMM)

L2

SmemUnified

L1 and Tex

CUDA coresL1とTexを統合、

Smemを分離

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

CUDA 7.5 (2015/9)

Fp16ストレージ

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

Deep Learningに最適

cuSPARSE

密行列 x 疎ベクトル

自然言語処理を加速

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

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

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)

FP16ストレージの効果

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

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

畳み込み演算はFP32を使用

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

FP32 1,180 204 (64%)

FP16 1,716 164 (51%)1.45x

メモリバンド幅ネック

Quadro M6000

FP16計算 (Tegra X1 only)

halfとhalf2の基本的な演算

cublasHgemm() … FP16の行列積

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

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

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

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

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

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

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

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

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

性能改善作業の効率UP

対応CUDAコード

SASSコード

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

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

Windows: Remote Desktop, TCC(TITAN)

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

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

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

Nsight Eclipse Edition: Power8対応

まとめ

Maxwell

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

高速な共有メモリAtomics

CUDA 7.5

FP16ストレージ

cuSPARSE: 密行列 x 疎ベクトル

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

Thank you

top related