标题：gpu高性能编程cuda实战
基本信息
原书名： CUDA by Example:an Introduction to General-Purpose GPU Programming 
原出版社： Addison-Wesley Professional 
作者： (美)Jason Sanders    Edward Kandrot    [作译者介绍] 
译者： 聂雪军 
出版社：机械工业出版社 
ISBN：9787111326793
上架时间：2011-2-28
出版日期：2011 年1月
开本：16开
页码：201
版次：1-1
内容简介
cuda是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时，cuda架构能充分发挥gpu的强大计算功能。《gpu高性能编程cuda实战》首先介绍了cuda架构的应用背景，并给出了如何配置cuda c的开发环境。然后通过矢量求和运算、矢量点积运算、光线跟踪、热传导模拟等示例详细介绍了cuda c的基本语法和使用模式。通过学习本书，读者可以清楚了解cuda c中每个功能的适用场合，并编写出高性能的cuda软件。
《gpu高性能编程cuda实战》适合具备c或者c++知识的应用程序开发人员、数值计算库开发人员等，也可以作为学习并行计算的学生和教师的教辅。
目录
译者序 
序 
前言 
致谢 
作者简介 
第1章 为什么需要cuda 1 
1.1 本章目标 2 
1.2 并行处理的历史 2 
1.3 gpu计算的崛起 3 
1.4 cuda 5 
1.5 cuda的应用 6 
1.6 本章小结 8 
第2章 入门 9 
2.1 本章目标 10 
2.2 开发环境 10 
2.3 本章小结 14 
第3章 cuda c简介 15 
3.1 本章目标 16 
3.2 第一个程序 16 
3.3 查询设备 20 
.3.4 设备属性的使用 23 
3.5 本章小结 24 
第4章 cuda c并行编程 26 
4.1 本章目标 27 
4.2 cuda并行编程 27 
4.3 本章小结 41 
第5章 线程协作 42 
5.1 本章目标 43 
5.2 并行线程块的分解 43 
5.3 共享内存和同步 54 
5.4 本章小结 68 
第6章 常量内存与事件 69 
6.1 本章目标 70 
6.2 常量内存 70 
6.3 使用事件来测量性能 78 
6.4 本章小结 83 
第7章 纹理内存 84 
7.1 本章目标 85 
7.2 纹理内存简介 85 
7.3 热传导模拟 86 
7.4 本章小结 101 
第8章 图形互操作性 102 
8.1 本章目标 103 
8.2 图形互操作 103 
8.3 基于图形互操作性的gpu波纹示例 108 
8.4 基于图形互操作性的热传导 113 
8.5 directx互操作性 118 
8.6 本章小结 118 
第9章 原子性 119 
9.1 本章目标 120 
9.2 计算功能集 120 
9.3 原子操作简介 122 
9.4 计算直方图 124 
9.5 本章小结 133 
第10章 流 134 
10.1 本章目标 135 
10.2 页锁定主机内存 135 
10.3 cuda流 139 
10.4 使用单个cuda流 140 
10.5 使用多个cuda流 144 
10.6 gpu的工作调度机制 149 
10.7 高效地使用多个cuda流 151 
10.8 本章小结 152 
第11章 多gpu系统上的cuda c 154 
11.1 本章目标 155 
11.2 零拷贝主机内存 155 
11.3 使用多个gpu 162 
11.4 可移动的固定内存 166 
11.5 本章小结 170 
第12章 后记 171 
12.1 本章目标 172 
12.2 cuda工具 172 
12.3 参考资料 176 
12.4 代码资源 178 
12.5 本章小结 179 
附录 高级原子操作 180
译者序
并行计算已成为突破摩尔定理局限性的重要研究方向，而GPU强大的并行计算能力也因此吸引了全球广泛的研究兴趣。然而，在实现通用并行计算时，GPU计算模式存在着一些限制。首先，GPU的设计初衷是为了加速应用程序中的图形绘制运算，因此开发人员需要通过OpenGL或者DirectX等API来访问GPU，这不仅要求开发人员掌握一定的图形编程知识，而且要想方设法将通用计算问题转换为图形计算问题。其次，GPU与多核CPU在计算架构上有着很大不同，GPU更注重于数据并行计算，即在不同的数据上并行执行相同的计算，而对并行计算中的互斥性、同步性以及原子性等方面支持不足。这些因素都限制了GPU在通用并行计算中的应用范围。 
CUDA架构的出现解决了上述问题。CUDA架构专门为GPU计算设计了一种全新的结构，目的正是为了减轻GPU计算模型中的这些限制。在CUDA架构下，开发人员可以通过CUDA C对GPU编程。CUDA C是对标准C的一种简单扩展，学习和使用起来都非常容易，并且其最大的优势在于不需要开发人员具备图形学知识。 
本书的主要内容是介绍如何通过CUDA C来编写在GPU上运行的并行程序。本书首先介绍了CUDA架构的应用背景，并给出了如何配置CUDA C的开发环境。然后，本书通过矢量求和运算、矢量点积运算、光线跟踪、热传导模拟、直方图统计等示例详细介绍了CUDA C的基本语法和使用模式。在这些示例中还穿插介绍了GPU的各种硬件特性及适用环境，例如常量内存、事件、纹理内存、图形互操作性、原子操作、流以及多GPU架构等。 
这些示例的构思以及分析过程都很容易理解，它们也是本书最具价值的部分。读者在阅读这些内容时要反复思考，做到融会贯通，举一反三。只要掌握了这些简单的示例，更复杂的问题也能迎刃而解。本书适合所有程序员阅读，只需具备基本的C语言知识即可。最后，本书还给出了CUDA C的其他一些参考资源。 
参与本书翻译工作的主要有李杨、吴汉平、徐光景、童胜汉、陈军、胡凯等。由于译者的时间和水平有限，翻译中的疏漏和错误在所难免，还望读者和同行不吝指正。 
聂雪军 
2010年于武汉
前言
本书介绍了如何利用计算机中图形处理器（Graphics Process Unit, GPU）的强大计算功能来编写各种高性能的应用软件。虽然GPU的设计初衷是用于在显示器上渲染计算机图形（现在仍然主要用于这个目的），但在科学计算、工程、金融以及其他领域中，人们开始越来越多地使用GPU。我们将解决非图形领域中的问题的GPU程序统称为通用GPU程序。值得高兴的是，虽然你需要具备C或者C++的知识才能充分理解本书的内容，但却不需要具备计算机图形学的知识。任何图形学的基础都不要！GPU编程只是使你进一步增强现有的编程技术。 
在NVIDIA GPU上编写程序来完成通用计算任务之前，你需要知道什么是CUDA。NVIDIA GPU是基于CUDA架构而构建的。你可以将CUDA架构视为NVIDIA构建GPU的模式，其中GPU既可以完成传统的图形渲染任务，又可以完成通用计算任务。要在CUDA GPU上编程，我们需要使用CUDA C语言。在本书前面的内容中可以看到，CUDA C本质上是对C进行了一些扩展，使其能够在像NVIDIA GPU这样的大规模并行机器上进行编程。 
我们为经验丰富的C或者C++程序员编写了本书，这些程序员通常较为熟悉C语言，因此能很轻松地阅读或者编写C代码。本书不仅将进一步增强你的C语言编程能力，而且还能作为使用NVIDIA的CUDA C编程语言的一本快速入门书籍。你既不需要具备任何在大规模软件架构上工作的经验，也不需要有编写过C编译器或者操作系统内核的经历，此外也无需了解ANSI C标准的细枝末节。本书并没有花时间来回顾C语言的语法或者常用的C库函数，例如malloc()或者memcpy()，我们假设你对这些概念已经非常熟悉了。 
虽然本书的目的并不是介绍通用的并行编程技术，但你在书中仍将学习到一些通用的并行编模式。此外，本书并不是一本详细介绍CUDA API的参考书，也不会详细介绍在开发CUDA C软件时可以使用的各种工具。因此，我们强烈建议将本书与NVIDIA的免费文档结合起来阅读，例如《NVIDIA CUDA Programming Guide》和《NVIDIA CUDA Best Practices Guide》等。然而，你不用费工夫去收集所有这些文档，因为我们将介绍你需要的所有内容。 
不会费太多的周折，CUDA C编程领域欢迎你的到来！