Slide 1

Similar documents
Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin

07-二村幸孝・出口大輔.indd

GPU GPU CPU CPU CPU GPU GPU N N CPU ( ) 1 GPU CPU GPU 2D 3D CPU GPU GPU GPGPU GPGPU 2 nvidia GPU CUDA 3 GPU 3.1 GPU Core 1

Images per Second Images per Second VOLTA: ディープラーニングにおける大きな飛躍 ResNet-50 トレーニング 2.4x faster ResNet-50 推論 TensorRT - 7ms レイテンシ 3.7x faster P100 V100 P10

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

Microsoft PowerPoint - GPU_computing_2013_01.pptx

GPGPU

GPUコンピューティング講習会パート1

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

23 Fig. 2: hwmodulev2 3. Reconfigurable HPC 3.1 hw/sw hw/sw hw/sw FPGA PC FPGA PC FPGA HPC FPGA FPGA hw/sw hw/sw hw- Module FPGA hwmodule hw/sw FPGA h

GPU のアーキテクチャとプログラム構造 長岡技術科学大学電気電子情報工学専攻出川智啓

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

1 GPU GPGPU GPU CPU 2 GPU 2007 NVIDIA GPGPU CUDA[3] GPGPU CUDA GPGPU CUDA GPGPU GPU GPU GPU Graphics Processing Unit LSI LSI CPU ( ) DRAM GPU LSI GPU

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として) Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA

ストリームを用いたコンカレントカーネルプログラミングと最適化 エヌビディアジャパン CUDAエンジニア森野慎也 GTC Japan 2014


TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日

スライド 1

CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン

DO 時間積分 START 反変速度の計算 contravariant_velocity 移流項の計算 advection_adams_bashforth_2nd DO implicit loop( 陰解法 ) 速度勾配, 温度勾配の計算 gradient_cell_center_surface 速

64bit SSE2 SSE2 FPU Visual C++ 64bit Inline Assembler 4 FPU SSE2 4.1 FPU Control Word FPU 16bit R R R IC RC(2) PC(2) R R PM UM OM ZM DM IM R: reserved

Microsoft PowerPoint - suda.pptx

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

System Requirements for Geomagic

! 行行 CPUDSP PPESPECell/B.E. CPUGPU 行行 SIMD [SSE, AltiVec] 用 HPC CPUDSP PPESPE (Cell/B.E.) SPE CPUGPU GPU CPU DSP DSP PPE SPE SPE CPU DSP SPE 2

GPGPUクラスタの性能評価

Slide 1

211 年ハイパフォーマンスコンピューティングと計算科学シンポジウム Computing Symposium 211 HPCS /1/18 a a 1 a 2 a 3 a a GPU Graphics Processing Unit GPU CPU GPU GPGPU G

hotspot の特定と最適化

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト

NVIDIA Tesla K20/K20X GPU アクセラレータ アプリケーション パフォーマンス テクニカル ブリーフ

GPUコンピューティング講習会パート1

2.1 インテル マイクロアーキテクチャー Haswell インテル マイクロアーキテクチャー Haswell は インテル マイクロアーキテクチャー Sandy Bridge とインテル マイクロアーキテクチャー Ivy Bridge の成功を受けて開発された この新しいマイクロアーキテクチャーの

概要 目的 CUDA Fortran の利用に関する基本的なノウハウを提供する 本チュートリアル受講後は Web 上で公開されている資料等を参照しながら独力で CUDA Fortran が利用できることが目標 対象 CUDA Fortran の利用に興味を抱いている方 前提とする知識 Fortran

WebGL OpenGL GLSL Kageyama (Kobe Univ.) Visualization / 57

スパコンに通じる並列プログラミングの基礎

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

スパコンに通じる並列プログラミングの基礎

GPU.....

IPSJ SIG Technical Report Vol.2013-ARC-203 No /2/1 SMYLE OpenCL (NEDO) IT FPGA SMYLEref SMYLE OpenCL SMYLE OpenCL FPGA 1

VOLTA ARCHITECTURE DEEP DIVE 成瀬彰, シニアデベロッパーテクノロジーエンジニア, 2017/12/12

GPUを用いたN体計算

main.dvi

スパコンに通じる並列プログラミングの基礎

1 3DCG [2] 3DCG CG 3DCG [3] 3DCG 3 3 API 2 3DCG 3 (1) Saito [4] (a) 1920x1080 (b) 1280x720 (c) 640x360 (d) 320x G-Buffer Decaudin[5] G-Buffer D

Insert your Title here

PowerPoint Presentation

Nios II カスタム・インストラクションによるキャスト(型変換)の高速化

Microsoft PowerPoint - NxLec ppt

PowerPoint Presentation

Microsoft PowerPoint - sales2.ppt

64bit SSE2 SSE2 FPU Visual C++ 64bit Inline Assembler 4 FPU SSE2 4.1 FPU Control Word FPU 16bit R R R IC RC(2) PC(2) R R PM UM OM ZM DM IM R: reserved

修士論文

PowerPoint プレゼンテーション

名称未設定

DRAM SRAM SDRAM (Synchronous DRAM) DDR SDRAM (Double Data Rate SDRAM) DRAM 4 C Wikipedia 1.8 SRAM DRAM DRAM SRAM DRAM SRAM (256M 1G bit) (32 64M bit)

strtok-count.eps

特集新世代マイクロプロセッサアーキテクチャ ( 後編 ) 3. 実例 3 ユビキタス コンピューティング時代の組み込みマイクロコンピュータ, SuperH と M32R 清水徹 * 1 長谷川淳 * 2 服部俊洋 * 3 近藤弘郁 * 4 ( 株 ) ルネサステクノロジシステムソリューション統括本部

システムソリューションのご紹介

最新 Visual Studio と DirectX 9.0 Ex で戦う 3D プログラミング

工学院大学建築系学科近藤研究室2000年度卒業論文梗概

Presentation Title

Transcription:

電子情報通信学会研究会組込みシステム研究会 (IPSJ-EMB) 2010 年 1 月 28 日 超並列マルチコア GPU を用いた高速演算処理の実用化 NVIDIA Solution Architect 馬路徹

目次 なぜ今 GPU コンピューティングか? CPUの性能向上速度が減速 性能向上 = 並列処理 にGPUコンピューティングが応える CUDAシステムアーキテクチャによる超並列処理の実現 普及 NVIDIA GPU アーキテクチャの進歩 3Dグラフィックスの進歩及び統合化シェーダエンジンへの変遷統合化シェーダエンジンへのCUDAの組込み 次世代 GPU コンピューティング Fermi アーキテクチャ まとめ プロセッサ / メモリーアーキテクチャ GigaThreadスレッド制御機構による更なる高性能化統合化プログラム開発環境

CUDA は Performance = Parallelism を実現 Performance = Parallelismへの期待このParallelismを実現するために必要なことは? 相当な数の高効率プロセッサ (4 個 8 個のオーダではない ) 並列処理を抽象化できるプログラミング システム CUDA (Compute Unified Device Architecture GPU は数百個の多機能 高速プロセッサを内蔵 マルチスレッド アーキテクチャがこの超並列マルチコアを高効率に活用 CUDA は普及している C 言語の拡張からスタートし 現在は Fortran OpenCL や Direct Compute まで拡張されている CUDA は並列プログラミングの詳細な記述からプログラマーを解放

最初に C with CUDA Extension を開発 標準 C コード CPU からコールし GPU で実行する関数 CUDA コード ク ローハ ル スレット ID をそのままインテ ックスに活用 void saxpy_serial(int n, float alpha, float *x, float *y) { for (int i=0; i<n; ++i) y[i] = alpha * x[i] + y[i]; } // Invoke serial saxpy() kernel saxpy_serial(n, 2.0, x, y); global void saxpy_parallel(int n, float alpha, float *x, float *y) { int i = blockidx.x * blockdim.x + threadidx.x; if (i < n) y[i] = alpha * x[i] + y[i]; } // Invoke parallel saxpy() kernel (256 threads per block) int nblocks = (n + 255)/256; saxpy_parallel <<< nblocks, 256 >>>(n, 2.0, x, y); 階層的スレッド分割数 ( ブロック数 / グリッド ) ( スレッド数 / ブロック )

今日の GPU コンピューティングの普及 OpenCL is trademark of Apple Inc. used under license to the Khronos Group Inc. 市場展開モーメンタム CUDA 実装の GPU が 市場に 1 億個以上出荷 60,000 以上の GPU コンピューティング開発者 Windows, Linux 及び MacOS プラットフォームのサポート 200 以上の大学で GPU コンピューティングの講座 C + CUDA Extension GPU コンピューティング アプリ OpenCL Khronos Apple Direct Compute Microsoft FORTRAN NVIDIA GPU with the CUDA Parallel Computing Architecture Java and Python planned

CUDA Not 2x or 3x, Speed-ups are 20x to 150x Results with Telsa 8 Series relative to compute performance using CPU exclusively 146X 36X 19X 17X 100X Interactive visualization of volumetric white matter connectivity Ionic placement for molecular dynamics simulation on GPU Transcoding HD video stream to H.264 Simulation in Matlab using.mex file CUDA function Astrophysics N- body simulation 149X 47X 20X 24X 30X Financial simulation of LIBOR model with swaptions GLAME@lab: An M-script API for linear Algebra operations on GPU Ultrasound medical imaging for cancer diagnostics Highly optimized object oriented molecular dynamics Cmatch exact string matching to find similar proteins and gene sequences

並みの性能向上ではない 2-3 倍の性能向上は単なる 高性能化 顧客の基本的なワークフローに変化は無い 5-10 倍の性能向上は 画期的 装置のアップグレードの価値は十分にある ( 一部または大部分の ) アプリ ソフトを書き換える意味はある 100 倍以上の性能向上は 世界観を変える! プラットフォームの取替えの価値はあるアプリケーションのアーキテクチャまでを見直す意味がある今まで実用的に不可能であったアプリの開発が可能になる科学技術において 新発見までの時間 を短縮する画期的な変化をもたらす

GPU コンピューティングが導入された OS 身近になる GPU コンピューティング Mac OS X Snow Leopard

目次 なぜ今 GPU コンピューティングか? CPUの性能向上速度が減速 性能向上 = 並列処理 にGPUコンピューティングが応える CUDAシステムアーキテクチャによる超並列処理の実現 普及 NVIDIA GPU アーキテクチャの進歩 3Dグラフィックスの進歩及び統合化シェーダエンジンへの変遷統合化シェーダエンジンへのCUDAの組込み 次世代 GPU コンピューティング Fermi アーキテクチャ まとめ プロセッサ / メモリーアーキテクチャ GigaThreadスレッド制御機構による更なる高性能化統合化プログラム開発環境

NVIDIA GPU による 3D グラフィックスの進歩 フ ロク ラマヒ リティーの大幅向上 ( 統合化シェータ ーエンシ ン ) 汎用演算器 1995 NV1 1 Million Transistors 1999 GeForce 256 DirectX 7 22 Million Transistors 2002 GeForce4 Direct X 8 63 Million Transistors 2003 GeForce FX DirectX 9 130 Million Transistors 2004 GeForce 6 DirectX 9c 222 Million Transistors 2005 GeForce 7 DirectX 9c 302 Million Transistors 2006 GeForce 8 DirectX 10 (Vista) 681 Million Transistors 2008 GeForce GTX200 1.4 Billion Transistors フ ロク ラマヒ リティーの向上 Vertex(FP) +Pixel Shader Vertex(FP) +Pixel(FP) Shader 統合化 Shader CUDA Pixel Shade

20 年間続いたグラフィックス アーキテクチャ各機能に固定された用途のハードウエア Vertex Triangle 座標変換及び光源処理 DirectX8 よりプログラマブル頂点シェーダーとなる 三角形 点 線セットアップ Pixel Raster OPeration フラット シェーディング テクスチャーマッピング等 DirectX8 よりプログラマブル ピクセルシェーダーとなる ブレンディング Z バッファー アンチエイリアシング Memory メモリ

DirectX 10 (Vista) 以降の GPU 統合型プログラマブル シェーダエンジン GPU はマルチスレッドを処理する超並列マルチコアプロセッサとなった 頂点シェーダ ジオメトリ シェーダ及びピクセル シェーダは上記により実行される Host 頂点シェーダ ジオメトリシェーダ ピクセルシェーダ SP Input Assembler Thread Execution Manager Thread Processors Thread Processors Thread Processors Thread Processors Thread Processors Thread Processors Thread Processors Thread Processors Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache SM SP: Stream Processor SM: Stream Multiprocessor Load/store Global Memory

第 1 世代の SM (Streaming Multiprocessor) Streaming Multiprocessor (SM) 8 Streaming Processors (SP) 各 SP は 32b 単精度浮動小数点 整数演算サポート 2 Super Function Units (SFU) 三角関数 平方根等サポート 全ての SP は同一命令を実行開始 ( 途中分岐あり ) SIMT (Single instruction Multiple Thread) マルチスレッド命令ディスパッチ 1 から768 スレッドがアクティブ 32スレッド単位 (warp) でSIMT 命令実行 巨大なローカル レジスタファイルRF 8,192 Registers / SM ハードウエア コンテキストスイッチを容易化 16 KB シェアード メモリ S F U SP 0 RF 0 SP 1 RF 1 SP 2 RF 2 SP 3 RF 3 SM 命令フェッチ I 命令キャッシュ マルチスレッド命令ディスパッチ シェアド メモリ RF 4 RF 5 RF 6 RF 7 定数キャッシュ SP 4 SP 5 SP 6 SP 7 S F U テキスチャーフェッチ

1024 NVIDIA GPU コア数の変遷 512 256 128 Number of programmable shaders / die 64 32 16 8 4 2 1 Ti500 1+4 GeForce 3XXX Vertex Shader + Pixel Shader Ti4800 2+4 Ti4000 0+2 GeForce 4XXX Programmable Shader FX5900 3+8 FX5700 3+2 FX5600 1+2 GeForce 5XXX 6800GT 6+16 6800 5+12 6800XT 4+8 6200 3+4 6200 1+2 GeForce 6XXX 7900GT 8+16 7800GT 6+16 7600GT 5+12 7500GT 3+4 7300SE 2+2 7050SE 1+4 GeForce 7XXX 8800GTX 128 8800GS 96 8600GTS 32 8500GT 16 8300GT 8 GeForce 8XXX 9800GTX 128 9600GT 64 9500GT 32 9400GT 16 GeForce 9XXX Unified Shader Tesla Architecture GTX285 240 GTX260 216 GTX250 128 GTX240 112 GeForce GT2XX C1060 240 C870 128 Tesla Unified Shader CUDA, OpenCL, DirectX Compute etc Fermi Architecture FERMI 512 - Vertical axis shows the number of cores, but not the performance - Only major products are shown Fermi

GPU-CPU 性能及びメモリーバンド幅の差は拡大 メモリーバンド幅ピーク値 GB/sec 1000 1 TF Single Precision 4GB Memory 8x double precision ECC L1, L2 Caches 100 NVIDIA GPU X86 CPU

目次 なぜ今 GPU コンピューティングか? CPUの性能向上速度が減速 性能向上 = 並列処理 にGPUコンピューティングが応える CUDAシステムアーキテクチャによる超並列処理の実現 普及 NVIDIA GPU アーキテクチャの進歩 3Dグラフィックスの進歩及び統合化シェーダエンジンへの変遷統合化シェーダエンジンへのCUDAの組込み 次世代 GPU コンピューティング Fermi アーキテクチャ まとめ プロセッサ / メモリーアーキテクチャ GigaThreadスレッド制御機構による更なる高性能化統合化プログラム開発環境

Fermi アーキテクチャのご紹介スーパコンピュータの魂を持つ GPU DRAM I/F DRAM I/F 30 億個のトランジスターコア数を倍増 (512 コア ) HOST I/F DRAM I/F 倍精度浮動小数点演算ピーク性能が8 倍 GPUとして初めてECCを導入 Giga Thread L2 DRAM I/F L1 及び L2 キャッシュを内蔵約 2 倍のメモリーバンド幅 (GDDR5) DRAM I/F DRAM I/F 最大 1 Terabyte の GPU メモリ複数 Kernel 同時実行 C++ サポート

SM (Streaming Multiprocessor) アーキテクチャ Instruction Cache Scheduler Scheduler SM 当たり 32 CUDA コア ( 総数 512 個 ) Dispatch Dispatch Register File 倍精度浮動小数点演算ピーク性能は 8 倍 単精度演算ピーク性能の 50% 2 個の Thread Scheduler 2 ワープを 2 組の 16 個の CUDA, 16 個の Load/Store Unit, 4 個の SFU に同時にディスパッチする シェアードメモリ L1 キャッシュとして使用する 64 KB RAM ( 構成可変 ) Load/Store Units x 16 Special Func Units x 4 Interconnect Network 64K Configurable Cache/Shared Mem Uniform Cache

CUDA コア アーキテクチャ Instruction Cache Scheduler Scheduler 最新の浮動小数点演算規格 IEEE 754-2008 準拠 ( 最新 CPU をも凌駕 ) Dispatch Dispatch Register File Fused multiply-add (FMA) 命令を 倍精度 単精度でサポート ( 積和の最終段でラウンディングするため CUDA Dispatch Port 各段で各々行うより精度が向上 ) Operand Collector 新規設計の全命令 32b サポート整数 ALU 64-bit 及びそれ以上の精度に対しても最適化設計 FP Unit INT Unit Result Queue Load/Store Units x 16 Special Func Units x 4 Interconnect Network 64K Configurable Cache/Shared Mem Uniform Cache

統合化された 64 ビットメモリー空間 C/C++ ポインターのフルサポート Non-unified Address Space Local *p_local Shared C 言語やC++ 言語のポインタはターゲットとするアドレス空間が必ずしもコンパイル時に確定せず ランタイムに動的に決まるケースがあるため このポインタを完全に実装することが困難な状況となっていました しかし 統合化されたアドレス空間をもつFermiではこの問題もなくなりました *p_shared Global 0 32-bit *p_global Unified Address Space Local Shared Global 0 40-bit *p

キャッシュメモリ階層構造 オンチップ シェアードメモリとともに本格的な キャッシュ階層構造を有する初めての GPU Fermi Memory Hierarchy Thread 各 SM (32 cores) に L1 キャッシュ (48KB または 16KB) メモリバンド幅の改善及びアクセス遅延の低減 Shared Memory L1 Cache ユニファイド L2 キャッシュ (768 KB) GPU 上の全コアにわたり高速に コーヒレンント データをシェア L2 Cache M A R D

拡張され 高速化されたメモリ インタフェース GDDR5 メモリーインタフェース GDDR3 の 2 倍の速度 最大 1 Terabyte の GPU メモリ 大きなデータセットを取り扱うことが可能現在 40bアドレス 命令は64bをサポート 384 ビットのメモリーインタフェース 64b partitioning x 6 DRAM I/F Giga Thread HOST I/F DRAM I/F L2 DRAM I/F DRAM I/F DRAM I/F DRAM I/F

ECC (Error Checking and Correction) DRAM の ECC によるデータエラーの除去 GDDR5 メモリーの ECC サポート 内部の主要な記憶素子も ECC で保護 レジスターファイル L1 キャッシュ L2 キャッシュ Single-Error Correct Double-Error Detect (SECDED) サポート 2 ビットの誤りはソフト処理 ( 再度実行等 )

IEEE 754-2008 規格準拠の高精度演算 IEEE 754-2008 results 64-bit double precision 32-bit single precision full-speed denormal operands & results NaNs, +/- Infinity IEEE 754-2008 rounding nearest even, zero, +inf, -inf IEEE 754-2008 Fused Multiply-Add (FMA) D = A*B + C; No loss of precision IEEE divide & sqrt use FMA Multiply-Add (MAD): D = A*B + C; A B = Product + C = D (truncate digits) Fused Multiply-Add (FMA): D = A*B + C; A B = (retain all digits) Product + C = D (no loss of precision)

GigaThread TM Hardware Thread Scheduler (HTS) 階層的に何千ものアクティブなスレッドを管理 コンテキストスイッチが 10 倍高速 HTS 複数 kernel の同時実行

GigaThread Hardware Thread Scheduler 複数 Kernel 同時実行 + 高速コンテキストスイッチ Kernel 1 Kernel 1 Kernel 2 Kernel 2 Kernel 2 Kernel 3 Ker 4 Time Kernel 2 Kernel 3 nel Kernel 5 Kernel 4 Kernel 5 Serial Kernel Execution Parallel Kernel Execution

GigaThread Streaming Data Transfer Engine デュアル DMA エンジン CPU GPU 及び GPU CPU データ転送の同時実行 CPU と GPU 演算と完全にオーバラップ可能 処理の流れ : SDT Kernel 0 CPU SDT0 GPU SDT1 Kernel 1 CPU SDT0 GPU SDT1 Kernel 2 CPU SDT0 GPU SDT1 Kernel 3 CPU SDT0 GPU SDT1

各世代の比較 GPU G80 GT200 Fermi 集積トランジスタ数 6 億 8100 万個 14 億個 30 億個 CUDAコア数 128 240 512 倍精度浮動小数点演算能力 30 FMA 演算 / クロック 256 FMA 演算 / クロック 単精度浮動小数点演算能力 128 MAD 演算 / クロック 240 MAD 演算 / クロック 512 MAD 演算 / クロック ワープスケジューラ 1 1 2 (SMあたり搭載数) 特殊関数ユニット (SFU) /SM 2 2 4 共有メモリ /SM 16KB 16KB 48KB/16KB ( 構成可能 ) L1キャッシュ /SM 16KB/48KB ( 構成可能 ) L2キャッシュ /SM 768KB ECCメモリのサポート 平行実行カーネル数 最大 16 ロード / ストアのアドレス幅 32ビット 32ビット 64ビット

NVIDIA Nexus IDE( 統合化開発環境 ) 業界初の超並列アプリ開発用 IDE (Integrated Development Environment) C, C++, OpenCL, DirectCompute 及び DirectX と OpenGL の両グラフィックス API をサポート 完全にVisual Studioに組込まれた開発環境 (CPU + GPU) コプロセッシング アプリの開発を効率化 両プロセッサにまたがるソース デバッグ 性能解析 両プロセッサにわたるイベント データのキャプチャ

NVIDIA Nexus IDE( 統合化開発環境 ) 画面

まとめ CPUのIPL 性能向上は減速している Performance = Parallelism が今後の性能確保の要統合化シェーダエンジンによりGPUは汎用の超並列プロセッサとなる CUDA GPU コンピューティングはGPUの並列性能を最大限に引き出し 並列プログラミングの抽象化によりプログラミングも容易にする次世代 Fermiアーキテクチャは更にコンピューティング機能 性能を向上した

Thank you for your attention