新闻资讯
看你所看,想你所想

CUDA并行程式设计:GPU编程指南

CUDA并行程式设计:GPU编程指南

CUDA并行程式设计:GPU编程指南

《UDA并行程式设计:GPU编程指南》是2014年机械工业出版社出版的中译图书,作者Shane Cook。

基本介绍

  • 书名:CUDA并行程式设计
  • 又名:GPU编程指南
  • 作者:库克 (Shane Cook)
  • 原版名称:CUDA Programming:A Developer's Guide to Parallel Computing with GPUs
  • 译者:马培军
  • ISBN:9787111448617
  • 类别:计算机
  • 页数:522
  • 定价:78.00
  • 出版社:机械工业出版社
  • 出版时间:2014-1
  • 开本:1/16
  • 丛书名:高性能计算系列丛书

内容简介

本书是CUDA并行程式设计领域最全面、最详实和最具权威性的着作之一,由CUDA开发者社区技术总监亲自撰写,英伟达中国首批CUDA官方认证工程师翻译,详实地讲解了CUDA并行程式设计的技术知识点(平台、架构、硬体知识、开发工具和热点技术)和编程方法,包含大量实用代码示例,实践性非常强。

作者简介

Shane Cook CUDA开发者社区技术总监,有20余年行业经验。当认识到异构系统以及CUDA对于已有串列和并行编程技术的革命性冲击时,创立了CUDA开发者社区(欧洲的谘询公司,专门帮助企业重构代码以充分利用GPU硬体的威力)。他专注于高性能软体开发、GPU利用、嵌入式系统,并参与了多个C语言编程标準的建设,包括广泛套用于汽车软体行业的汽车工业软体MISRA Safer C。他常为德国汽车行业、国防承包行业、北电网路以及福特汽车公司等机构或蓝筹股公司提供专业谘询服务和软体定製开发。
译者:苏统华,博士,英伟达中国首批CUDA官方认证工程师,主要研究领域包括大规模并行计算、模式识别、物联网智慧型信息处理、智慧型媒体互动与计算等。2013年,其所开发的CUDA识别算法,在文档分析和识别国际会议(ICDAR’ 2013)上获得手写汉字识别竞赛的双料冠军。另外,他在手写汉字识别领域建立了里程碑式的工作,论文他引300余次;他所建立的HIT-MW库,为全世界100多家科研院所採用;目前负责国家自然科学基金项目2项。着有英文专着《Chinese Handwriting Recognition: An Algorithmic Perspective》(德国施普林格出版社),CUDA相关译作2本(机械工业出版社)。现任哈尔滨工业大学软体学院高级讲师、硕士生导师。

目录

致中国读者
译者序
前 言
第1章 超级计算简史1
1.1简介1
1.2冯·诺依曼计算机架构2
1.3克雷4
1.4连线机5
1.5 Cell处理器6
1.6多点计算8
1.7早期的GPGPU编程10
1.8单核解决方案的消亡11
1.9英伟达和CUDA12
1.10GPU硬体13
1.11CUDA的替代选择15
1.11.1 OpenCL15
1.11.2DirectCompute16
1.11.3CPU的替代选择16
1.11.4编译指令和库17
1.12本章小结18
第2章 使用GPU理解并行计算19
2.1简介19
2.2传统的串列代码19
2.3串列/并行问题21
2.4并发性22
2.5并行处理的类型25
2.5.1基于任务的并行处理25
2.5.2基于数据的并行处理27
2.6弗林分类法29
2.7常用的并行模式30
2.7.1基于循环的模式30
2.7.2派生/汇集模式31
2.7.3分条/分块33
2.7.4分而治之34
2.8本章小结34
第3章 CUDA硬体概述35
3.1PC架构35
3.2GPU硬体结构39
3.3CPU与GPU41
3.4GPU计算能力42
3.4.1计算能力1.042
3.4.2计算能力1.143
3.4.3计算能力1.244
3.4.4计算能力1.344
3.4.5计算能力2.044
3.4.6计算能力2.146
第4章 CUDA环境搭建48
4.1简介48
4.2在Windows下安装软体开发工具包48
4.3VisualStudio49
4.3.1工程49
4.3.264位用户49
4.3.3创建工程51
4.4Linux52
4.5Mac55
4.6安装调试器56
4.7编译模型58
4.8错误处理59
4.9本章小结60
第5章 执行绪格线、执行绪块以及执行绪61
5.1 简介61
5.2 执行绪61
5.2.1 问题分解62
5.2.2 CPU与GPU的不同63
5.2.3 任务执行模式64
5.2.4 GPU执行绪64
5.2.5 硬体初窥66
5.2.6 CUDA核心69
5.3 执行绪块70
5.4 执行绪格线74
5.4.1 跨幅与偏移76
5.4.2 X与Y方向的执行绪索引77
5.5 执行绪束83
5.5.1 分支83
5.5.2 GPU的利用率85
5.6 执行绪块的调度88
5.7 一个实例——统计直方图89
5.8 本章小结96
第6章 CUDA记忆体处理99
6.1 简介99
6.2 高速快取100
6.3 暂存器的用法103
6.4 共享记忆体112
6.4.1 使用共享记忆体排序113
6.4.2 基数排序117
6.4.3 合併列表123
6.4.4 并行合併128
6.4.5 并行归约131
6.4.6 混合算法134
6.4.7 不同GPU上的共享记忆体138
6.4.8 共享记忆体小结139
6.5 常量记忆体140
6.5.1 常量记忆体高速快取140
6.5.2 常量记忆体广播机制142
6.5.3 运行时进行常量记忆体更新152
6.6 全局记忆体157
6.6.1 记分牌165
6.6.2 全局记忆体排序165
6.6.3 样本排序168
6.7 纹理记忆体188
6.7.1 纹理快取188
6.7.2 基于硬体的记忆体获取操作189
6.7.3 使用纹理的限制190
6.8 本章小结190
第7章 CUDA实践之道191
7.1 简介191
7.2 串列编码与并行编码191
7.2.1 CPU与GPU的设计目标191
7.2.2 CPU与GPU上的最佳算法对比194
7.3 数据集处理197
7.4 性能分析206
7.5 一个使用AES的示例218
7.5.1 算法219
7.5.2 AES的串列实现223
7.5.3 初始核心函式224
7.5.4 核心函式性能229
7.5.5 传输性能233
7.5.6 单个执行流版本234
7.5.7 如何与CPU比较235
7.5.8 考虑在其他GPU上运行244
7.5.9 使用多个流248
7.5.10 AES总结249
7.6 本章小结249
第8章 多CPU和多GPU解决方案252
8.1 简介252
8.2 局部性252
8.3 多CPU系统252
8.4 多GPU系统253
8.5 多GPU算法254
8.6 按需选用GPU255
8.7 单节点系统258
8.8 流259
8.9 多节点系统273
8.10 本章小结284
第9章 应用程式性能最佳化286
9.1 策略1:并行/串列在GPU/CPU上的问题分解286
9.1.1 分析问题286
9.1.2 时间286
9.1.3 问题分解288
9.1.4 依赖性289
9.1.5 数据集大小292
9.1.6 解析度293
9.1.7 识别瓶颈294
9.1.8 CPU和GPU的任务分组297
9.1.9 本节小结299
9.2 策略2:记忆体因素299
9.2.1 记忆体频宽299
9.2.2 限制的来源300
9.2.3 记忆体组织302
9.2.4 记忆体访问以计算比率303
9.2.5 循环融合和核心融合308
9.2.6 共享记忆体和高速快取的使用309
9.2.7 本节小结311
9.3 策略3:传输311
9.3.1 锁页记忆体311
9.3.2 零複製记忆体315
9.3.3 频宽限制322
9.3.4 GPU计时327
9.3.5 重叠GPU传输330
9.3.6 本节小结334
9.4 策略4:执行绪使用、计算和分支335
9.4.1 执行绪记忆体模式335
9.4.2 非活动执行绪337
9.4.3 算术运算密度338
9.4.4 一些常见的编译器最佳化342
9.4.5 分支347
9.4.6 理解底层彙编代码351
9.4.7 暂存器的使用355
9.4.8 本节小结357
9.5 策略5:算法357
9.5.1 排序358
9.5.2 归约363
9.5.3 本节小结384
9.6 策略6:资源竞争384
9.6.1 识别瓶颈384
9.6.2 解析瓶颈396
9.6.3 本节小结403
9.7 策略7:自调优应用程式403
9.7.1 识别硬体404
9.7.2 设备的利用405
9.7.3 性能採样407
9.7.4 本节小结407
9.8 本章小结408
第10章 函式馆和SDK410
10.1 简介410
10.2 函式馆410
10.2.1 函式馆通用规範411
10.2.2 NPP411
10.2.3 Thrust419
10.2.4 CuRAND434
10.2.5 CuBLAS库438
10.3 CUDA运算SDK442
10.3.1 设备查询443
10.3.2 频宽测试445
10.3.3 SimpleP2P446
10.3.4 asyncAPI和cudaOpenMP448
10.3.5 对齐类型455
10.4 基于指令的编程457
10.5 编写自己的核心464
10.6 本章小结466
第11章 规划GPU硬体系统467
11.1 简介467
11.2 CPU处理器469
11.3 GPU设备470
11.3.1 大容量记忆体的支持471
11.3.2 ECC记忆体的支持471
11.3.3 Tesla计算集群驱动程式471
11.3.4 更高双精度数学运算472
11.3.5 大记忆体汇流排频宽472
11.3.6 系统管理中断472
11.3.7 状态指示灯472
11.4 PCI—E汇流排472
11.5 GeForce板卡473
11.6 CPU记忆体474
11.7 风冷475
11.8 液冷477
11.9 机箱与主机板479
11.10 大容量存储481
11.10.1 主机板上的输入/输出接口481
11.10.2 专用RAID控制器481
11.10.3 HDSL483
11.10.4 大容量存储需求483
11.10.5 联网483
11.11 电源选择484
11.12 作业系统487
11.12.1 Windows487
11.12.2 Linux488
11.13 本章小结488
第12章 常见问题、原因及解决方案489
12.1 简介489
12.2 CUDA指令错误489
12.2.1 CUDA错误处理489
12.2.2 核心启动和边界检查490
12.2.3 无效的设备操作491
12.2.4 volatile限定符492
12.2.5 计算能力依赖函式494
12.2.6 设备函式、全局函式和主机函式495
12.2.7 核心中的流496
12.3 并行编程问题497
12.3.1 竞争冒险497
12.3.2 同步498
12.3.3 原子操作502
12.4 算法问题504
12.4.1 对比测试504
12.4.2 记忆体泄漏506
12.4.3 耗时的核心程式506
12.5 查找并避免错误507
12.5.1 你的GPU程式有多少错误507
12.5.2 分而治之508
12.5.3 断言和防御型编程509
12.5.4 调试级别和列印511
12.5.5 版本控制514
12.6 为未来的GPU进行开发515
12.6.1 克卜勒架构515
12.6.2 思考518
12.7 后续学习资源519
12.7.1 介绍519
12.7.2 线上课程519
12.7.3 教学课程520
12.7.4 书籍521
12.7.5 英伟达CUDA资格认证521
12.8 本章小结522

转载请注明出处安可林文章网 » CUDA并行程式设计:GPU编程指南

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com