CUDA 3.0 编程接口分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CUDA3.0 CUDA3.0 编程接口 中一种,但是遵守 3.4 节描述的限制时,可以同时使用两种。目前可用两种接口写CUDA 程序:CUDA C 和CUDA 驱动 API。一个应用典型的只能使用其 中一种,但是遵守 3.4 节描述的限制时,可以同时使用两种。 CUDA CUDA C 将CUDA 编程模型作为C 的最小扩展集展示出来。任何包含某些扩展的源文件必 须使用 须使用nvcc 编译,nvcc 的概要在 3.1 节。这些扩展允许程序员像定义 C 函数一样定义内核 和在每次内核调用时,使用新的语法指定网格和块的尺寸。 和在每次内核调用时,使用新的语法指定网格和块的尺寸。 CUDA CUDA 驱动 API 是一个低层次的C 接口,它提供了从汇编代码或 CUDA 二进制模块中装载 内核,检查内核参数,和发射内核的函数。二进制和汇编代码通常可以通过编译使用C 写的 内核,检查内核参数,和发射内核的函数。二进制和汇编代码通常可以通过编译使用C 写的 内核得到。 内核得到。 运行时API 是基于驱动API 的,初始化、上下文和模块管理都是隐式的,而且代码更简CUDA C 包含运行时API,运行时API 和驱动API 都提供了分配和释放设备存储器、在主机和内存间传输数据、管理多设备的系统的函数等等。 运行时API 是基于驱动API 的,初始化、上下文和模块管理都是隐式的,而且代码更简 明。CUDA 明。CUDA C 也支持设备模拟,这有利于调试(参见节 3.2.8)。 相反,CUDA 相反,CUDA 驱动API 要求写更多的代码,难于编程和调试,但是易于控制且是语言无 关的,因为它处理的是二进制或汇编代码。 关的,因为它处理的是二进制或汇编代码。 3.2 节接着第二章介绍CUDA C 3.2 节接着第二章介绍CUDA C。也引入了 CUDA C 和驱动API 共有的概念:线性存储器、 CUDA 数组、共享存储器、纹理存储器、分页锁定主机存储器、设备模拟、异步执行和与图 CUDA 数组、共享存储器、纹理存储器、分页锁定主机存储器、设备模拟、异步执行和与图 形学 形学API 互操作。3.3 节会介绍有关这些概念的知识和描述它们在驱动API 中是怎样表示的。 3.1 3.1 用 nvcc 编译 内核可以使用PTX 编写,PTX 就是CUDA 指令集架构,PTX 参考手册中描述了PTX。通常 内核可以使用PTX 编写,PTX 就是CUDA 指令集架构,PTX 参考手册中描述了PTX。通常 PTX 效率高于像C 一样的高级语言。无论是使用PTX 还是高级语言,内核都必须使用nvcc PTX 效率高于像C 一样的高级语言。无论是使用PTX 还是高级语言,内核都必须使用nvcc 编译成二进制代码才能在设备在执行。 编译成二进制代码才能在设备在执行。 nvcc nvcc 是一个编译器驱动,简化了C 或 PTX 的编译流程:它提供了简单熟悉的命令行选 项,同时通过调用一系列实现了不同编译步骤的工具集来执行它们。本节简介了nvcc 的编 项,同时通过调用一系列实现了不同编译步骤的工具集来执行它们。本节简介了nvcc 的编 译流程和命令选项。完整的描述可在nvcc 用户手册中找到。 译流程和命令选项。完整的描述可在nvcc 用户手册中找到。 3.1.1 编译流程 3.1.1 编译流程 nvcc 可编译同时包含主机代码(有主机上执行的代码)和设备代码(在设备上执行的代 nvcc 可编译同时包含主机代码(有主机上执行的代码)和设备代码(在设备上执行的代 码)的源文件。nvcc 的基本流程包括分离主机和设备代码并将设备代码编译成汇编形式(PTX) 码)的源文件。nvcc 的基本流程包括分离主机和设备代码并将设备代码编译成汇编形式(PTX) 或/和二进制形式(cubin 对象)。生成的主机代码要么被输出为C 代码供其它工具编译,要 或/和二进制形式(cubin 对象)。生成的主机代码要么被输出为C 代码供其它工具编译,要 么在编译的最后阶段被nvcc 调用主机编译器输出为目标代码。 么在编译的最后阶段被nvcc 调用主机编译器输出为目标代码。 应用能够: 应用能够: 1 1.要么在设备上使用CUDA 驱动 API 装载和执行PTX 源码或cubin 对象(参见 3.3 节)同 时忽略生成的主机代码(如果有); 时忽略生成的主机代码(如果有); 2.要么链接到生成的主机代码;生成的主机代码将PTX 代码和/或cubin对象作为已初始 2.要么链接到生成的主机代码;生成的主机代码将PTX 代码和/或cubin对象作为已初始 化的全局数据数组导入,还将 2.1 节引入的?语法转化为必要的函数调用以加载和发 化的全局数据数组导入,还将 2.1 节引入的?语法转化为必要的

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档