1_CUDA_简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

CUDA简介上海大学计算机学院沈文枫孙连强2014.6.19上海大学计算机学院主要框架CUDA编程环境2CUDA配置4CUDA总结5CUDA软件3GPU简介1上海大学计算机学院GPU简介用于个人计算机、工作站和游戏机的专用图像显示设备显示卡或主板集成nVidia和ATI(nowAMD)是主要制造商GraphicProcessingUnit(GPU)上海大学计算机学院GPU简介1.GPU诞生背景:超高计算能力要求1.CPU处理能力不断强大,但在进入3D时代后,人们发现庞大的3D图像处理数据计算使得CPU越来越不堪重荷,并且远远超出其计算能力;2.图形计算需求日益增多,作为计算机的显示芯片也飞速发展。图形,图像计算等计算的功能被脱离出来,单独设计为一块芯片——GPU(也就是显卡)。2.GPU的变革:G80的诞生1.流处理器的出现:图像渲染;强大的运算能力;2.CPU:串行的计算方式向并行计算发展,比如目前主流的双核、四核CPU;3.GPU:核心的一个流处理器相当于一个“核”,GPU的“核”数量已经不再停留在单位数,而是几十甚至是上百个。上海大学计算机学院GPU与CPU的比较CPU的内部结构:控制单元、逻辑单元和存储单元运算器:算术运算(如加减乘除)和逻辑运算(如逻辑加、逻辑乘和非运算)控制器:读取各种指令,并对指令进行分析,作出相应的控制。若干个寄存器:可直接参与运算并存放运算的中间结果。GPU采用了大量的执行单元,这些执行单元可以轻松的加载并行处理,而不像CPU那样的单线程处理。另外,现代的GPU也可以在每个指令周期执行更多的单一指令。上海大学计算机学院GPU的强大浮点运算能力GPU超强的浮点数运算能力同期IntelCore2Due的24GFLOPS(Floating-pointOperationsperSecond)浮点数处理能力和G80Chip的520GFLOPS相比,G80要快21.6倍,GPU浮点运算性能优势显而易见。虽然说NVIDIA与AMD单精度(FP32)运算能力都突破了1TFlops。目前CUDA支持双精度计算,目前支持的产品有GeForceGTX295,GeForceGTX285,GTX280,GeForceGTX260,TeslaS1070,TeslaC1060,QuadroPlex2200D2,QuadroFX5800,QuadroFX4800上海大学计算机学院传统GPU架构传统GPU的核心组成部分是Shader(着色器):PixelShader(像素单元)和VertexShader(顶点单元)。在图形处理中,像素是由RGB(红绿蓝)构成的,加上信息说明(Alpha),总共是4个通道。而顶点数据一般也是由XYZW四个坐标构成,这样也是4个通道。在3D图形进行渲染时,其实就是改变RGBA四个通道或者XYZW四个坐标的数值。这样的4D矢量运算单元在渲染3D图形时会有很高的效率,但在处理复杂指令时的效率会大打折扣,比如DX10新引入的几何着色、物理加速等,尤其在面对非图形渲染指令时优势全无。上海大学计算机学院GPU到CUDAGPU多“核”:SM真正意义的变革通用计算重要突破GPU通用计算开始出现世界上第一个GPUGeForce8800GeForce6800GeForce3GeForce256上海大学计算机学院CUDA概论—简介CUDA–ComputeUnifiedDeviceArchitecture(统一计算设备架构)特点:专门针对GPU的开发工具。需要Nvidia公司的GeForce80以上系列、Tesla系列和Quadro系列等硬件的支持。性能:程序效率能够得到大大提升。与采用图形API接口指挥GPU完成运算不同,CUDA可以自由地输入代码调用GPU的并行处理架构。优势:可以使用类C语言进行通用计算。CUDA的GPU编程语言基于标准的C语言,任何有C语言基础的用户都很容易地开发CUDA的应用程序。上海大学计算机学院CUDA–异构并行host+device异构并行C应用程序Host端串行C代码Device端SPMD并行化kernel(内核)C代码CPU串行代码(host)GPU并行内核(device)KernelAnBlk,nTid(args);CPU串行代码(host)GPU并行内核(device)KernelBnBlk,nTid(args);......并发执行上海大学计算机学院CUDADevicesandThreads计算设备(device)CPUorhost的协处理器(coprocessor)拥有独自的DRAM(devicememory)可以并行的运行很多Threads一般来说是GPU,也可以是其他并行处理器一个应用程序的数据并行部分能够用许多设备内核(devicekernel)线程表示GPU线程和CPU线程不同点GPU线程是轻量级线程•很少的创建开销(overhead)GPU要完全利用至少需要1000个线程•多核CPU则不需要上海大学计算机学院并行线程组织结构Thread:并行的基本单位Threadblock:互相合作的线程组CooperativeThreadArray(CTA)允许彼此同步通过快速共享内存交换数据以1维、2维或3维组织最多包含512个线程Grid:一组threadblock以1维、2维或3维组织共享全局内存Kernel:在GPU上执行的核心程序OnekernelOnegrid上海大学计算机学院CUDA—内存空间Eachthreadcan:Read/writeper-threadregistersRead/writeper-threadlocalmemoryRead/writeper-blocksharedmemoryRead/writeper-gridglobalmemoryRead/onlyper-gridconstantmemoryGridGlobalMemoryBlock(0,0)SharedMemoryThread(0,0)RegistersThread(1,0)RegistersBlock(1,0)SharedMemoryThread(0,0)RegistersThread(1,0)RegistersHostConstantMemory上海大学计算机学院CUDA处理器术语SPAStreamingProcessorArray(流处理器阵列,8inG80)TPCThreadProcessingCluster(线程处理集群,2SM+Texture,inG80,3SM+Texture,inGTX200)SMStreamingMultiprocessor(流多处理器,8SP’s)Multi-threadedprocessorcore(多线程处理器核)BasicprocessingunitforCUDAthreadblock(CUDA线程块的基本处理单元)SPStreamingProcessor(流处理器)ScalarprocessorforasingleCUDAthread(CUDA单一线程的标量处理器)上海大学计算机学院G80—GraphicModelL2FBSPSPL1TFThreadProcessorVtxThreadIssueSetup/Rstr/ZCullGeomThreadIssuePixelThreadIssueInputAssemblerHostSPSPL1TFSPSPL1TFSPSPL1TFSPSPL1TFSPSPL1TFSPSPL1TFSPSPL1TFL2FBL2FBL2FBL2FBL2FBStreamingMultiprocessor(SM)StreamingProcessor(SP)上海大学计算机学院G80—CUDAModelStreamingMultiprocessor(SM)StreamingProcessor(SP)Load/storeGlobalMemoryThreadExecutionManagerInputAssemblerHostTextureTextureTextureTextureTextureTextureTextureTextureTextureParallelDataCacheParallelDataCacheParallelDataCacheParallelDataCacheParallelDataCacheParallelDataCacheParallelDataCacheParallelDataCacheLoad/storeLoad/storeLoad/storeLoad/storeLoad/storeThreadProcessingCluster(TPC)ScalableStreamingProcessorArray(SPA)上海大学计算机学院GTX200—GraphicModel上海大学计算机学院GTX200—CUDAModel上海大学计算机学院G80:ExecutingThreadBlocks线程以线程块为单位分配到SM中去每个SM中最多8个BlockG80中每个SM最多768个线程•官方推荐每个Block中不少于64个线程•Block中线程数不大于512•64*8,96*8,128*6,192*4,256*3,384*1,512*1t0t1t2…tmBlocksSPSharedMemoryMTIUSPSharedMemoryMTIUt0t1t2…tmBlocksSM1SM0线程是并发的执行线程以Warp块发射到SM中一个Warp中包含32个线程每一个线程发射到SP中运行,一个Warp运行4个clockcycles上海大学计算机学院G80:ThreadScheduling每个Block以Warp为基本单位执行Warp不是CUDA的一部分,而是一个补充概念在SM中Warp是调度单元假如3个Block分配到一个SM中,每个Block包含256个Thread,那么SM中有多少Warp?每个Block划分为256/32=8Warps因此有8*3=24Warps任一时刻,24个Warp只能有一个在执行…t0t1t2…t31……t0t1t2…t31…Block1WarpsBlock2WarpsSPSPSPSPSFUSPSPSPSPSFUInstructionFetch/DispatchInstructionL1StreamingMultiprocessorSharedMemory上海大学计算机学院G80:ThreadSchedulingSM硬件实现0开销Warp调度Warps指令齐全的话,就已经准备好,则等待执行(ScoreBoard)合适的Warps选出来优先执行一个Warp内的所有线程执行相同的指令(instruction)执行一个Warp内的所有线程需要4个clockcycles假如没n个指令(instrucion)需要一次全局内存访问(oneglobalmemoryacess)至少要200/4n个WarpGlobalmemory:200-cyclememorylatencyTB1W1TB=ThreadBlock,W=WarpTB2W1TB3W1TB2W1TB1W1TB3W2TB1W2TB1W3TB3W2TimeTB1,W1stallTB3,W2stallTB2,W1stallInstruction:1234561212341278121234上海大学计算机学院G80SharedMemoryandThreading每个SM拥有16KB的sharedmemory动态资源:相同SM中Blocks分享16KB,但是不同的Blocks不能读取其他Blocks的数据.SMsize是根据实际情况来分配的!例如TILE_WIDTH=16,每个threadblock能够分配2*256*4B=2KB的sharedmemory.能否

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功