《CUDA C编程权威指南》——1.6 习题

1.6 习题

1.参考图1-5,分析以下几种数据划分形式:

(1)对于二维数据,沿x轴进行块划分

(2)对于二维数据,沿y轴进行周期划分

(3)对于三维数据,沿z轴进行周期划分

2.从hello.cu中移除cudaDeviceReset函数,然后编译运行,看看会发生什么。

3.用cudaDeviceSynchronize 函数来替换hello.cu中的cudaDeviceReset函数,然后编译运行,看看会发生什么。

4.参考1.3节,从编译器命令行中移除设备架构标志,然后按照下面的方式进行编译,看看会发生什么。

5.参阅CUDA在线文档(http://docs.nvidia.com/cuda/index.html )。基于“CUDA编译器驱动NVCC”一节,谈谈nvcc对带有哪些后缀的文件支持编译?

6.为执行核函数的每个线程提供了一个唯一的线程ID,通过内置变量threadIdx.x可以在内核中对线程进行访问。在hello.cu中修改核函数的线程索引,使输出如下:

时间: 2024-10-27 14:05:20

《CUDA C编程权威指南》——1.6 习题的相关文章

《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编程权威指南》——3.1节CUDA执行模型概述

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

《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编程权威指南》——3.8 习题

3.8 习题 1.当在CUDA中展开循环.数据块或线程束时,可以提高性能的两个主要原因是什么?解释每种展开是如何提升指令吞吐量的. 2.参考核函数reduceUnrolling8和实现核函数reduceUnrolling16,在这个函数中每个线程处理16个数据块.将该函数的性能与reduceUnrolling8内核性能进行比较,通过nvprof使用合适的指标与事件来解释性能差异. 3.参考核函数reduceUnrolling8,替换以下的代码段: 比较每次的性能并解释使用nvprof指标的差异.

《CUDA C编程权威指南》——3.8节习题

3.8 习题1.当在CUDA中展开循环.数据块或线程束时,可以提高性能的两个主要原因是什么?解释每种展开是如何提升指令吞吐量的.2.参考核函数reduceUnrolling8和实现核函数reduceUnrolling16,在这个函数中每个线程处理16个数据块.将该函数的性能与reduceUnrolling8内核性能进行比较,通过nvprof使用合适的指标与事件来解释性能差异.3.参考核函数reduceUnrolling8,替换以下的代码段: 比较每次的性能并解释使用nvprof指标的差异.4.参

《CUDA C编程权威指南》——2.6 习题

2.6 习题 1.在文件sumArraysOnGPU-timer.cu中,设置block.x=1 023,重新编译并运行.与执行配置为block.x=1 024的运行结果进行比较,试着解释其区别和原因. 2.参考文件sumArraysOnGPU-timer.cu,设置block.x=256.新建一个内核,使得每个线程处理两个元素.将此结果和其他的执行配置进行比较. 3.参考文件sumMatrixOnGPU-2D-grid-2D-block.cu,并将它用于整数矩阵的加法运算中,获取最佳的执行配置