《CUDA C编程权威指南》——1.3节用GPU输出Hello World

1.3 用GPU输出Hello World
学习一个新编程语言的最好方法就是使用这种新语言来编写程序。在本节,你将开始编写在GPU上运行的第一个内核代码。像其他任何编程语言一样编写GPU上的第一个程序是输出字符串“Hello World”。
如果这是你第一次使用CUDA,在Linux系统中,你可能想使用以下命令来检查CUDA编译器是否正确安装:

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

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

时间: 2024-11-13 06:33:06

《CUDA C编程权威指南》——1.3节用GPU输出Hello World的相关文章

《CUDA C编程权威指南》——1.2 异构计算

1.2 异构计算 最初,计算机只包含用来运行编程任务的中央处理器(CPU).近年来,高性能计算领域中的主流计算机不断添加了其他处理元素,其中最主要的就是GPU.GPU最初是被设计用来专门处理并行图形计算问题的,随着时间的推移,GPU已经成了更强大且更广义的处理器,在执行大规模并行计算中有着优越的性能和很高的效率. CPU和GPU是两个独立的处理器,它们通过单个计算节点中的PCI-Express总线相连.在这种典型的架构中,GPU指的是离散的设备从同构系统到异构系统的转变是高性能计算史上的一个里程

《CUDA C编程权威指南》——3.1节CUDA执行模型概述

3.1 CUDA执行模型概述 一般来说,执行模型会提供一个操作视图,说明如何在特定的计算架构上执行指令.CUDA执行模型揭示了GPU并行架构的抽象视图,使我们能够据此分析线程的并发.在第2章里,已经介绍了CUDA编程模型中两个主要的抽象概念:内存层次结构和线程层次结构.它们能够控制大规模并行GPU.因此,CUDA执行模型能够提供有助于在指令吞吐量和内存访问方面编写高效代码的见解. 在本章会重点介绍指令吞吐量,在第4章和第5章里会介绍更多的关于高效内存访问的内容.3.1.1 GPU架构概述 GPU

《CUDA C编程权威指南》——导读

###前 言 欢迎来到用CUDA C进行异构并行编程的奇妙世界! 现代的异构系统正朝一个充满无限计算可能性的未来发展.异构计算正在不断被应用到新的计算领域-从科学到数据库,再到机器学习的方方面面.编程的未来将是异构并行编程的天下! 本书将引领你通过使用CUDA平台.CUDA工具包和CUDA C语言快速上手GPU(图形处理单元)计算.本书中设置的范例与练习也将带你快速了解CUDA的专业知识,助你早日达到专业水平! 目 录 第1章 基于CUDA的异构并行计算 1.1 并行计算 1.1.1 串行编程和

《CUDA C编程权威指南》——1.2节异构计算

1.2 异构计算 最初,计算机只包含用来运行编程任务的中央处理器(CPU).近年来,高性能计算领域中的主流计算机不断添加了其他处理元素,其中最主要的就是GPU.GPU最初是被设计用来专门处理并行图形计算问题的,随着时间的推移,GPU已经成了更强大且更广义的处理器,在执行大规模并行计算中有着优越的性能和很高的效率. CPU和GPU是两个独立的处理器,它们通过单个计算节点中的PCI-Express总线相连.在这种典型的架构中,GPU指的是离散的设备从同构系统到异构系统的转变是高性能计算史上的一个里程

《CUDA C编程权威指南》——1.4 使用CUDA C编程难吗

1.4 使用CUDA C编程难吗 CPU编程和GPU编程的主要区别是程序员对GPU架构的熟悉程度.用并行思维进行思考并对GPU架构有了基本的了解,会使你编写规模达到成百上千个核的并行程序,如同写串行程序一样简单. 如果你想编写一个像并行程序一样高效的代码,那么你需要对CPU架构有基本的了解.例如,数据局部性在并行编程中是一个非常重要的概念.数据局部性指的是数据重用,以降低内存访问的延迟.数据局部性有两种基本类型.时间局部性是指在相对较短的时间段内数据和/或资源的重用.空间局部性是指在相对较接近的

《CUDA C编程权威指南》——1.4节使用CUDA C编程难吗

1.4 使用CUDA C编程难吗CPU编程和GPU编程的主要区别是程序员对GPU架构的熟悉程度.用并行思维进行思考并对GPU架构有了基本的了解,会使你编写规模达到成百上千个核的并行程序,如同写串行程序一样简单.如果你想编写一个像并行程序一样高效的代码,那么你需要对CPU架构有基本的了解.例如,数据局部性在并行编程中是一个非常重要的概念.数据局部性指的是数据重用,以降低内存访问的延迟.数据局部性有两种基本类型.时间局部性是指在相对较短的时间段内数据和/或资源的重用.空间局部性是指在相对较接近的存储

《CUDA C编程权威指南》——1.3 用GPU输出Hello World

1.3 用GPU输出Hello World 学习一个新编程语言的最好方法就是使用这种新语言来编写程序.在本节,你将开始编写在GPU上运行的第一个内核代码.像其他任何编程语言一样编写GPU上的第一个程序是输出字符串"Hello World". 如果这是你第一次使用CUDA,在Linux系统中,你可能想使用以下命令来检查CUDA编译器是否正确安装: 通常的结果可能是: 你还需要检查你的机器上是否安装了GPU加速卡.对此你可以在Linux系统上使用以下命令: 通常的结果是: 在这个例子中,你

《CUDA C编程权威指南》——第3章 CUDA执行模型 3.1 CUDA执行模型概述

第3章 CUDA执行模型 本章内容: 通过配置文件驱动的方法优化内核 理解线程束执行的本质 增大GPU的并行性 掌握网格和线程块的启发式配置 学习多种CUDA的性能指标和事件 了解动态并行与嵌套执行 通过上一章的练习,你已经学会了如何在网格和线程块中组织线程以获得最佳的性能.尽管可以通过反复试验找到最佳的执行配置,但你可能仍然会感到疑惑,为什么选择这样的执行配置会更好.你可能想知道是否有一些选择网格和块配置的准则.本章将会回答这些问题,并从硬件方面深入介绍内核启动配置和性能分析的信息. 3.1

《CUDA C编程权威指南》——2.5 总结

2.5 总结 与C语言中的并行编程相比,CUDA程序中的线程层次结构是其独有的结构.通过一个抽象的两级线程层次结构,CUDA能够控制一个大规模并行环境.通过本章的例子,你也学习到了网格和线程块的尺寸对内核性能有很大的影响. 对于一个给定的问题,你可以有多种选择来实现核函数和多种不同的配置来执行核函数.通常情况下,传统的实现方法无法获得最佳的内核性能.因此,学习如何组织线程是CUDA编程的重点之一.理解网格和线程块的启发性的最好方法就是编写程序,通过反复试验来扩展你的技能和知识. 对于内核执行来说