gpu之cuda c基础知识介绍.pptVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
gpu之cuda c基础知识介绍

GPU高性能运算之CUDA C 报告人:xxx 导师:xxx 学校:xxx 缩略语 GPU—图形处理器 CPU—中央处理器 CUDA—计算机统一设备架构 CUDA C—基于CUDA的C语言程序 天津医科大学 背景 图1 GPU与CPU运算能力对比 天津医科大学 背景 图2 CPU和GPU晶体管结构分配对比 天津医科大学 CUDA C程序整体结构 主机代码 串行代码 并行核函数 Kernel0 () 串行代码 并行核函数 Kernel1 () 图3 CPU+GPU异构编程 天津医科大学 线程块结构及寻址 对于一维的block,线程的 threadID就是threadIdx.x; 对于大小为(DX,Dy)的二维 block,线程的threadID是 (threadIdx.x+threadIdx.y*Dx); 对于大小为(DX,Dy,Dz)的三维block,线程的threadID是 (threadIdx.x+threadIdx.y*Dx +threadIdx.z*Dx*Dy)。 图4 线程块网格 天津医科大学 GPU存储器 表1 CUDA编程所用到的各种存储器 存储器 位置 访问权限 变量生存周期 Register GPU片内 Device 可读/写 与thread相同 Local memory 板载显存 Device 可读/写 与thread相同 Shared memory GPU片内 Device 可读/写 与block相同 Constant memory 板载显存 Device 可读,host可读/写 可在程序中保持 Texture memory 板载显存 Device 可读,host可读/写 可在程序中保持 Global memory 板载显存 Device 可读/写,host可读/写 可在程序中保持 Host memory Host内存 host可读/写 可在程序中保持 Pinned memory Host内存 host可读/写 可在程序中保持 天津医科大学 基于C语言的扩展函数 函数类型限定符,指定函数是在主机上还是设备上执行,以及函数是可通过主机还是可通过设备调用 变量类型设定符,指定一个变量在设备上的存储位置 内核调用函数,指定如何通过主机在设备上执行内核 内置变量,指定网格和块维度以及块和线程索引 天津医科大学 基于C语言的扩展函数 函数类型限定符 __device__ 在设备上执行; 仅可通过设备调用。 __global__ 将函数声明为内核 在设备上执行; 仅可通过主机调用。 __host__ 在主机上执行; 仅可通过主机调用。 天津医科大学 基于C语言的扩展函数 变量类型限定符 __device__ 声明位于设备上的变量 位于全局存储器空间中; 与应用程序具有相同的生命周期; 可通过网格内的所有线程访问,也可通过运行时库从主机访问。 __constant__ 位于固定常数存储器空间中; 与应用程序具有相同的生命周期; 可通过网格内的所有线程访问,也可通过运行时库从主机访问。 天津医科大学 基于C语言的扩展函数 __shared__ 位于线程块的共享存储器空间中; 与块具有相同的生命周期; 尽可通过块内的所有线程访问。 内核调用函数 KernelDg,Db(param1, param1,…) Dg,指定网格的维度和大小 Db,指定各块的维度和大小 天津医科大学 基于C语言的扩展函数 内置变量 gridDim ,包含网格的维度。 blockIdx ,包含网格内的块索引。 blockDim ,包含块的维度。 threadIdx ,包含块内的线程索引。 warpSize,包含以线程为单位的 warp 块大小。 天津医科大学 基于C语言的扩展函数 天津医科大学 基于C语言的扩展函数 图5 一维向量相加运行结果 天津医科大学 实现CUDA C的步骤 硬件环境 CUDA编译器 运行sample,测试环境搭建是否成功 编写程序获取设备属性 编写简单程序测试GPU计算能力 把现有的最简单模型Fortran程序改写成cuda c程序 基于上一步,把更复杂的模型改写成cuda c程序 天津医科大学 图6 GPU硬件设备查询结果 图7 不同计算能力的GPU对比 总体介绍,详细讲其中一类 * 总体介绍,详细讲其中一类 * 总体介绍,详细讲其中一类 * * 总体介绍,详细讲其中一类 * 通过向量加简单程序 * 通过向量加简单程序 * 总体介绍,详细讲其中一类 * 总体介绍,详细讲其中一类 * 总体介绍,详细讲其中一类 * * 总体介绍,详细讲其中一类 * 通过向量加简单程序 * 通过向量加简单程序 *

文档评论(0)

kfcel5460 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档