GPU的强大运算能力GTN7508000GTGeFerceST900GTXGefCGOGT7800120FX580500-GPUG80 UltraCPUtnfCPU100+NVIDIAGFUG71(e)Mueqo250G8032G13.0GHHanpetonNV40N36Core2DuG716cNV30o+Oct-02Mar-04Jul-05Nov-OeApr-08HapertownNV30数据级并行:计算一致性20WooderestPrescott EENorthwood20042005200720032006专用存储器通道有效隐藏存储器延时6
6 6 GPU的强大运算能力 0 20 40 60 80 100 120 2003 2004 2005 2006 2007 Memory bandwidth (GB/s) GPU CPU G80 Ultra G80 G71 NV40 NV30 Hapertown Woodcrest Prescott EE Northwood 0 20 40 60 80 100 120 2003 2004 2005 2006 2007 Memory bandwidth (GB/s) GPU CPU G80 Ultra G80 G71 NV40 NV30 Hapertown Woodcrest Prescott EE Northwood •数据级并行: 计算一致性 •专用存储器通道 •有效隐藏存储器延时
General PurposeComputingonGPU (GPGPU)Startby creatinga quadOpenGLProgramtoAdd Aand BVertexProgram"Programs"createdwithrasteroperation1Rasterization1ReadtexturesasinputtoOpenGLshaderprogramFragmentProgramCPUReads TextureWriteanswer totexture memoryasa“colorMemoryforResultsAllthisjusttodoA+B7
7 7 General Purpose Computing on GPU (GPGPU)
GPGPU核心思想HONt/FW/VTF用图形语言描述通用计算CulClpSeti问题Shaderimstruction Dispatch把数据映射到vertex或者fragment处理器但是硬件资源使用不充分存储器访问方式严重受限MePart难以调试和查错DRAM(S)DRAMISSDRAM(S)DRAMS)高度图形处理和编程技巧8
8 8 GPGPU ◼ 核心思想 ⚫ 用图形语言描述通用计算 问题 ⚫ 把数据映射到vertex或者 fragment处理器 ◼ 但是⚫ 硬件资源使用不充分 ⚫ 存储器访问方式严重受限 ⚫ 难以调试和查错 ⚫ 高度图形处理和编程技巧
G80 GPUHostInputAssemblerSetup/Rstr/ZCullVtxThreadIssueGeom ThreadIssuePixel Thread Issue8BUBN联NEN店机全理商国国L2L2L2L2L2国国FBFBFBFBFBFBStreaming ProcessorStreaming Multiprocessor(SP)(SM)9
9 9 G80 GPU L2 FB SP SP L1 TF Thread Processor Vtx Thread Issue Setup / Rstr / ZCull Geom Thread Issue Pixel Thread Issue Input Assembler Host SP SP L1 TF SP SP L1 TF SP SP L1 TF SP SP L1 TF SP SP L1 TF SP SP L1 TF SP SP L1 TF L2 FB L2 FB L2 FB L2 FB L2 FB Streaming Multiprocessor (SM) Streaming Processor (SP)
CUDA:ComputeUnified Device ArchitectureCUDA:集成CPU+GPUC应用程序通用并行计算模型单指令、多数据执行模式(SIMD)所有线程执行同一段代码(1000sthreadsonthefly)大量并行计算资源处理不同数据隐藏存储器延时提升计算/通信比例合并相邻地址的内存访问快速线程切换1cycle@GPUvs.~1000cycles@CPUThreadBlock1ThreadBlockN-ThreadBlock000850700050000204500threadIDtlost xfloat xtloat?input[threadID]:input[threadip]input[threadID]:Eloaty-tune(x)irloat yfune(x):float yafune(x))output[threadiD]yioutput[threadiD]Yioutput[threadrD] y]22222223222222221222222210
10 10 CUDA: Compute Unified Device Architecture ◼ CUDA: 集成CPU + GPU C应用程序 ◼ 通用并行计算模型 ⚫ 单指令、多数据执行模式(SIMD) • 所有线程执行同一段代码(1000s threads on the fly) • 大量并行计算资源处理不同数据 ⚫ 隐藏存储器延时 • 提升计算/通信比例 • 合并相邻地址的内存访问 • 快速线程切换1 cycle@GPU vs. ~1000 cycles@CPU