CUDA超大规模并行程序设计

上传人:xian****812 文档编号:285071162 上传时间:2022-04-29 格式:PPT 页数:93 大小:1.68MB
返回 下载 相关 举报
CUDA超大规模并行程序设计_第1页
第1页 / 共93页
CUDA超大规模并行程序设计_第2页
第2页 / 共93页
CUDA超大规模并行程序设计_第3页
第3页 / 共93页
CUDA超大规模并行程序设计_第4页
第4页 / 共93页
CUDA超大规模并行程序设计_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《CUDA超大规模并行程序设计》由会员分享,可在线阅读,更多相关《CUDA超大规模并行程序设计(93页珍藏版)》请在金锄头文库上搜索。

1、CUDA 超大规模并行程序设计超大规模并行程序设计邓仰东邓仰东清华大学微电子学研究所清华大学微电子学研究所22提纲提纲n从从GPGPU到到CUDAnCUDA并行程序组织并行程序组织n并行执行模型并行执行模型nCUDA基础基础nCUDA存储器存储器nCUDA程序程序设计工具工具n程序程序优化化33Graphic Processing Unit (GPU)n用于个人用于个人计算机、工作站和游算机、工作站和游戏机的机的专用用图像像显示示设备l显示卡显示卡nVidia和和ATI (now AMD)是主要制造商是主要制造商Intel准备通过准备通过Larrabee进入这一市场进入这一市场l主板集成主板集

2、成Intel443维图像流水线维图像流水线Vertex ProcessorFragment ProcessorRasterizerFramebufferTextureCPUGPU55实时实时3维高速图形处理维高速图形处理n一帧典型图像一帧典型图像l1M trianglesl3M verticesl25M fragmentsn30 frames/sl30M triangles/sl90M vertices/sl750M fragments/s66传统传统GPU架构架构Graphics programVertex processorsFragment processorsPixel operati

3、onsOutput image77GPU的强大运算能力的强大运算能力数据级并行: 计算一致性专用存储器通道有效隐藏存储器延时88General Purpose Computing on GPU (GPGPU)99GPGPUn核心思想核心思想l用图形语言描述通用计算用图形语言描述通用计算问题问题l把数据映射到把数据映射到vertex或者或者fragment处理器处理器n但是但是l硬件资源使用不充分硬件资源使用不充分l存储器访问方式严重受限存储器访问方式严重受限l难以调试和查错难以调试和查错l高度图形处理和编程技巧高度图形处理和编程技巧1010NVidia G200 ArchitectureStr

4、eaming Processor (SP)Special Function Unit (SFU)Double Precision FPU1111CUDA: Compute Unified Device Architecturen通用并行计算模型通用并行计算模型l单指令、多数据执行模式单指令、多数据执行模式 (SIMD)所有线程执行同一段代码所有线程执行同一段代码(1000s threads on the fly)大量并行计算资源处理不同数据大量并行计算资源处理不同数据l隐藏存储器延时隐藏存储器延时提升计算通信比例提升计算通信比例合并相邻地址的内存访问合并相邻地址的内存访问 快速线程切换快速线程

5、切换1 cycleGPU vs. 1000 cyclesCPU1212混合混合计计算模型算模型nCUDA: 集成集成CPU + GPU C应用程序应用程序lCPU: 顺序执行代码顺序执行代码lGPU = 超大规模数据并行协处理器超大规模数据并行协处理器“批发批发”式执行大量细粒度线程式执行大量细粒度线程. . . . .kernel 0CPU Serial CodeCPU Serial CodeGPU Parallel CodeGPU Parallel CodeConcurrent execution!kernel 11313CUDA成功案例成功案例1414CUDA性能性能nBLAS3: 12

6、7 GFLOPS/基本基本线性代数性代数: matrix-matrixnFFT: 52 benchFFT*GFLOPSnFDTD: 1.2 Gcells/sec/计算算电动力学力学nSSEARCH: 5.2 Gcells/sec/Smith-Waterman基因序列比基因序列比较nBlack Scholes: 4.7GOptions/sec /期期权定价模型定价模型nVMD: 290 GFLOPS/分子分子动力学力学图形形显示示1515Problem Instances for Sparse Matrix Vector Product (SMVP)Problem Instance# rows#

7、 columns# non-zerosAvg. # non-zeros per rowDescriptionLin25600025600017664006.9Large sparse Eigenvalue problemt2em92163292163245908325.0Electromagnetic problemsecology11000000100000049960005.0Circuit theory applied to animal/gene flowcont111468599196139453829993.7Linear programmingsls174812262729680

8、43043.9Large least-squares problemG3_circuit1585478158547876608264.8AMD circuit simulationthermal21228045122804585803137.0FEM, steady state thermal problemkkt_power20634942063494127713616.2Optimal power flow, nonlinear optimization Freescale134287553428755170526265.0Freescale circuit simulation1616S

9、PMV Throughput on GTX280Problem InstanceCPU (GFLOPS)GPU (GFLOPS)Speed-upLin0.269.2336.04t2em0.2912.4143.44ecology10.249.0337.43cont110.3110.6633.84sls0.2810.1036.49G3_circuit0.218.8641.45thermal20.218.9741.89kkt_power0.265.7022.01Freescale10.2911.5640.371717SMVP Application: Static Timing AnalysisAd

10、apted from Ramalingam, A. et. al. An Accurate Sparse Matrix Based Framework for Statistical Static Timing Analysis. ICCAD. 2006. 1818Static Timing Analysis Results on GTX280InstanceCPU (#paths per second) GPU (#paths per second) Speed-upb18_50K1.95E+061.02E+0852.33b18_100K1.92E+069.57E+0749.82b19_50

11、K2.46E+061.10E+0844.64b19_100K2.42E+061.14E+0847.001919提提纲纲n从从GPGPU到到CUDAnCUDA并行程序组织并行程序组织n并行执行模型并行执行模型nCUDA基础基础nCUDA存储器存储器nCUDA程序程序设计工具工具n程序程序优化化2020并行性的并行性的维维度度n1维ly = a + b /y, a, b vectorsn2维lP = M N /P, M, N matricesn3维lCT or MRI imaginga0a1anb0b1bny0y1yn+= =2121并行并行线线程程组织结组织结构构nThread: 并行的基本单位

12、并行的基本单位nThread block: 互相合作的线程组互相合作的线程组lCooperative Thread Array (CTA)l允许彼此同步允许彼此同步l通过快速共享内存交换数据通过快速共享内存交换数据l以以1维、维、2维或维或3维组织维组织l最多包含最多包含512个线程个线程nGrid: 一组一组thread blockl以以1维或维或2维组织维组织l共享全局内存共享全局内存nKernel: 在在GPU上执行的核心程序上执行的核心程序lOne kernel one gridHostKernel 1Kernel 2DeviceGrid 1Block(0, 0)Block(1, 0)

13、Block(2, 0)Block(0, 1)Block(1, 1)Block(2, 1)Grid 2Block (1, 1)Thread(0, 1)Thread(1, 1)Thread(2, 1)Thread(3, 1)Thread(4, 1)Thread(0, 2)Thread(1, 2)Thread(2, 2)Thread(3, 2)Thread(4, 2)Thread(0, 0)Thread(1, 0)Thread(2, 0)Thread(3, 0)Thread(4, 0)2222Parallel Program Organization in CUDAThreadThread bloc

14、kGridSPSoftwareHardwareSMGPU2323并行并行线线程程执执行行n调用用kernel function 需要指定需要指定执行配置行配置nThreads和和blocks具有具有IDslthreadIdx: 1D, 2D, or 3DlblockIdx: 1D, or 2Dl由此决定相应处理数据由此决定相应处理数据_global_ void kernel(.);dim3 DimGrid(3, 2); / 6 thread blocks dim3 DimBlock(16, 16); / 256 threads per block kernel (.);2424实例实例1: E

15、lement-Wise Addition/CPU program/sum of two vectors a and bvoid add_cpu(float *a, float *b, int N)for (int idx = 0; idxN; idx+) aidx += bidx;void main().fun_add(a, b, N);/CUDA program/sum of two vectors a and b _global_ void add_gpu(float *a, float *b, int N)Int idx =* + ;if (idx N)aidx += bidx;void

16、 main().dim3 dimBlock (256);dim3 dimGrid( ceil( N / 256 );fun_add(a, b, N);2525提提纲纲n从从GPGPU到到CUDAnCUDA并行程序组织并行程序组织n并行执行模型并行执行模型nCUDA基础基础nCUDA存储器存储器nCUDA程序程序设计工具工具n程序程序优化化2626CUDA Processing Flow2727并行线程执行并行线程执行nSM内以内以(warp即即32 threads)为单为单位并行执行位并行执行lWarp内线程执行同一条指令内线程执行同一条指令lHalf-warp是存储操作的基本单位是存储操作的基本单位WarpBlock 0Block 1Block 22828GPU负载负载分配分配nGlobal block schedulerl管理管理thread block级并行级并行l从从CPU获得线程组织信息获得线程组织信息l根据硬件结构分配根据硬件结构分配thread block到到SM2929Streaming Multiprocessor (SM)3030Streaming Multipro

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号