GPGPU (I) GPU GPGPU 1 GPU(Graphics Processing Unit) GPU GPGPU(General-Purpose computing on GPUs) GPU GPGPU GPU ( PC ) PC PC GPU PC PC GPU GPU 2008 TSUBAME NVIDIA GPU(Tesla S1070) TOP500 29 [1] 2009 AMD GPU(RadeonHD4870X2) TOP500 5 [2] ( ) GPGPU GPU GPU (HPC) GPGPU GPU GPGPU GPGPU CPU GPU GPU CPU GPU ( ) GPU CPU GPU GPGPU GPU 5 1 : GPU GPGPU 2 3 : GPU CUDA CUDA 4 5 : GPU 1
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 GPU PC GPU GPU GPU 2D 3D GPU 2D 3D GPU PC 3D CPU 3D 1999 Microsoft DirectX 7.0 (Transform&Lighting) 3D GPU( ) GPU CPU GPU GPU ( 1) GPU 3D 2 GPU 3D 5 : 1. CPU GPU ( ) 2. 3. 4. 5. 3D 2
1 CPU GPU 2 3
GPU 3D GPU API(DirectX OpenGL) ON/OFF ( ) GPU GPU GPU GPU GPU GPU GPU GPU VertexShader PixelShader FragmentShader DirectX OpenGL 2 API GPU 1 GPU GPU GPU GPU GPGPU 3D ( 3) 4
GPU ( ) 3 2004 GPU GeForce6800 ( 6 16 ) GPU GPU GPU GPU GPGPU 2006 GPU ( ) ( ) 5
( 4-a) GPU ( ) GPU ( ) ( 4-b) GPGPU GPU 2007 3 GPU : NVIDIA GeForce Quadro Tesla AMD Radeon FirePro FireStream Intel Intel 3 GPGPU GPGPU CUDA CUDA GPGPU GPGPU ( GPGPU ) GPGPU GPGPU GPU ( ) ( ) 6
4 GPU GPU ( ) ( ) 2 ( ) (RGBA *1 ) ( ) ( ) 2 GPU 1 *1 Red,Green,Blue,Alpha 4 RGB Alpha 7
CPU CPU ( 5) 5 CPU GPU GPU ( ) GPU ( ) CPU GPU GPU GPU XYZW( ) ARGB( ) 4 GPU GPU CPU GPGPU API API API Microsoft DirectX(Windows ) The Khronos Group OpenGL( ) GPU API CPU GPU 8
GPU GPU DirectX HLSL[4] OpenGL GLSL[5] DirectX OpenGL Cg[6] C GPU ( API ) GPGPU GPGPU GPGPU GPU GPU GPU API GPU GPGPU GPGPU CUDA 2 3 4 5 2 1 API 2 ( ) 1 6 Larsen 2001 [7] 6 4 4 i ( )A i ( )B i 4 2 7 ( ) ( ) posx,posy 9
6 API 10
7 ( ) ID ID [8, 9] 4 GPU GPGPU GPU CPU GPGPU GPU GPGPU GPU GPU GPGPU HPC ECC GPGPU GPU GPU GPGPU NVIDIA 11
1 Intel AMD AMD NVIDIA XeonX5570 Opteron8435 FireStream9270 TeslaC1060 4 6 800 240 2.93GHz 2.6GHz 750MHz 1.3GHz 25.6GB/sec 12.8GB/sec 108.0GB/sec 102GB/sec DDR3 DDR2 GDDR5 GDDR3 72GB 32GB 2GB 4GB 1333MHz 800MHz 850MHz 800MHz (Float) 46.88GFlops 62.4GFlops 1.2TFlops 933GFlops (Double) 46.88GFlops 62.4GFlops 240GFlops 78GFlops 85W 75W 220W 187.8W 0.55GFlops/W 0.83GFlops/W 5.45GFlops/W 4.97GFlops/W 1W (Float) 2007 GPU CUDA(Cuda Unified Device Architecture ) AMD 2008 ATI Stream SDK(AMD Stream SDK) Brook+ CUDA C 2009 CUDA CUDA 1 CPU GPU GPU 1 CPU GPU CPU Intel XeonX5570 AMD Opteron8435 GPU HPC NVIDIA TeslaC1060 AMD FireStream9270 CPU GPU GPU CPU GPU CPU 6(Xeon HyperThreading 8) GPU 800 240 CPU 2GHz GPU 1GHz CPU GPU GPU SIMD CPU GPU GPU 12
GPU GPU CPU GPU GDDR SDRAM CPU CPU 1GPU GPU CPU CPU GPU GPU GPU CPU GPU CPU GPU GPU GPU CPU GPU GPU CPU CPU-GPU PCI-Express PCI-Express Gen2 x16 16GB/s GPU DRAM GPU CPU-GPU GPU GPU CPU-GPU CPU CPU GPU GPU CPU GPU CPU GPU CPU GPU CPU 1 CPU GPU 1 GPU GPU GPU PCI-Express CPU GPU GPU (NVIDIA SLI AMD CrossFire GPU GPU GPU ) GPU GPU 13
GPU CPU GPU GPU GPU GPGPU GPU CPU GPGPU CUDA ( ) [1]. GPGPU TSUBAME., http://www.gsic.titech.ac.jp/contents/news.html.ja?page=news/2008/1119/01, November 2008. [2] TOP500 Supercomputing Sites. Tianhe-1, November 2009. [3] NVIDIA. CUDA Zone The resource for CUDA developers, http://www.nvidia.com/object/cuda home.html. [4] Microsoft. DirectX, http://msdn.microsoft.com/ja-jp/directx/default.aspx. [5] The Khronos Group. OpenGL - The Industry Standard for High Perfoemance Graphics, http://www.opengl.org/. [6] NVIDIA. Cg Toolkit - GPU Shader Authoring Language, http://developer.nvidia.com/object/cg toolkit.html. [7] E.Scott Larsen and David McAllister. Fast matrix multiplies using graphics hardware. In Proceedings of the 2001 ACM/IEEE conference on Supercomputing, page CDROM, 2001. [8] K.Fatahalian, J.Sugerman, and P.Hanrahan. Understanding the Efficiency of GPU Algorithms for Matrix-Matrix Multiplication. In Graphics Hardware 2004, pages 133 137, 2004. [9] Jesse D. Hall, Nathan A. Carr, and John C. Hart. Cache and Bandwidth Aware Matrix Multiplication on the GPU. Technical report, University of Illinois Dept. of Computer Science, 2003. 14