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

Similar documents
( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

GPU.....

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


Microsoft Word - paper.docx

Microsoft PowerPoint - GPU_computing_2013_01.pptx

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

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

NUMAの構成

GPGPU

main.dvi

untitled

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

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

untitled

TSUBAME2.0におけるGPUの 活用方法

GPGPUによる高速画像処理

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

untitled

1 OpenCL OpenCL 1 OpenCL GPU ( ) 1 OpenCL Compute Units Elements OpenCL OpenCL SPMD (Single-Program, Multiple-Data) SPMD OpenCL work-item work-group N

! 行行 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

Slide 1

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

supercomputer2010.ppt

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

HP xw9400 Workstation

マルチコアPCクラスタ環境におけるBDD法のハイブリッド並列実装

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

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

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

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

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

FIT2013( 第 12 回情報科学技術フォーラム ) I-032 Acceleration of Adaptive Bilateral Filter base on Spatial Decomposition and Symmetry of Weights 1. Taiki Makishi Ch

GPU n Graphics Processing Unit CG CAD

CUDA 連携とライブラリの活用 2

GPGPUイントロダクション

GPUを用いたN体計算

OpenGL GLSL References Kageyama (Kobe Univ.) Visualization / 58

HP Workstation Xeon 5600

HP High Performance Computing(HPC)

GPU CUDA CUDA 2010/06/28 1

AMD/ATI Radeon HD 5870 GPU DEGIMA LINPACK HD 5870 GPU DEGIMA LINPACK GFlops/Watt GFlops/Watt Abstract GPU Computing has lately attracted

2012 M

HPEハイパフォーマンスコンピューティング ソリューション

Slide 1

System Requirements for Geomagic

HPC pdf

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

(MIRU2010) NTT Graphic Processor Unit GPU graphi

IPSJ SIG Technical Report Vol.2013-HPC-138 No /2/21 GPU CRS 1,a) 2,b) SpMV GPU CRS SpMV GPU NVIDIA Kepler CUDA5.0 Fermi GPU Kepler Kepler Tesla

H1-4

untitled

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

SmartLMSユーザーズガイド<講師編>

indd

IPSJ SIG Technical Report Vol.2012-ARC-202 No.13 Vol.2012-HPC-137 No /12/13 Tightly Coupled Accelerators 1,a) 1,b) 1,c) 1,d) GPU HA-PACS

Ver. 3.8 Ver NOTE E v3 2.4GHz, 20M cache, 8.00GT/s QPI,, HT, 8C/16T 85W E v3 1.6GHz, 15M cache, 6.40GT/s QPI,

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

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

Ver. 3.8 Ver NOTE E v3 2.4GHz, 20M cache, 8.00GT/s QPI,, HT, 8C/16T 85W E v3 1.6GHz, 15M cache, 6.40GT/s QPI,,

PC Development of Distributed PC Grid System,,,, Junji Umemoto, Hiroyuki Ebara, Katsumi Onishi, Hiroaki Morikawa, and Bunryu U PC WAN PC PC WAN PC 1 P

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

HP Workstation 総合カタログ

インテル® VTune™ パフォーマンス・アナライザー 9.1 Windows* 版

rank ”«‘‚“™z‡Ì GPU ‡É‡æ‡éŁÀŠñ›»

i


Wide Scanner TWAIN Source ユーザーズガイド

Ver. 3.9 Ver E v3 2.4GHz, 20M cache, 8.00GT/s QPI,, HT, 8C/16T 85W E v3 1.6GHz, 15M cache, 6.40GT/s QPI,, HT,

Ver Ver NOTE E v3 2.4GHz, 20M cache, 8.00GT/s QPI,, HT, 8C/16T 85W E v3 1.6GHz, 15M cache, 6.40GT/s QPI

MPI または CUDA を用いた将棋評価関数学習プログラムの並列化 2009/06/30

on PS3 Linux Core 2 Quad (GHz) SMs 7 SPEs 1 OS 4 1 Hz 1 (GFLOPS) SM PPE SPE bit

2

HPE Moonshot System ~ビッグデータ分析&モバイルワークプレイスを新たなステージへ~

RaVioli SIMD

_CS6.indd

HP Workstation 総合カタログ

,., ping - RTT,., [2],RTT TCP [3] [4] Android.Android,.,,. LAN ACK. [5].. 3., 1.,. 3 AI.,,Amazon, (NN),, 1..NN,, (RNN) RNN

HP Personal Workstations

倍々精度RgemmのnVidia C2050上への実装と応用

2010 : M DCG 3 (3DCG) 3DCG 3DCG 3DCG S

2ndD3.eps


卒業論文

[1] [2] [3] (RTT) 2. Android OS Android OS Google OS 69.7% [4] 1 Android Linux [5] Linux OS Android Runtime Dalvik Dalvik UI Application(Home,T

ACDSee-Press-Release_0524

HPC (pay-as-you-go) HPC Web 2

Ver. 3.8 Ver NOTE E v3 2.4GHz, 20M cache, 8.00GT/s QPI,, HT, 8C/16T 85W E v3 1.6GHz, 15M cache, 6.40GT/s QPI,,

EGunGPU

OptiPlex OptiPlex 4 OptiPlex vpro Energy STAR5.0 EPEAT GOLD 90 Energy Smart Energy Smart

develop

untitled

PowerEdge R730xd Contents RAID /RAID & P3-6 PCIe P P P P OS P P P P7 P8 P9 P10-11 P12-17 P P112

05秋案内.indd

電気通信大学 I 類 情報系 情報 ネットワーク工学専攻 CED 2018 システム利用ガイド ver1.2 CED 管理者 学術技師 島崎俊介 教育研究技師部 実験実習支援センター 2018 年 3 月 29 日 1 ログイン ログアウト手順について 1.1 ログイン手順 CentOS 1. モニ

An Interactive Visualization System of Human Network for Multi-User Hiroki Akehata 11N F

HP Z800 Workstation 製品構成ガイド

HP BLADE WORKSTATION ソリューション

FFTSS Library Version 3.0 User's Guide

2nd-1.dvi

Transcription:

GPU Graphics Processing Units HPC High Performance Computing GPU GPGPU General-Purpose computation on GPU CPU GPU GPU *1 Intel Quad-Core Xeon E5472 3.0 GHz 2 6 MB L2 cache 1600 MHz FSB 80 GFlops 1 nvidia Geforce 8800GTX 300 GFlops CPU GPU GPU 2008 2 GPU 1 TFlops *2 TOP 500 2 2005 6 500 1.2 TFLOPS GPU 3 4 *3 GPU GPU GPGPU GPGPU 1978 Ikonas System 3 1990 GPU 2000 GPGPU GPGPU 4,5 GPGPU HLSL GLSL Cg GPU CUDA Compute unified device architecturenvidia GPU C/CHLSL GLSL *1 nvidia Geforce 8800GTX 7 8 2007 *2 2008 6 16 nvidia GeForce GTX 280 AMD AMD FireStream 9250 1 TFlops *3 BlueGene/L 478 TFLOPS 2007

DirectX OpenGL API CUDA GPU C/C CUDA GPGPU GPGPU II. CUDA III. CUDA IV. CUDA V. VI. CUDA CUDA GPU CUDA 6 GeForce 8 CUDA 1 GPU CUDA nvidia GPU 3 GeForce Quadro GeForce Tesla HPC CUDA Windows XP Windows Vista Linux CUDA Windows Visual Studio Series GeForce Quadro Tesla Products 9800 GX2, 9800 GTX, 9800 GT, 8800 Ultra, 8800 GTX, 8800 GTS, 8800 GT, 8800 GS, 8600 GTS, 8600 GT, 8500 GT, 8400 GS, 8800M GTX, 8800M GTS, 8700M GT, 8600M GT, 8600M GS, 8400M GT, 8400M GS, 8400MG FX5600, FX4600, FX3700, FX1700, FX570, FX370, NVS290, FX3600M, FX1600M, FX570M, FX360M, Quadro Plex 1000Model IV, Quadro Plex 1000Model S4, NVS320M, NVS140M, NVS135M, NVS130M C870, D870, S870

2003 2005 Linux gcc g CUDA Windows CUDA HPC CUDA 2.0 Beta CUDA SDK 3 OS OS NVIDIA Driver for Microsoft Windows XP with CUDA Support (174.55) CUDA Toolkit version 2.0 for Windows XP CUDA SDK version 2.0 for Windows XP CUDA CUDA Toolkit C:\CUDA CUDA SDK CUDA SDK C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK CUDA CUDA SDK CUDA 1 main.cu.cu CUDA nvcc Visual Studio 2005 CUDA main.cu C:\Your\Source\Path> nvcc main.cu a.exe CUDA 1 kernel <<< nblocks, nthreads >>> ( ddata ); GPU CPU nvidia C/C CUDA GPU CPU <<<... >>><<<... >>> GPU global void kernel int *data

1 #i n c l u d e <stdio.h> 2 3 global void kernel( int data ) 4 { 5 data [ threadidx.x ] = threadidx.x; 6 } 7 8 int main( int argc, char argv [ ] ) 9 { 10 int ddata, hdata [ 5 ] ; 11 cudamalloc( ( void )&ddata, sizeof( int ) 5 ); 12 13 dim3 nthreads( 5, 1 ); 14 dim3 nblocks( 1, 1 ); 15 k e r n e l <<< nblocks, nthreads >>>( ddata ) ; 16 17 cudamemcpy( hdata, ddata, sizeof( int ) 5, cudamemcpydevicetohost ) ; 18 19 for( int i = 0 ; i < 5 ; i++ ) 20 { 21 p r i n t f ( %d, hdata [ i ] ) ; 22 } 23 p r i n t f ( \n ); 24 25 return( 0 ); 26 } III. GPGPU CUDA CUDA CUDA GPU GPU GPU CUDA GPU 1 CUDA CUDA CUDA CPU ( ) CUDA 2

CUDA CUDA C/C 2 2 CPU GPU

device global host device constant shared GPU GPU CPU GPU CPU CPU GPU GPU GPU 2 global void kernel ( int *parameter ) 2 global CPU GPU global void kernel ( int *parameter ) kernel<<< nblocks, nthreads, nbytes >>>( parameter ); nblocks nthreads nbytes nbytes syncthreads 3 4 CUDA CUDA Occupancy Calculator GPU 1 global void kernel( int parameter ) 2 { 3 // 4 } 5 6 int main( int argc, char argv [ ] ) 7 { 8 //... 9 10 // 11 k e r n e l <<< nblocks, nthreads, nbytes >>>( parameter ); 12 13 //... 14 }

griddim blockidx blockdim threadidx CUDA GPGPU C A B CUDA 16 A r c a rc CUDA CPU GPU CPU GPU global GPU GPU device CUDA CPU GPU *4 CUDA GPU CUDA GPU shared GPU 3 3 C c rc c rc = ca k=1 a rk b kc 1 GPU ra A ca A 3 GPU A *4 GPU CPU CPU GPU

1 global void multiply( float A, float B, float C, int ra, int ca ) 2 { 3 int c = threadidx.x + blockidx.x blockdim. x ; 4 int r = threadidx.y + blockidx.y blockdim. y ; 5 6 float sum = 0.0 f ; 7 for( int k = 0 ; k < ca ; k++ ) 8 { 9 sum += A[ r + k ra ] B[k + c ca ] ; 10 } 11 12 C[ c ra + r ] = sum ; 13 } B C threadidxblockdim blockdimgpu multiply threadidx GPU threadidxblockdim 8 2.2 3 3 CPU 4 CUDA CPU GPU CPU GPU 11 13 CPU 16 18 GPU 23 24 CPU GPU cudamemcpy CPU GPU GPU 27 28 31 3 CUDA III. CUDA Occupancy Calculator GPU CPU 34 39 44 3 4 CPU 3 3 CUDA GPU 4 CUDA

1 int main( int argc, char argv [ ] ) 2 { 3 int ra = 512; // A 4 int ca = 5 1 2 ; // A 5 int rb = ca ; // B 6 int cb = 512; // B 7 float ha, hb, hc ; // C P U 8 float da, db, dc ; // G P U 9 10 // C P U 11 ha = ( float )malloc( ra ca sizeof( float ) ); 12 hb = ( float )malloc( rb cb sizeof( float ) ); 13 hc = ( float )malloc( ra cb sizeof( float ) ); 14 15 // G P U 16 cudamalloc( ( void )&da, ra ca sizeof( float ) ); 17 cudamalloc( ( void )&db, rb cb sizeof( float ) ); 18 cudamalloc( ( void )&dc, ra cb sizeof( float ) ); 19 20 / / 21 22 // CPUGPU 23 cudamemcpy( da, ha, ra ca sizeof( float ), cudamemcpyhosttodevice ) ; 24 cudamemcpy( db, hb, rb cb sizeof( float ), cudamemcpyhosttodevice ) ; 25 26 // GPU 27 dim3 nthreads( 16, 16 ); 28 dim3 nblocks ( ra / nthreads.x, cb / nthreads. y ); 29 30 // G P U C = A B dc 31 multiply<<< nblocks, nthreads >>>( da, db, dc, ra, ca ); 32 33 // GPUCPU 34 cudamemcpy( hc, dc, ra cb sizeof( float ), cudamemcpydevicetohost ) ; 35 36 / hc / 37 38 // CPU GPU 39 cudafree( da ); 40 cudafree( db ); 41 cudafree( dc ); 42 f r e e ( ha ) ; 43 f r e e ( hb ) ; 44 f r e e ( hc ) ; 45 46 return( 0 ); 47 }

5 C A B 5 A B 16 16 A B 12 13 9 10 shared ta tb 15 syncthreads 17 20 16 16 GPU Bank Conflict Bank Conflict CUDA Programming Guide [8] Bank Conflict 1 global void multiply( float A, float B, float C, int ra, int ca ) 2 { 3 int c = threadidx.x + blockidx.x blockdim. x ; 4 int r = threadidx.y + blockidx.y blockdim. y ; 5 6 float sum = 0.0 f ; 7 for( int k = 0 ; k < ca ; k += 16 ) 8 { 9 shared float ta[16][16]; 10 shared float tb[16][16]; 11 12 ta[ threadidx.y ][ threadidx.x] = A[ r + ( k + threadidx.x ) ra ] ; 13 tb[ threadidx.y ][ threadidx.x] = B[( k + threadidx.y ) + c ca ] ; 14 15 syncthreads( ); 16 17 for( int t = 0 ; t < 16 ; t++ ) 18 { 19 sum += ta [ threadidx. y ] [ t ] tb[ t ][ threadidx.x ]; 20 } 21 22 syncthreads( ); 23 } 24 25 C[ c ra + r ] = sum ; 26 }

C A B A B C 3 5 3 3 Dell Precision Workstation T7400 CPU: Intel Quad Core Xeon 3.20 GHz 2 nvidia Quadro FX5600 4.0 GB RAM, Windows XP SP2 3 3 5 CPU CPU 3 5 A B C 512 512 CPU 404.5 ms. 3 191.6 ms. 5 12.0 ms. 5 CPU 33 3 16 CT MRI CUDA OS: WindowsXP CPU: Intel Quad-Core Xeon 3.20 GHz Memory: 3.0 GB GPU: NVIDIA Quadro FX5600 2 4

CPU CUDA CPU 10 CUDA CUDA 6 CUDA CUDA GPGPU 5,7 GPGPU CUDA GPGPU GPU CPU GPGPU PC GPGPU 1 GPU 32 GPU 2008 6 16 GPU 2008 GPU

CUDA Bank Conflict GPU CUDA CUDA Programming Guide [8] CUDA GPGPU [1] http://www.intel.co.jp/jp/performance/server/xeon/hpcapp.htm [2] TOP 500, http://www.top500.org [3] J. N. England, A system for interactive modeling of physical curved surface objects, Proceedings of SIGGRAPH 78, pp.336 340. 1978 [4] M. J. Harris, G. Coombe, T. Scheuermann, and A. Lastra, Physically-Based Visual Simulation on Graphics Hardware, Proceedings of SIGGRAPH 2002 / Eurographics Workshop on Graphics Hardware 2002, pp.1 10, 2002 [5] J. D. Owens, D. Luebke, N. Govindaraju, M. Harris, J. Krüger, A. E. Lefohn, and T. J. Purcell, A Survey of General-Purpose Computation on Graphics Hardware, Computer Graphics Forum, Vol.26, No.1, pp.80 113, 2007 [6] CUDA ZONE, http://www.nvidia.com/object/cuda_home.html [7] GPGPU, http://www.gpgpu.org/ [8] CUDA Programming Guide, http://www.nvidia.com/object/cuda_develop. html