欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    CUDA-GPU-入门介绍.ppt

    • 资源ID:80472048       资源大小:1.79MB        全文页数:27页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    CUDA-GPU-入门介绍.ppt

    -An introduction to beginnersGPU&CUDA内容n1 GPU高性能计算n2 CUDA架构n3 CUDA环境搭建n4 CUDA简单例子1.GPU高性能计算nGPU:从图形处理到通用计算nGPU:Graphic Processing UnitnGPU为高度并行的实时3D渲染计算而设计,高GFLOPS,高带宽n3D渲染技术及3D API的发展,促进GPU向通用计算处理器发展nNVIDIA GPU为通用计算专门优化设计,于2007年推出CUDAGPU多”核”:SM真正意义的变革通用计算重要突破GPU通用计算开始出现GeForce 8800GeForce 6800GeForce 3GeForce 256世界上第一个GPU1.GPU高性能计算nGPU VS CPU:计算能力8x double precisionECCL1,L2 Caches1 TF Single Precision4GB MemoryNVIDIA GPUX86 CPU1.GPU高性能计算nGPU VS CPU:硬件体系n目标:最小的指令延迟n巨大的缓存n复杂的控制逻辑n目标:最大吞吐量n更多寄存器、高带宽n通过线程轮换隐藏延迟n多个线程共享控制逻辑1.GPU高性能计算nGPU应用领域n用同一计算方法对很大量的数据进行并行计算n数据相关度低n计算密度大,计算所花的时间比数据存储的时间大得多1.GPU高性能计算nGPU关键概念nSM:Stream MultiprocessornSP:Stream Processorn每个SM包含8个SP,由SM取指,解码,发射到各个SP,nGPU可看作是一组SMnSMEM:shared memory,GPU片内每个SM所占有的高速存储器nGlobal memory:GPU板载显存2.CUDA架构nCUDA Compute Unified Device Architecturen由NVIDIA 2007年推出的通用并行计算架构n第一种不需要借助图形学API就可以使用类C语言极性通用计算的开发环境和软件体系n在采用了统一架构的GPU上运行nNVIDIA提供完全免费的CUDA开发工具包和SDKn对标准C语言的简单扩展,以最小的扩展集实现CUDA架构2.CUDA架构n存储器模型nThread私有register(RW)nThread私有local memory(RW)nBlock的shared memory(RW)nGrid的global memory(RW)nGrid的constant memory(RO)nGrid的texture memory (RO)nHost可以通过API完成显存与主存交互2.CUDA架构n线程组织模型n每个内核程序(Kernel)包含非常多的线程n所有线程执行相同的顺序程序n层次结构:Grid Block Threadn线程被划分成线程块(Block)n同一线程块内的线程可以通过共享SM资源相互协作n每个线程和线程块拥有唯一IDn通过内建变量读取2.CUDA架构n线程映射nThread SPnBlock SMnGrid GPUn把GPU看作一个包含很多个核心的多核处理器n有自己的本地存储器n大量的线程并行执行n每个线程拥有私有变量/存储区域n线程之间拥有共享的存储区域n与CPU的差别:GPU的线程是轻量级的(代码少,硬件轮换,资源负担小);需要很大量的线程才能使GPU满载2.CUDA架构nCPU/GPU异构并行模型n由CPU端(主机端)传送参数及配置Kernel的执行(Block,Thread数量,尺寸等)nKernel在GPU(设备端)上执行n显存分配,显存与PC主存间的交互通过API完成2.CUDA架构nCUDA C扩展:编译器nvccnCUDA源程序-CU文件n编译器驱动n分离主机端源代码和设备端源代码n编译设备端源代码到GPU汇编代码(PTX)或GPU二进制代码(CUBIN)n把最终GPU代码包裹在主机端源代码中nCUDA C扩展:APInDriver API 调用Kernel较繁琐nRuntime API 较方便2.CUDA架构nCUDA C扩展:函数限定符n_global_ GPU Kernel代码,由CPU发起,返回void,不能由其它Kernel调用n_device_ 由GPU Kernel调用的函数,不能由CPU发起n_host_ 在CPU上执行的函数nCUDA C扩展:变量限定符n_constant_ 变量位于常数存储器n_shared_ 变量位于共享存储器2.CUDA架构nCUDA C扩展:内建变量n无需定义/声明,直接在kernel中调用ndim3 gridDim;/Grid尺寸ndim3 blockDim;/Block尺寸ndim3 blockIdx;/Block IDndim3 threadIdx;/Thread 点nCUDA C扩展:执行配置n调用:my_kernel (.);n实际是为gridDim和blockDim赋值n决定当前线程需要处理的数据和结果存储的位置2.CUDA架构nCUDA存储器管理nGPU与CPU独立编址nGPU与CPU数据交互通过PCIe总线n在主机端通过API去分配/复制/销毁GPU上的存储器空间nGPU存储器操作API(详见CUDA参考手册)n存储空间开辟:cudaMalloc等n存储空间初始化:cudaMemset等 n存储空间:cudaFree等n存储空间拷贝cudaMemcpy等2.CUDA架构nCUDA程序结构内存/显存开辟主机端准备数据数据导入GPU调用kernel函数计算取回计算结果主机端后期处理主机端代码(串行)设备端代码(并行)主机设备通信3.CUDA环境搭建n所需组件nCUDA完全免费,各种操作系统下的CUDA安装包均可以在上免费下载。众多例子程序和函数库CUDA基本工具核心部分NV显卡的驱动程序DisplayDisplayToolkitToolkitSDKSDK3.CUDA环境搭建n1.Windowsn环境要求:Microsoft Visual Stadio 2005 及其以后版本n(1)依次安装:显卡驱动ToolkitSDKn(2)语法高亮n到SDK安装目录下,doc syntax_highlighting visual_studio_8,将其中的usertype.dat文件复制到Microsoft Visual Studio 8Common7IDE下.n启动VS2005,工具选项文本编辑器文件扩展名.在右边的“扩展名”对应的栏里输入“cu”;“编辑器”选择“Microsoft Visual C+”,“添加”“确定”重启VS2005n(3)设置VS2005环境n打开VS2005,工具选项项目和解决方案VC+目录“显示以下内容的目录”n“包含文件”:分别添加Toolkit和SDK的文件包含目录n“库文件”:分别添加Toolkit和SDK的库目录n“源文件”:添加SDK源文件目录3.CUDA环境搭建n1.Windowsn(4)编译定义n工程源文件 属性 常规 工具 自定义生产工具,在以下项添加相应内容:n“命令行”:$(CUDA_BIN_PATH)nvcc.exe-ccbin$(VCInstallDir)bin-c-D_DEBUG-DWIN32-D_CONSOLE-D_MBCS-Xcompiler/EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd-I$(CUDA_INC_PATH)-o$(ConfigurationName)$(InputName).obj$(InputFileName)n“输出”:$(ConfigurationName)$(InputName).objn“附加依赖项”:$(InputName)_kernel.cun右键工程名 属性,打开链接器,在以下项做相应修改n“启用增量链接”:否(/INCREMENTAL:NO)n“附加库目录”:改为“$(CUDA_LIB_PATH)”n“链接器”子项“输入”:“附加依赖项”中输入cudart.lib3.CUDA环境搭建n2.Linux (Fedora,Redhat,Ubuntu)n环境要求:gcc编译器n(1)进入Linux文本界面n(2)安装三个组件(具体版本具体输入)n(3)在.bash_profile中添加:nPATH=$PATH:/binnLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64nexport PATH nexport LD_LIBRARY_PATH n其中:为实际安装路径4.例子GPU并行矢量求和n算法描述n将两个N维矢量相加,即对应元素相加:ci=ai+bi i0,N)n并行算法设计n每个GPU线程负责一个维度的相加nGPU线程数目 M Na0b0c0Th0aN-1bN-1cN-1ThN-1a1b1c1Th1a2b2c2Th0abcThThThMabc4.例子GPU并行矢量求和n预处理部分ncuda_runtime.h:CUDA运行时库4.例子GPU并行矢量求和n内核函数n返回值类型必须包括 _global_ voidn内核函数定义的是每一个线程的行为,所有线程并发执行n操作目标通过当前线程在线程结构中的位置而确定n该问题中所有线程均只执行一次加法,总计算时间为执行6770行代码一次所需时间4.例子GPU并行矢量求和n主函数(part-1)使用线程结构的x维度,88一共64个线程h_前缀表示变量位于Host端存储器d_前缀表示变量位于Device端存储器还有多种其他开辟方式4.例子GPU并行矢量求和n主函数(part-2)推荐参考n书籍/资料:nNVIDIA CUDA Programming GuidenThe CUDA Compiler Driver NVCCnGet Started NVIDIA CUDA C Installation and Verification on LinuxnCUDA by examplenGPU高性能计算之CUDAn深入浅出谈CUDAn网站/论坛

    注意事项

    本文(CUDA-GPU-入门介绍.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开