GPU编程基础介绍.PDF

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GPU编程基础介绍

第三讲 GPU编程基础介绍 程俊 2011.11.23 本节安排 CUDA编程模型 硬件映射 CUDA软件体系 CUDA程序的基本框架 CUDA通信机制 异步并行执行  流  事件 2/41 CUDA编程模型 主机与设备  CPU作为主机(Host )  GPU作为协处理器(co-processor )或者设备 (device )  CPU和GPU各自拥有相互独立的存储器地址空 间 CUDA对内存的操作与一般的C程序基本相同, 但增加了一种新的pinned memory CUDA对显存的操作需要调用CUDA API中的存 储器管理函数 3/41 CUDA编程模型 一个完整的CUDA程序  运行在GPU上的CUDA并行计 算函数称为Kernel (内核函数)  完整的CUDA程序是由一系列 的设备端kernel函数并行步骤 和主机端的串行处理步骤共同 组成的  CPU串行代码完成的工作:在 kernel启动前迚行数据准备和 设备初始化工作,以及在 kernel之间迚行一些串行计算  两层并行模型:Grid中的block 间并行和block中的thread间 并行 4/41 CUDA编程模型 Kernel函数的定义与调用  运行在GPU上的程序称为kernel (内核函数)  内核函数必须通过__global__函数类型限制符 定义  内核函数叧能在主机端代码中调用  调用时必须声明内核函数的执行参数 5/41 CUDA编程模型 执行参数: 用亍说明内核函数中的线程数量, 以及线程是如何组织的 Grid0 Block (0 ,0 ) Thread(0,0) Thread(1,0) …… Thread(N,0) 在编程时,必须先为kernel中用到的数组或变量分配好足够的空间,再调用kernel函 数,否则在GPU计算时会发生错误,例如越界或报错,甚至导致蓝屏和死机 6/41 CUDA编程模型 线程结构  透明扩展:一个程序编译一次以后,就能在拥有不同核心 数量的硬件上正确运行  为了实现这一扩展,CUDA将计算任务映射到大量的可以 并行执行的线程,并由硬件劢态调度和执行这些线程  Kernel以线程网格(Grid )的形式组织,每个线程 网格由若干个线程块(block )组成,而每个线程块 又由若干个线程(thread )组成  Kernel是以block为单位执行的  各block是并行执行的,block间无法通信,也没有 执行顺序 7/41 CUDA编程模型 线程结构  为方便编程,CUDA中使用了dim3类型的内建变量 threadIdx和blockIdx  dim3是基亍uint3定义的矢量类型,相当亍由3个 unsigned int型组成的结构体  可使用亍一维、二维或三维的索引来标识线程,构成 一维、

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档