- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 3 章
CUDA C简介
如果你学习了第1章的内容,那么我们认为你已经了解了图形处理器的
强大计算能力,并且需要在程序中使用这种能力。此外,如果你学习了第2
章的内容,那么就应该配置好了编译和运行CUDA C代码的开发环境。如
果你跳过了这两章的内容,例如只是想浏览代码示例,或者只是在书店里
随机地打开这本书翻到这页,或者可能迫不及待地想立即开始动手编写和
运行代码,那么也没关系。无论是何种情况,你都应该准备好了编写第一
个代码示例,那么让我们开始吧。
16 GPU高性能编程CUDA实战
3.1 本章目标
通过本章的学习,你可以:
• 编写第一段CUDA C代码。
• 了解为主机(Host )编写的代码与为设备(Device )编写的代码之间的区别。
• 如何从主机上运行设备代码。
• 了解如何在支持CUDA 的设备上使用设备内存。
• 了解如何查询系统中支持CUDA 的设备的信息。
3.2 第一个程序
我们希望通过示例来学习CUDA C ,因此来看第一个CUDA C示例。为了保持计算机编程
书籍的行文风格,我们首先给出的是一个“Hello, World! ”示例。
3.2.1 Hello, World!
#include ../common/book.h
int main( void ) {
printf( Hello, World!\n );
return 0;
}
当看到这段代码时,你肯定在怀疑本书是不是一个骗局。这不就是C 吗?CUDA C是不是
真的存在?这些问题的答案都是肯定的。当然,本书也不是一个骗局。这个简单的“Hello ,
World !”示例只是为了说明,CUDA C与你熟悉的标准C在很大程度上是没有区别的。
这个示例很简单,它能够完全在主机上运行。然而,这个示例引出了本书的一个重要区分:
我们将CPU 以及系统的内存称为主机,而将GPU及其内存称为设备。这个示例程序与你编写过
的代码非常相似,因为它并不考虑主机之外的任何计算设备。
为了避免使你产生一无所获的感觉,我们将逐渐完善这个简单示例。我们来看看如何使用
GPU (这就是一个设备)来执行代码。在GPU设备上执行的函数通常称为核函数(Kernel )。
3.2.2 核函数调用
现在,我们在示例程序中添加一些代码,这些代码比最初的“Hello ,World !”程序看上
去会陌生一些。
第3 章 CUDA C简介 17
#include iostream
_global_ void kernel( void ) {
}
int main( void ) {
kernel1,1();
printf( Hello, World!\n );
return 0;
}
这个程序与最初的“Hello ,World !”相比,多了两个值得注意的地方:
• 一个空的函数kernel() ,并且带有修饰符__global__ 。
• 对这个空函数的调用,并且带有修饰字符1,1 。
在上一节中看到,代码默认是由系统的标准C编译器来编译的。例如,在Linux操作系统上
用GNU gcc 来编译主机代码,而在Windows 系统上用Microsoft Visual C 来编译主机代码。
NVIDIA 工具只是将代码交给主机编译器,它表现出的行为就好像CUDA不存在一样。
现在,我们看到了CUDA C为标准C增加的__global__ 修饰符。这个修饰符将告诉编译器,
函数应该编译为在设备而不是主机上运行。在这个简单的示例中,函数kernel()将被交给编译设
备代码的编译器,而main() 函数将被交给主机编译器(与上一个例子一样)。
那么,kernel() 的调用究竟代表着什么含义,并且为什么必须加上尖括号和两个数值?注意,
这正是使用CUDA C 的地方。
我
您可能关注的文档
- 数据结构第05节_图.ppt
- 数据结构第7节 图3.ppt
- 数据结构第7节图习题.docx
- Focusrite scarlett 系列声卡注册产品和下载相关插件教程.pdf
- FORTRAN90第六节 数组.ppt
- 数据结构第8节.ppt
- FORTRAN90第十章 指针及递归.ppt
- 数据结构第8篇-图.doc
- 数据结构第09讲_串的模式匹配及串的应用_C.ppt
- 数据结构第19讲_关键路径及最短路径_C.ppt
- 有机肥料及微生物肥料相关项目投资计划书范文 .pdf
- 医院消防维保服务投标方案(技术方案).doc
- 宣传视频制作技术服务方案(技术方案).doc
- 2024-2025学年江苏省南通市如皋市八年级(上)期末考试数学试卷(含答案) .pdf
- 主体劳务工程 投标方案(技术方案).doc
- 校外教育杯征文 浅谈如何做好小学班主任工作 .pdf
- 人教版九年级全册 Unit 5 What are the shirts made of ?Section B 2a-2e 分层练习(含答案).doc
- 人教版九年级全册 Unit 5 What are the shirts made of? Section B 3a-Self Check 分层练习(含答案).doc
- 人教版九年级全册Unit 6 When was it invented Section A 1a-2d练习(含答案).docx
- 市场营销学》试卷(答案).docx
文档评论(0)