基本信息
- 原书名: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
- 所属分类:计算机 > 计算机组织与体系结构 > 微处理器/CPU

【插图】

编辑推荐
CUDA高级工程师Jason Sanders、Edward Kandrot联袂打造
发挥GPU的强大计算功能,快速编写高性能CUDA软件
内容简介
作译者
作者:(美国)桑德斯(Jason Sanders) (美国)Edward Kandrot 译者:聂雪军 等
桑德斯(Jason Sanders),是NVIDIA公司CUDA平台小组的高级软件工程师。他在NVIDIA的工作包括帮助开发早期的CUDA系统软件,并参与OpenCL 1.0规范的制定,该规范是一个用于异构计算的行业标准。Jason在加州大学伯克利分校获得计算机科学硕士学位,他发表了关于GPU计算的研究论文。此外,他还获得了普林斯顿大学电子工程专业学士学位。在加入NVIDIA公司之前,他曾在ATI技术公司、Apple公司以及Novell公司工作过。
Edward Kandrot是NVIDIA公司CUDA平台小组的高级软件工程师。他在代码性能优化方面拥有20多年的工作经验,他曾经在Adobe公司Microsoft公司以及Autodesk公司等工作过。
目录
序
前言
致谢
作者简介
第1章 为什么需要CUDA
1.1 本章目标
1.2 并行处理的历史
1.3 GPU计算的崛起
1.4 CUDA
1.5 CUDA的应用
1.6 本章小结
第2章 入门
2.1 本章目标
2.2 开发环境
2.3 本章小结
第3章 CUDAC简介
3.1 本章目标
3.2 第一个程序
3.3 查询设备
译者序
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年于武汉
前言
在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编程领域欢迎你的到来!
序言
?多核CPU技术:CPU核的数量将不断增长,因为人们希望将越来越多的部件封装到芯片上,同时又要避免功耗墙、指令集并行性墙、内存墙等。专用硬件和大规模并行加速器:例如,近年来NVIDIA公司推出的GPU在浮点运算上的性能已经超过了标准CPU的性能。而且,GPU编程也正变得和多核CPU编程一样简单。
在未来的设计中,这两种技术在系统中所占的比例并不是固定的,并且随着时间的推移很可能发生变化。显然,在未来的计算机系统中,无论是笔记本电脑还是超级计算机,都将包含各种异构的部件。事实上,这种系统的浮点计算能力已经达到了P级(即每秒钟执行1015次浮点运算)。但是,在采用混合处理器的新计算环境中,开发人员面临的问题和挑战仍然很艰难。软件基础架构中的关键部分要赶上这种变革的步伐也同样很困难。在一些情况中,软件的性能无法随着处理器核数量的增加而增加,因为越来越多的时间消耗在数据移动而不是计算上。在其他情况中,软件通常是在硬件出现数年后才发布性能调优后的版本,因此在发布时就已经过时了。还有一些情况,例如在最新的GPU上,软件根本无法运行,因为编程环境已经发生了太大的变化。本书解决了软件开发中面临的核心问题,它介绍了近年来在编写大规模并行加速器中最具创新性和功能最强大的解决方案之一。本书介绍了如何使用CUDA C来编写程序,不仅给出了详细的示例,而且还介绍了程序的设计流程以及NVIDIA GPU的高效使用方式。本书介绍了并行计算的一些基本概念,包括简单的示例和调试方法(涵盖逻辑调试和性能调试),此外还介绍了一些高级主题以及在编译和使用应用程序时需要注意的问题,并通过编程示例来进一步强化这些概念。
如果读者需要开发基于加速器的计算系统,那么本书是首选。本书深入分析了并行计算,并为其中的多种问题提供了解决方案。本书对于应用程序开发人员、数值计算库开发人员,以及学习并行计算的学生和教师来说尤为有用。我很高兴从本书中学到了不少东西,并且我相信你也会有同样的体会。
—Jack Dongarra田纳西大学杰出教授,美国橡树岭国家实验室杰出研究人员
媒体评论
——Jack Dongarra,田纳西大学杰出教授,美国橡树岭国家实验室杰出研究人员