资源描述:
《cudagpu入门介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、--AnintroductiontobeginnersGPU&CUDA内容1GPU高性能计算2CUDA架构3CUDA环境搭建4CUDA简单例子1.GPU高性能计算GPU:从图形处理到通用计算GPU:GraphicProcessingUnitGPU为高度并行的实时3D渲染计算而设计,高GFLOPS,高带宽3D渲染技术及3DAPI的发展,促进GPU向通用计算处理器发展NVIDIAGPU为通用计算专门优化设计,于2007年推出CUDAGPU多”核”:SM真正意义的变革通用计算重要突破GPU通用计算开始出现GeForce8800GeForce6800
2、GeForce3GeForce256世界上第一个GPU1.GPU高性能计算GPUVSCPU:计算能力8xdoubleprecisionECCL1,L2Caches1TFSinglePrecision4GBMemoryNVIDIAGPUX86CPU1.GPU高性能计算GPUVSCPU:硬件体系目标:最小的指令延迟巨大的缓存复杂的控制逻辑目标:最大吞吐量更多寄存器、高带宽通过线程轮换隐藏延迟多个线程共享控制逻辑1.GPU高性能计算GPU应用领域用同一计算方法对很大量的数据进行并行计算数据相关度低计算密度大,计算所花的时间比数据存储的时间大得多1.
3、GPU高性能计算GPU关键概念SM:StreamMultiprocessorSP:StreamProcessor每个SM包含8个SP,由SM取指,解码,发射到各个SP,GPU可看作是一组SMSMEM:sharedmemory,GPU片内每个SM所占有的高速存储器Globalmemory:GPU板载显存2.CUDA架构CUDA–ComputeUnifiedDeviceArchitecture由NVIDIA2007年推出的通用并行计算架构第一种不需要借助图形学API就可以使用类C语言极性通用计算的开发环境和软件体系在采用了统一架构的GPU上运行N
4、VIDIA提供完全免费的CUDA开发工具包和SDK对标准C语言的简单扩展,以最小的扩展集实现CUDA架构2.CUDA架构存储器模型Thread私有register(RW)Thread私有localmemory(RW)Block的sharedmemory(RW)Grid的globalmemory(RW)Grid的constantmemory(RO)Grid的texturememory(RO)Host可以通过API完成显存与主存交互2.CUDA架构线程组织模型每个内核程序(Kernel)包含非常多的线程所有线程执行相同的顺序程序层次结构:Gri
5、dBlockThread线程被划分成线程块(Block)同一线程块内的线程可以通过共享SM资源相互协作每个线程和线程块拥有唯一ID通过内建变量读取2.CUDA架构线程映射ThreadSPBlockSMGridGPU把GPU看作一个包含很多个核心的多核处理器有自己的本地存储器大量的线程并行执行每个线程拥有私有变量/存储区域线程之间拥有共享的存储区域与CPU的差别:GPU的线程是轻量级的(代码少,硬件轮换,资源负担小);需要很大量的线程才能使GPU满载2.CUDA架构CPU/GPU异构并行模型由CPU端(主机端)传送参数及配置Kerne
6、l的执行(Block,Thread数量,尺寸等)Kernel在GPU(设备端)上执行显存分配,显存与PC主存间的交互通过API完成2.CUDA架构CUDAC扩展:编译器nvccCUDA源程序--CU文件编译器驱动分离主机端源代码和设备端源代码编译设备端源代码到GPU汇编代码(PTX)或GPU二进制代码(CUBIN)把最终GPU代码包裹在主机端源代码中CUDAC扩展:APIDriverAPI调用Kernel较繁琐RuntimeAPI较方便2.CUDA架构CUDAC扩展:函数限定符__global__GPUKernel代码,由CPU发起,返回vo
7、id,不能由其它Kernel调用__device__由GPUKernel调用的函数,不能由CPU发起__host__在CPU上执行的函数CUDAC扩展:变量限定符__constant__变量位于常数存储器__shared__变量位于共享存储器2.CUDA架构CUDAC扩展:内建变量无需定义/声明,直接在kernel中调用dim3gridDim;//Grid尺寸dim3blockDim;//Block尺寸dim3blockIdx;//BlockIDdim3threadIdx;//Thread点CUDAC扩展:执行配置调用:my_kernel<<
8、>>(...);<<>>实际是为gridDim和blockDim赋值决定当前线程需要