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

本节书摘来自华章计算机《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条。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值