CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)

5星(超过95%的资源)
所需积分/C币:48 2019-03-01 09:22:03 136.95MB PDF
558
收藏 收藏
举报

不可多得的GPU编程指南,高清完整版,之前淘宝买的,赚点积分
前言 过去的五年中,计算领域目睹了英伟达( NVIDIA)公司带来的变革。随后的几年,英伟达 公司异军突起,逐渐成长为最知名的游戏硬件制造商之一。计算统一设备架构( Compute Unified Device Architecture,CUDA)编程语言的引人,第一次使这些非常强大的图形协处理器为C程序 员日常所用,以应对日益复杂的计算工作。从嵌入式设备行业到家庭用户,再到超级计算机,所有 的一切都因此而改变。 计算机软件界最大的变迁是从串行编程转向并行编程。其中,CUDA起到了重要的作用。究其 本质,图形处理单元( Graphics Processor Unit,GPU)是为高速图形处理而设计的,它具有天然的 并行性。CUDA采用一种简单的数据并行模型,再结合编程模型,从而无须操纵复杂的图形基元。 实际上,CUDA与之前的架构不同。它不要求程序员对图形或者图形基元有所了解,也不用程 序员有任何这方面的知识。你也不一定要成为游戏开发人员。CUDA语言使得GPU看起来与别的 可编程设备一样。 本书并不假定读者有CUDA或者并行编程的任何经验,仅假定读者有一定的CC++语言编程 知识。随着本书的不断深入,读者将越来越胜仼CUDA的编程工作。本书包含更髙级的主题,帮 助你从不知晓并行编程的程序员成长为能够全方位发掘CUDA潜力的专家。 对已经熟悉并行编程概念和CUDA的程序员来说,本书包含丰富的学习资料。专设章节详细 讨论GPU的架构,包括最新的费米( Fermi)和开普勒( Kepler)硬件,以及如何将它们的效能发 挥到极致。任何可以编写C或C++程序的程序员都可以在经过几个小时的简单训练后编写CUDA 程序。通过对本书的完整学习,你将从仅能得到数倍程序加速的CUDA编程新手成长为能得到数 十倍程序加速的高手。 本书特别针对CUDA学习者而写。在保证程序正确性的前提下,侧重于程序性能的调优。本 书将大大扩展你的技能水平和对编写高性能代码的认识,特别是GPU方面 本书是实践者在实际应用程序中使用CUDA编程的实用指南。同时我们将提供所需的理论知 识和背景介绍。因此,任何人(不管有无基础)都可以使用本书,从中学习如何进行CUDA编程。 综上,本书是专业人士和GPU或并行编程学习者的理想之选。 本书编排如下: 第1章从宏观上介绍流处理器( streaming processor)的演变历史,涉及几个重要的发展历 程,正是它们把我们带入今天的GPU处理世界。 第2章介绍并行编程的概念。例如,串行与并行程序的区别,以及如何采用不同的策略寻找 求解问题之道。本章意在为既有串行程序员建立一个基本的认识,这里的概念将在后面进一步展开。 第3章详尽地讲解CUDA设备及与其紧密相关的硬件和架构。为了编写最优性能的CUDA 程序,适当了解设备硬件的相关知识是必要的。 第4章介绍了如何在 Windows、Mac和 Linux等不同操作系统上安装和配置CUDA软件开 发工具包,另外介绍可用于CUDA的主要调试环境。 第5章介绍CUDA线程模型,并通过一些示例来说明线程模型是如何影响程序性能的。 第6章我们需要了解不同的内存类型,它们在CUDA中的使用方式是影响性能的最大因素。 本章借助实例详细讲解了不同类型内存的工作机制,并指出实践中容易出现的误区。 第7章主要详述了如何在若干任务中恰当地协同CPU和GPU,并讨论了几个有关CPU GPU编程的议题。 第8章介绍如何在应用程序中编写和使用多GPU。 第9章对CUDA编程中限制性能的主要因素予以详解,考察可以用来分析CUDA代码的工 具和技术。 第10章介绍了CUDA软件开发工具包的示例和CUDA提供的库文件,并介绍如何在应用 程序中使用它们。 第11章关注构建自己的GPU服务器或者GPU集群时的几个相关议题。 第12章检视多数程序员在开发CUDA应用程序时易犯的错误类型,并对如何检测和避免这 些错误给出了建议。 目录 致中国读者 22传统的串行代码…… 19 译者序 23串行/并行问题 21 前言 2.4并发性… 22 25并行处理的类型 25 第1章超级计算简史 25.1基于任务的并行处理 25 1.1简介 2.52基于数据的并行处理 27 1.2冯·诺依曼计算机架构 22.6弗林分类法……9 1.3克雷 2.7常用的并行模式 30 1.4连接机 2.7.1基于循环的模式 30 1.5Cell处理器… 2.7.2派生/汇集模式 ……31 6多点计算 273分条/分块 …33 1.7早期的 GPGPU编程 ……10 274分而治之… …34 18单核解决方案的消亡 28本章小结 34 19英伟达和CUDA… 2 1.10GPU硬件 13第3章CUDA硬件概述… …35 11CUDA的替代选择…………15 3.1PC架构 35 1.11.1 OpenCL… 15 3.2GPU硬件结构 39 1. 11.2 Direct Compute 16 33CPU与GPU 1.11.3CPU的替代选择… 16 1.11.4编译指令和库 17 34GPU计算能力……………42 1.12本章小结……… 34.1计算能力1.0… 42 …18 342计算能力1.1 第2章使用GPU理解并行计算…19 34.3计算能力1.2 2.1简介 19 344计算能力1.3……44 IX 34.5计算能力20… 44 55线程東… 34.6计算能力21… 46 551分支 .52GPU的利用率 85 第4章CUDA环境搭建…48 56线程块的调度 88 4.1简介 4857个实例——统计直方图………89 42在 Windows下安装软件开发工具包…485.8本章小结 96 4.3 Visual studio ……49 4.3.1工程 …49 第6章CUDA内存处理 4.3.264位用户 496.1简介… 99 4.3.3创建工程… 5162高速缓存…………………100 4.4 Linux………… ……526.3寄存器的用法 …103 4.5Mac…… ……556.4共享内存……………112 4.6安装调试器……………56 64.1使用共享内存排序……113 4.7编译模型…………58 642基数排序 ……………117 48错误处理… …………59 643合并列表 …123 49本章小结 ………60 644并行合并… …128 645并行归约 131 第5章线程网格、线程块以及线程…61 64.6混合算法 …134 5.1简介 ,,,,,,,,来,来 …………61 647不同GPU上的共享内存…138 52线程 61 64.8共享内存小结 139 521问题分解………6265常量内存… …………………140 522CPU与GPU的不同 63 651常量内存高速缓存……140 523任务执行模式 …64 652常量内存广播机制 142 524GPU线程… 653运行时进行常量内存更新…152 525硬件初窥…… 666.6全局内存 157 526CUDA内核 69 66.1记分牌 165 53线程块… 70 662全局内存排序 165 54线程网格……74 663样本排序 …………168 54.1跨幅与偏移 76 6.7纹理内存… …………188 542X与Y方向的线程索引……77 6.71纹理缓存 188 X 67.2基于硬件的内存获取操作…1898.5多GPU算法……254 6.7.3使用纹理的限制 1908.6按需选用GPU……255 68本章小结 ………1908.7单节点系统…… 258 88流… 259 第7章CUDA实践之道…………191 89多节点系统 …273 7.1简介 …191 810本章小结 …………284 7.2串行编码与并行编码…………191 721CPU与GPU的设计目标…19第9章应用程序性能优化 ……286 722CPU与GPU上的最佳 91策略1:并行/串行在 GPU/CPU 算法对比 194 上的问题分解… …286 7.3数据集处理……………197 91.1分析问题 286 74性能分析 ………206 912时间 286 75一个使用AES的示例………218 91.3问题分解……288 7.5.1算法… ……………219 914依赖性……………289 752AES的串行实现… 223 91.5数据集大小 292 753初始内核函数… 224 91.6分辨率 ………293 7.54内核函数性能……229 91.7识别瓶颈 …294 7.55传输性能……………233 918CPU和GPU的任务分组…297 756单个执行流版本……234 9.1.9本节小结 …299 7.57如何与CPU比较……2359.2策略2:内存因素… 299 7.58考虑在其他GPU上运行…244 92.1内存带宽………………299 7.59使用多个流………248 922限制的来源 ……300 7.510AES总结 ………249 923内存组织 302 7.6本章小结 ………249 924内存访问以计算比率…303 92.5循环融合和内核融合…308 第8章多CPU和多GPU 926共享内存和高速缓存的使用…309 解决方案 252 927本节小结 311 8.1简介 ……252 93策略3:传输 …………………311 82局部性 252 931锁页内存 311 83多CPU系统 252 9.3.2零复制内存 ……315 84多GPU系统…… 253 9.33带宽限制… 322 934GPU计时 ……327 10.2.2NPP ………411 93.5重叠GPU传输………330 10.2.3 Thrust…………………419 93.6本节小结 334 10.2. 4 CuRAND 434 94策略4:线程使用、计算和分支…335 102.5 CuBLas库 438 94.1线程内存模式…33510.3CUDA运算SDK 442 942非活动线程……337 10.3.1设备查询…………443 943算术运算密度… 338 10.3.2带宽测试……………445 944一些常见的编译器优化…342 10.3.3 SimpleR2P…446 945分支 347 10.34 asyncAPl和 cudaOpenMP…448 94.6理解底层汇编代码……351 10.3.5对齐类型 455 947寄存器的使用 35510.4基于指令的编程 457 948本节小结 35710.5编写自己的内核 464 9.5策略5:算法…… 35710.6本章小结 ……466 95.1排序 358 952归约 第11章规划GPU硬件系统 467 …………363 9.53本节小结……………3841.1简介………………467 9.6策略6:资源竞争 384 112CPU处理器 …469 96.1识别瓶颈… 384113GPU设备…… 470 96.2解析瓶颈………396 11.3.1大容量内存的支持…471 963本节小结 …403 11.32ECC内存的支持…471 97策略7:自调优应用程序……403 11.33 Tesla计算集群驱动程序…471l 97.1识别硬件 404 113.4更高双精度数学运算…472 972设备的利用…… …405 11.3.5大内存总线带宽 973性能采样……………407 113.6系统管理中断 …472 974本节小结 …407 11.3.7状态指示灯…… 472 98本章小结 ……408 114PCI-E总线………………472 11.5 Ge Force板卡…473 第10章函数库和SDK …410 11.6CPU内存 474 10.1简介 …410 11.7风冷……… 475 10.2函数库…… 41011.8液冷… 477 10.2.1函数库通用规范 119机箱与主板… 479 XII 11.10大容量存储……………481 12.3.1竞争冒险 497 1110.1主板上的输入/输出接口…481 123.2同步 ……498 1110.2专用RAID控制器…481 12.3.3原子操作…………………502 11.10.3HDSL……… 48312.4算法问题… ……………504 11.10.4大容量存储需求…483 1241对比测试…………504 11.10.5联网 483 124.2内存泄漏 ………506 11.11电源选择………484 124.3耗时的内核程序……506 11.12操作系统 …487 12.5查找并避免错误 507 11.12.1 Windows…………487 12.51你的GPU程序有多少 1. 12.2 Linux 488 错误……………………507 1113本章小结 …………488 12.52分而治之… 508 第12章常见问题、原因及解决方案…48 12.5.3断言和防御型编程…509 1254调试级别和打印……511 12.1简介 489 12.5.5版本控制… 514 122CUDA指令错误 ………489 12.6为未来的GPU进行开发 …515 122.1CUDA错误处理 489 12.6.1开普勒架构………515 1222内核启动和边界检查……490 126.2思考………………518 1223无效的设备操作 4 127后续学习资源… 519 1224 volatile限定符 492 127.1介绍… ……………519 122.5计算能力依赖函数……494 12.7.2在线课程… 519 12.2.6设备函数、全局函数和 127.3教学课程… …520 主机函数 …495 127.4书籍…521 12.27内核中的流 ……496 127.5英伟达CUDA资格认证…521 12.3并行编程问题…………497 128本章小结 522 第1章 超级计算简史 1.1简介 为什么我们会在一本关于CUDA的书籍中谈论超级计算机呢?超级计算机通常走在技 术发展的最前沿。我们在这里看到的技术,在未来的5~10年内,将是桌面计算机中很普 通的技术。2010年,在德国汉堡举行的一年一度的国际超级计算机大会上宣布,根据500强 名单(htp:www.top500org),英伟达基于GPU的机器在世界最强大的计算机列表中位列第 二。从理论上讲,它的峰值性能比强大的 IBM Roadrunner和当时的第一名 Cray Jaguar的性 能还要高。当时α ray Jaguar的性能峰值接近3千万亿次。2011年,采用CUDA技术的英伟 达GPU仍然是世界上最快的超级计算机。这时大家突然清楚地认识到,与简陋的桌面PC一 起,GPU已经在高性能计算领域达到了很高的地位。 超级计算是我们在现代处理器中看到的许多技术的发展动力。由于对用更快的处理器来 处理更大数据集的需求,工业界不断生产出更快的计算机。正是在这些发展变化中,GPU的 CUDA技术走到了今天。 超级计算机和桌面计算正在向着异构计算发展—人们试图通过将中央处理器( Central Processor Unit,CPU)和图形处理器( Graphics Processor Unit,GPU)技术混合在一起来实现 更高的性能。使用GPU的两个最大的国际项目是BONC和 Folding@Home,它们都是分布 式计算的项目。这两个项目使得普通人也能为具体的科学项目做出真正的贡献。在项目中, 釆用GPU加速器的 CPU/GPU主机的贡献远远超过了仅装备CPU主机的贡献。截至2011年 l1月,大约550万台主机提供了约5.3千万亿次的计算性能,这将近是2011年世界上最快 的超级计算机(日本富士通的“京(K)计算机”)计算性能的一半 作为美国最快的超级计算机 Jaguar的升级换代产品,命名为Ttan的超级计算机计划于 2013年问世。它将用近30万个CPU核和高达18000个GPU板卡达到每秒10~20千万亿 次的性能。正是由于有像 Titan这样的来自世界各地的大力支持,无论是在HPC(高性能计 算)行业,还是在桌面电脑领域,GPU编程已经成为主流。 现在,你可以自己“攒”或者购买一台具有数万亿次运算性能的桌面超级计算机了。在 21世纪初期,这将会使你跻身500强的首位,击败拥有9632奔腾处理器的 IBM ASCI Red

...展开详情
试读 127P CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
无左无右 清晰,可以!!!!
2021-01-07
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版) 48积分/C币 立即下载
1/127
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第1页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第2页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第3页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第4页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第5页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第6页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第7页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第8页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第9页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第10页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第11页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第12页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第13页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第14页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第15页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第16页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第17页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第18页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第19页
CUDA并行程序设计 GPU编程指南 shanecook 中文版全522页(高清完整版)第20页

试读结束, 可继续阅读

48积分/C币 立即下载