• 検索結果がありません。

今回の内容 GPU の発展 GPU のアーキテクチャ CPU の発展 性能の変化 シングルコアからマルチコア GPU の応用例 6

N/A
N/A
Protected

Academic year: 2021

シェア "今回の内容 GPU の発展 GPU のアーキテクチャ CPU の発展 性能の変化 シングルコアからマルチコア GPU の応用例 6"

Copied!
52
0
0

読み込み中.... (全文を見る)

全文

(1)

GPGPUの歴史と応用例

(2)

今回の内容

GPUの発展

GPUのアーキテクチャ

CPUの発展

 性能の変化  シングルコアからマルチコア 

GPUの応用例

(3)

GPU(Graphics Processing Unit)とは

画像処理専用のハードウェア

 具体的には画像処理用のチップ  チップ単体では販売されていない  PCI‐Exカードで販売(チップ単体と区別せずにGPUと呼ぶことも多い)  ノートPCに搭載  PCI‐Exカードとして販売されるGPUには,ビデオメモリと呼ばれ るRAMが搭載

(4)

GPU(Graphics Processing Unit)とは

代表的な製品

NVIDIA GeForce, Quadro, TeslaAMD Radeon, FireProm

代表的な用途

3Dグラフィックス処理3Dゲーム,3DCAD,3DCG作成  エンコード・デコード支援  GPU上に専用モジュールを搭載していることが多い  デスクトップPCのGUI処理  Windows Aeroが比較的高性能なGPUを要求

(5)

GPUの性能の遷移(理論演算性能)

Tesla Fermi Kepler Maxwell Kepler GeForce ゲーム用 Quadro CG用 Tesla GPGPU用 Theoretical   GFLOP/s GeForce FX 5800GeForce 6800 Ultra GeForce 7800 GTX GeForce 8800 GTX GeForce GTX 280 GeForce GTX 480 GeForce GTX 580 GeForce GTX 680 GeForce GTX TITAN GeForce 780 Ti Pentium 4

WoodcrestHarpertown Sandy Bridge

Ivy Bridge Tesla K40 Tesla K20X Tesla M2090 Tesla C2050 Tesla C1060

Apr‐01 Sep‐02 Jan‐04 May‐05 Oct‐06 Feb‐08 Jul‐09 Nov‐10 Apr‐12 Aug‐13 Dec‐14

Westmere Bloomfield

(6)

GPUの性能の遷移(理論バンド幅)

Tesla Fermi Maxwell Kepler GeForce ゲーム用 Quadro CG用 Tesla GPGPU用 GeForce FX 5900 GeForce 6800 GT GeForce 7800 GTX GeForce 8800 GTX GeForce GTX 280 GeForce GTX 480 GeForce GTX 680 GeForce 780 Ti Tesla K40 Tesla K20X Tesla M2090 Tesla C2050 Tesla C1060 Northwood Woodcrest Harpertown Sandy Bridge Ivy Bridge Westmere Bloomfield Prescott Theoretical   GB/s

(7)

GPU(Graphics Processing Unit)の役割

グラフィックスを表示するために様々な処理を行い,処

理の結果をディスプレイに出力

3次元グラフィックスの発展に伴って役割が大きく変化

3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 CPU ディスプレイコントローラ GPU 3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 現在 過去  CPU が 3D 描 画 の演算を実行  GPUが出力 描画情報 画面出力  GPUが演算から 出力までの全て を担当  CPUは描画情報 の生成やGPUへ の情報の引き渡 し , GPU の 制 御 を行う 描画情報 画面出力

(8)

GPUの描画の流れ

1.

CPUからGPUへ描画情報を送信

2.

頂点処理(頂点シェーダ)

 座標変換  画面上での頂点やポリゴンの位置・大きさの決定  頂点単位での照明の計算

3.

頂点やポリゴンからピクセルを生成

(ラスタライザ)

4.

ピクセル処理(ピクセルシェーダ)

 画面上のピクセルの色  テクスチャの模様

5.

画面出力

ピクセルの色情報をフレームバッファに書き込み 2. 3. 4.

(9)

ビデオカードの利点

CPUで描画のための演算を行うと,CPUにかかる負荷が

大きい

3次元画像処理の専用回路を備えたハードウェアを導入

○CPUにかかる負荷を減らすことができる ○頂点・ピクセルごとに並列処理が可能なため,ハードウェアに よる並列処理が可能

(10)

ビデオカードの欠点

3次元画像処理の専用回路を備えたハードウェアを導入

×新しい描画方法を開発しても,GPUへ実装・製品化されるまで 利用できない ×ユーザが所有しているGPUによって,利用できる機能にばらつ きが生じる ×ある描画手法用の専用回路を実装しても,その描画方法が 常に使われる訳ではないのでGPU全体の利用効率が下がる

(11)

ビデオカードから

GPUへ

CGの多様化と共に固定機能の実装が困難に

頂点処理とピクセル処理をユーザが書き換えられるプロ

グラマブルシェーダの実装

頂点処理用回路 ピクセル処理用回路 グラフィックスカード 頂点シェーダユニット ピクセルシェーダユニット GPU

(12)

ビデオカードから

GPUへ

頂点処理とピクセル処理をユーザが書き換えられるプロ

グラマブルシェーダの実装

 処理によっては利用効率に差が生じる GPU 頂点シェーダユニット ピクセルシェーダユニット 頂点処理重視の処理 GPU 頂点シェーダユニット ピクセルシェーダユニット ピクセル処理重視の処理 空きユニット 空きユニット

(13)

ビデオカードから

GPUへ

頂点シェーダとピクセルシェーダを統合したユニファイド

シェーダへの進化

 頂点処理とピクセル処理を切り替えることで利用率を高める GPU ユニファイドシェーダユニット 頂点処理重視の処理 ピクセル処理重視の処理 GPU ユニファイドシェーダユニット

(14)

ビデオカードから

GPUへ

各ピクセルに対して並列に処理を行えるよう,並列度を

高める

 単純な処理を行う演算器を大量に搭載  高い並列度で処理を行う 

GPUの誕生とGPGPUの普及

 高性能な3DCG画像処理への要求→GPUの高性能化 

GPGPUの長所

 消費電力あたりの浮動小数点理論演算性能が高い  安価  CPUを使った大規模計算機と比較して相対的に

(15)

GPUの進化

GPUは発展途上(2~3年で世代交代)

 今プログラムを作っておくと,勝手に速くなってくれる!* NVIDIA社プレゼンテーションを基に作成 情報処理センター GPGPUシステムに搭載 1   Watt あたりの単精度行列-行 列積の回数 年 0 12 24 36 48 60 72 2008 2010 2012 2014 2016 2018 Tesla Fermi Maxwell Kepler Pascal Volta *多分に誇張的な表現であることに注意

(16)

GPUのハードウェア構造

CUDA Core(旧Streaming Processor, SP)と呼ばれ

る演算器を多数搭載

Streaming Multiprocessor(SM, SMX)が複数の

CUDA CoreとSFU,メモリをまとめて管理

SFU(Special Function Unit)  数学関数を計算するユニット 

複数のSMが集まってGPUを構成

(17)

Fermiアーキテクチャ

Tesla M2050の仕様

SM数 14CUDA Core数 448(=32Core/SM×14SM)L1/L2 キャッシュを搭載ECC(誤り訂正機能)を搭載

(18)

Fermiアーキテクチャ

Tesla M2050の仕様

* CUDAコア数(単精度) 448 Cores CUDAコアクロック周波数 1,150 MHz 単精度演算ピーク性能 1.03 TFLOPS 倍精度演算ユニット数 0*Unit 倍精度演算ピーク性能 515 GFLOPS メモリクロック周波数 1.55 GHz メモリバス幅 384 bit 最大メモリバンド幅 148 GB/s *1単精度CUDA Coreを2基使って倍精度演算を実行 *http://www.nvidia.co.jp/object/product_tesla_M2050  _M2070_jp.html http://ja.wikipedia.org/wiki/NVIDIA_Tesla

(19)

Maxwellアーキテクチャ

GeForce GTX TITAN Xの仕様

SM数 24

(20)

Maxwellアーキテクチャ

GeForce GTX TITAN Xの仕様

* CUDAコア数(単精度) 3,072 Cores CUDAコアクロック周波数 1,002 MHz 単精度演算ピーク性能 6.14 TFLOPS 倍精度演算ユニット数 0*1 Units 倍精度演算ピーク性能 192 GFLOPS*2 メモリクロック周波数 3.5 GHz*3 メモリバス幅 384 bit 最大メモリバンド幅 336.5 GB/s *1http://www.4gamer.net/games/121/G012181/20141225075/ *2倍精度演算は単精度演算の性能の1/32 (1/16 Flop/Core/clock) *3DDR(Double Data Rate) 7GHz相当と書かれている場合もある http://http://www.geforce.com/hardware/desk top‐gpus/geforce‐gtx‐titan‐x/specifications *http://ja.wikipedia.org/wiki/FLOPS

(21)

Pascalアーキテクチャ

2016年にリリース予定

 倍精度演算器を搭載予定

NVLink

GPU同士やGPUとCPUを接続する独自の方式

 通信(CPU ↔ メモリ ↔ PCI Express ↔ メモリ ↔ GPU)の

ボトルネックを解消(PCI Express3.0の5~12倍)  複数のGPUを使って大規模な計算が可能 

3Dメモリ(High Bandwidth Memory, HBM)*

3次元積層技術を利用し,メモリの容量と帯域を大幅に増加  最大32GB,メモリ帯域1TB/s *http://pc.watch.impress.co.jp/docs/column/kaigai/20150421_698806.html

(22)

CUDA

Compute Unified Device Architecture

NVIDIA社製GPU向け開発環境(Windows,Linux,Mac OS X)2007年頃発表C/C++言語+独自のGPU向け拡張  専用コンパイラ(nvcc)とランタイムライブラリ  いくつかの数値計算ライブラリ(線形代数計算,FFTなど) 

CUDA登場以前

 グラフィックスプログラミングを利用  足し算を行うために,色を混ぜる処理を実行  汎用計算のためには多大な労力が必要

(23)

プログラマブルシェーダを用いた汎用計算

グラフィックスAPI(DirectX, OpenGL)による描画処理

+シェーダ言語(HLSL, GLSL)による演算

void gpumain(){

vec4 ColorA = vec4(0.0, 0.0, 0.0, 0.0); vec4 ColorB = vec4(0.0, 0.0, 0.0, 0.0); vec2 TexA = vec2(0.0, 0.0); vec2 TexB = vec2(0.0, 0.0);

TexA.x = gl_FragCoord.x; TexA.y = gl_FragCoord.y; TexB.x = gl_FragCoord.x; TexB.y = gl_FragCoord.y; ColorA = texRECT( texUnit0, TexA );

ColorB = texRECT( texUnit1, TexB );

gl_FragColor = F_ALPHA*ColorA + F_BETA*ColorB; } void main(){ glutInit( &argc, argv ); glutInitWindowSize(64,64);glutCreateWindow("GpgpuHelloWorld"); glGenFramebuffersEXT(1, &g_fb); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, g_fb); glGenTextures(4, g_nTexID); // create (reference to) a new texture glBindTexture(opt1, texid); glTexParameteri(opt1, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(...); glTexImage2D(opt1, 0, opt2, width, height, 0, GL_RGBA, GL_FLOAT, 0); ……(以下省略) GPUの処理(GLSL) 各ピクセルに対して実行 CPUの処理 (OpenGL) シェーダ言語を用いた配列加算 (c=*a + *b)の例

(24)

CUDAによる汎用計算(c=*a + *b)

#define N (1024*1024) #define Nbytes (N*sizeof(float)) #define NT 256 #define NB (N/NT) __global__ void init(float *a,  float *b, float *c){ int i = blockIdx.x*blockDim.x + threadIdx.x; a[i] = 1.0; b[i] = 2.0; c[i] = 0.0; } __global__ void add(float *a, float ,  float *b, float , float *c){ int i = blockIdx.x*blockDim.x + threadIdx.x; c[i] = *a[i] + *b[i]; } int main(){ float *a,*b,*c; float , ; cudaMalloc((void **)&a, Nbytes); cudaMalloc((void **)&b, Nbytes); cudaMalloc((void **)&c, Nbytes);  = ... ;  = ...; init<<< NB, NT >>>(a,b,c); add<<< NB, NT >>>(a, , b, , c); return 0; }

(25)

GPUの普及の要因

GPUの進展は15年程度

 普及の速度は驚異的 

CPUは数十年かけて進展

CPUも驚異的な速度で進展  様々な高速化技術が導入 

GPUが普及している要因は何か?

(26)

TOP500 List(2014, Nov.)

スーパーコンピュータの性能の世界ランキング

GPUを搭載したコンピュータは2基だけ 計算機名称(設置国) アクセラレータ 実効性能(PFlop/s) 消費電力(MW) 1 Tianhe‐2 (China) Intel Xeon Phi 33.9 17.8 2 Titan (U.S.A.) NVIDIA K20x 17.6 8.20 3 Sequoia (U.S.A.) − 17.2 7.90 4 K computer (Japan) − 10.5 12.7 5 Mira (U.S.A.) − 8.59 3.95 6 Piz Daint (Switzerland) NVIDIA K20x 6.27 2.33 7 Stampede (U.S.A.) Intel Xeon Phi 5.17 4.51 8 JUQUEEN (Germany) − 5.01 2.30 9 Vulcan (U.S.A.) − 4.29 1.97 10 ‐ (U.S.A.) − 3.58 1.50

(27)

理論ピーク性能と実効性能

Floating‐Point Operations per Second

1秒あたりに浮動小数の演算が何回できるか

理論ピーク性能

 プロセッサの数(プロセッサ上に実装された演算器の数)や動 作周波数から求める理論的な速度  「全ての機能が全て同時に使えれば」という理論的な値 

実効性能(実行性能)

 ある問題に対してプログラムを実行したときに得られた性能  プログラムの中で行っている計算(浮動小数点演算)の回数 を数え,プログラムの実行にかかった時間を測定して割り算

(28)

CPUの理論性能

公式

FLOPS =  1コアの演算性能 [?] × コア数 [Core] × CPUの動作周波数 [Hz=Clock/sec] 

1コアの演算性能

 =1度に発行出来る浮動小数点演算命令  単位は[Floating Point Operations/Clock /Core]  性能の評価には動作周波数だけでなく,1コアが1クロックで 発行できる命令数が重要

(29)

CPUの性能

FLOPS = 

1コアの演算性能

× コア数

× CPUの動作周波数

1コアの演算性能の向上

 演算器(トランジスタ)の増加 

コア数の増加

 トランジスタ数の増加 

CPUの動作周波数

 回路の効率化や印可電圧の向上 動作周波数の向上に注力 (ほぼ全ての処理が速くなる) 様々な機能を追加 • パイプライン処理 • スーパースカラ実行 • 分岐予測等

(30)

CPUの性能の変化

Intelの予告(Intel Developer Forum 2003)

(31)

CPUの性能の変化

2004年頃からクロックが停滞

Intelが公開している資料を基に作成

(32)

CPUの性能向上

* 

電子回路の構成部品

 機械式リレー  真空管  トランジスタ  IC (Integrated Circuit)LSI (Large Scale Integrated Circuit)

CPUとメモリの性能向上

 回路の配線を細線化  250nm→180nm→130nm→90nm→65nm→45nm→32nm→

線幅が減ると同じ回路を作る際の面積が減少

同じ面積に集積できるトランジスタ数が増加

集積率が上昇 *姫野龍太郎,絵でわかるスーパーコンピュータ,講談社 (2012)

(33)

ムーアの法則

* 

インテルの共同設立者ムーアによる経験則

 半導体の集積率は1年で倍になる  後に「18ヶ月で2倍」に修正 姫野龍太郎,絵でわかるスーパーコンピュータ, 講談社 (2012)に掲載されている絵を基に作成 http://en.wikipedia.org/wiki/Moore%27s_law *Moore, G.E., Electronics, Vol.38,No.8(1965). http://ja.wikipedia.org/wiki/ムーアの法則 year 1970 1975 1980 1985 1990 1995 2000 2005 2010 103 104 105 106 107 108 109 1010 Number of T ransistors 4004 80088080 8086 286 Intel386プロセッサ Intel486プロセッサ インテルPentiumプロセッサ インテルPentium IIプロセッサ インテルPentium IIIプロセッサ インテルPentium 4プロセッサ インテルItaniumプロセッサ インテルItanium 2プロセッサ デュアルコアインテルItanium 2プロセッサ ムーアの法則 (12ヶ月で倍) ムーアの法則 (18ヶ月で倍)

(34)

ポラックの法則

* 

2倍のトランジスタを使っても,プロセッサの性能はその

平方根倍(1.4倍)程度にしか伸びない

 消費電力は2倍,性能は1.4倍 

一つのCPUに複数のプロセッサ(コア)を搭載

 消費電力を上げずに“理論的な”性能を倍に  プログラムの作り方に工夫が必要 *http://ja.wikipedia.org/wiki/ポラックの法則 http://en.wikipedia.org/wiki/Pollack%27s_Rule

(35)

プロセッサの性能向上

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上

(36)

プロセッサの性能向上

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない

(37)

プロセッサの性能向上

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない コア数の増加

(38)

CPUの性能向上

FLOPS = 

1コアの演算性能

× コア数

× CPUの動作周波数

1コアの演算性能の向上

 演算器(トランジスタ)の増加 

コア数の増加

 トランジスタ数の増加 

CPUの動作周波数

 回路の効率化や印可電圧の向上 劇的な性能向上は期待できない コンパイラの最適化を利用 複数のコアを使うように プログラムを書かないと 速くならない

(39)

GPUを使うという選択

GPU普及の要因の一つはCPUクロックの頭打ち

 クロックを下げてマルチコア化したCPUへの対応が必要 

なぜGPUという選択か?

CPU用プログラムの並列化でもいいのでは?

消費電力の低減

 数値計算や高性能計算(HPC)の業界がGPUに注目  スーパーコンピュータの性能向上  高機能なCPUを大量に使うと消費電力が問題に  高機能な制御用プロセッサと,計算を実行する低性能なアクセラ レータの組み合わせ

(40)

計算機名称 アクセラレータ GFLOPS/W 消費電力(kW) 1 L‐CSC AMD FirePro S9150 5.27 57.15 2 Suiren PEZY‐SC 4.95 37.83 3 TSUBAME‐KFC NVIDIA K20x 4.45 35.39 4 Storm1 NVIDIA K40m 3.96 44.54 5 Wilkes NVIDIA K20 3.63 52.62 6 iDataPlex NVIDIA K20x 3.54 54.60 7 HA‐PACS NVIDIA K20x 3.52 78.77 8 Cartesius Accelerator Island NVIDIA K20m 3.46 44.40

Green500(2014, Nov.)

AMD社のGPUが1位

日本の次世代機「睡蓮」が2位*

NVIDIA社のGPUが3位以降にランクイン

*4月2日に1位相当の値を記録 http://news.mynavi.jp/articles/ 2015/04/02/kek_suiren/

(41)

アクセラレータ

コンピュータの特定の機能や処理能力を向上させる

ハードウェア

CPUで行っていた処理を専用ハードウェアが担当  動画像のエンコード・デコード等 

コンピュータシミュレーションではCPUの代わりに計算を

実行するハードウェアを指す

 画像処理装置(Graphics Processing Unit)  メニーコアプロセッサ

(42)

アクセラレータ(メニーコアプロセッサ)

PEZY‐SC

 株式会社PEZY Computingの1,024コアの低消費電力型メ ニーコアプロセッサ  1024コア,動作周波数733MHz  理論演算性能  単精度 3.0 TFLOPS  倍精度 1.5 TFLOPS

(43)

アクセラレータ(メニーコアプロセッサ)

Intel Xeon Phi

OSを搭載しており,接続しているワークステーションとは独立 して動かすことが可能  61コアCPU(1GHz), メモリ8GBのLinuxサーバ  理論演算性能(単精度) 約1 TFLOPS  CPUからの制御が必要なアクセラレータとは異なる  アーキテクチャがIntel CPUと同じであるため,コンパイルし 直すだけで動作する  新モデルを投入予定*  72コア,メモリ16GB  理論演算性能3.0 TFLOPS *http://news.mynavi.jp/articles/2014/11/17/sc14/

(44)

まとめ

GPUの特徴

 低性能の演算器を大量に搭載(~3000コア) 

GPUが使われる理由

 理論演算性能が高い  メモリとチップ間の帯域も広い  省電力と高性能を両立  今後の計算機の主流になると考えられる 

将来に対する投資

GPUだけでなく,制御用CPU+計算用アクセラレータという思想

(45)

ロボットによる心臓外科手術

ロボットアームと内視鏡を使った心臓外科手術

(46)

ロボットによる心臓外科手術

(47)

ロボットによる心臓外科手術

心臓は複雑な形状で,かつ周期的に脈動

毎秒何十枚と撮られる映像をリアルタイムで処理しなが

らロボットアームを制御

 心臓を2次元の画像に変換  その画像を基にロボットが動く道筋を計算  実際に3次元の動きに変換 

心臓の動きに合わせてロボットアームを制御

(48)

住宅設備機器開発

(49)

車載システム

Google, NVIDIA, AudiなどによるOpen Automotive 

Alliance

(50)

NVIDIA社の自動車関連ソリューション

NVIDIA DRIVE PX

 高機能運転支援システム

NVIDIA DRIVE CX

(51)

Jetson Tegra TK1

世界初の組み込みスーパーコンピューター

NVIDIA Tegra K1を採用Keplarアーキテクチャ  192 CUDA コア  NVIDIA 4‐Plus‐1™ クアッドコア ARM® Cortex‐A15 CPU  Linux for Tegraが動作

(52)

月面探査

Google Lunar XPRIZE

Googleによる国際宇宙開発レース  日本の民間月面探査チーム「HAKUTO」が参加 

ロケット発射時のシミュレーション

着陸などのシミュレーションや実際の制御にGPUを用い

た自動運転技術を利用

参照

関連したドキュメント

概要・目標 地域社会の発展や安全・安心の向上に取り組み、地域活性化 を目的としたプログラムの実施や緑化を推進していきます

はじめに

・5月上旬より、1~4号機周辺道路やタービン建屋東側の一部エリアについて 、当該エリア で働く作業員の身体的負荷軽減や作業性の向上を目的に、Yellow zone

5⽉上旬より、1〜4号機周辺道路やタービン建屋東側の⼀部エリアについて 、当該エリ アで働く作業員の⾝体的負荷軽減や作業性の向上を⽬的に、Yellow zone

安全性は日々 向上すべきもの との認識不足 安全性は日々 向上すべきもの との認識不足 安全性は日々 向上すべきもの との認識不足 他社の運転.

・発電設備の連続運転可能周波数は, 48.5Hz を超え 50.5Hz 以下としていただく。なお,周波数低下リレーの整 定値は,原則として,FRT

性能  機能確認  容量確認  容量及び所定の動作について確 認する。 .

・発電設備の連続運転可能周波数は, 48.5Hz を超え 50.5Hz 以下としていただく。なお,周波数低下リレーの整 定値は,原則として,FRT