本节书摘来自华章计算机《CUDA C编程权威指南》一书中的第1章,第1.3节,作者 [美] 马克斯·格罗斯曼(Max Grossman),译 颜成钢 殷建 李亮,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.3 用GPU输出Hello World

学习一个新编程语言的最好方法就是使用这种新语言来编写程序。在本节,你将开始编写在GPU上运行的第一个内核代码。像其他任何编程语言一样编写GPU上的第一个程序是输出字符串“Hello World”。

如果这是你第一次使用CUDA,在Linux系统中,你可能想使用以下命令来检查CUDA编译器是否正确安装:

通常的结果可能是:

你还需要检查你的机器上是否安装了GPU加速卡。对此你可以在Linux系统上使用以下命令:

通常的结果是:

在这个例子中,你安装了两个GPU卡(不同的用户配置可能有所不同,因此显示结果会有所差异)。现在你要准备好写你的第一个CUDA C程序。写一个CUDA C程序,你需要以下几个步骤:

1.用专用扩展名.cu来创建一个源文件。

2.使用CUDA nvcc编译器来编译程序。

3.从命令行运行可执行文件,这个文件有可在GPU上运行的内核代码。

首先,我们编写一个C语言程序来输出“Hello World”,如下所示:

把代码保存到hello.cu中,然后使用nvcc编译器来编译。CUDA nvcc编译器和gcc编译器及其他编译器有相似的语义。

如果你运行可执行文件hello,将会输出:

接下来,编写一个内核函数,命名为helloFromGPU,用它来输出字符串“Hello World from GPU!”。

修饰符__global__告诉编译器这个函数将会从CPU中调用,然后在GPU上执行。用下面的代码启动内核函数。

三重尖括号意味着从主线程到设备端代码的调用。一个内核函数通过一组线程来执行,所有线程执行相同的代码。三重尖括号里面的参数是执行配置,用来说明使用多少线程来执行内核函数。在这个例子中,有10个GPU线程被调用。综上所述,得到代码清单1-1所示的程序。

函数cudaDeviceRest()用来显式地释放和清空当前进程中与当前设备有关的所有资源。如下所示,在nvcc命令行中使用-arch sm_20进行编译:

开关语句-arch sm_20使编译器为Fermi架构生成设备代码。运行这个可执行文件,它将输出10条字符串“Hello World from GPU”,每个线程输出1条。

c cuda 指定gpu_《CUDA C编程权威指南》——1.3 用GPU输出Hello World-阿里云开发者社区...相关推荐

  1. 树莓派python编程读取电压_《树莓派Python编程指南》——3.2 在结构体中存储值-阿里云开发者社区...

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第3章,第3.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  2. python的requests模块功能_《Python数据可视化编程实战》—— 1.7 安装requests模块-阿里云开发者社区...

    本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.7节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...

  3. python与材料计算公式_《从问题到程序:用Python学编程和计算》——2.11 补充材料-阿里云开发者社区...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.11节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2 ...

  4. 不属于python标准库的是_《Python Cookbook(第2版)中文版》——1.10 过滤字符串中不属于指定集合的字符-阿里云开发者社区...

    本节书摘来自异步社区<Python Cookbook(第2版)中文版>一书中的第1章,第1.10节,作者[美]Alex Martelli , Anna Martelli Ravenscro ...

  5. python树莓派编程 沃尔弗拉姆_《 Python树莓派编程》——3.3 Python入门-阿里云开发者社区...

    本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著韩德强 等译,更多章节内容可以访问云栖社区&quo ...

  6. python后台开发性能问题_《Python高性能编程》——2.14 确保性能分析成功的策略-阿里云开发者社区...

    本节书摘来自异步社区<Python高性能编程>一书中的第2章,第2.14节,作者[美] 戈雷利克 (Micha Gorelick),胡世杰,徐旭彬 译,更多章节内容可以访问云栖社区&quo ...

  7. CUDA C编程权威指南 第八章 多GPU编程

    基础 多GPU两种连接方式: 1)多GPU通过单个节点连接到PCIe总线上 2)多GPU连接到集群中的网络交换机上 梁总常见的GPU通信模式 1)没必要进行数据交换,GPU间没有数据共享 2)有部分数 ...

  8. python机器人编程与操作_【教程免费下载】机器人系统设计与制作:Python语言实现-问答-阿里云开发者社区-阿里云...

    前言 本书包含12章,主要介绍如何从零开始构建自主移动的机器人,并使用Python进行编程.本书所提到的机器人是用于家庭.宾馆.餐厅的服务机器人,我们将按照顺序介绍如何一步一步构建它.书中从机器人的基 ...

  9. python 项目学编程_《从问题到程序:用Python学编程和计算》——3.5 练习-阿里云开发者社区...

    复习下面概念:数值积分,区间分割法,舍入误差,简单重复,累积,累积变量,生成和筛选,递推,递推变量,素数(质数),因子和真因子,哥德巴赫猜想,输入循环,输入控制的循环,递归定义,递归函数,循环定义,无 ...

最新文章

  1. freemarker if判断
  2. Java字符串的10大热点问题盘点
  3. Java Spring里getBean方法的实现
  4. 什么是oracle命名,ORACLE数据库命名规范
  5. 站立会议10--个人总结
  6. 【骚操作系列】浅谈如何将模糊的PDF清晰化
  7. eBay SOA开源平台
  8. 华为悦盒EC6109u线刷救砖文件fastboot.bin bootargs.bin recovery
  9. MXNet使用---复现、训练、测试人脸角度检测FSA-Net(SSR-MT)模型为例
  10. Lucene--千锋修改+踩坑版本
  11. 2017百度秋招真题笔试之十字架
  12. ps修改图片中的图片尺寸
  13. steam无法连接至计算机,win10系统打开steam提示无法连接至steam网络的图文方法
  14. Josh‘s Notes: SystemVerilog 验证 (Part 1 — 验证导论)
  15. (C++)将数据库文件导出XML文件以及解析XML文件生成数据库文件的处理方法
  16. neo4j图数据库安装实践与报错解决
  17. 【异常】Maven提示异常XmlPullParserException: Unrecognised tag: ‘exclusion‘ (position: START_TAG seen
  18. (CNS复现)CLAM——Chapter_03
  19. 禾川HCQ+X3E ModBUS 电机远程启动
  20. 高斯投影正反算的代码

热门文章

  1. 给大学生分享一下我的编程人生
  2. flask中的CBV和FBV
  3. Python入门-day1变量和简单数据类型
  4. nginx配置文件+本地测试请求转发到远程服务器+集群
  5. mysql三:表操作
  6. 洛谷P1561 [USACO12JAN]爬山Mountain Climbing 贪心 数学
  7. linux监控命令详解
  8. nyoj 寻找最大数
  9. 有了这些经典书籍+配套实验环境上线,还有什么借口说学不好编程?
  10. Laravel大型项目系列教程(七)之7 扩展包和Artisan开发