CUDA C编程权威指南

CUDA C编程权威指南
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (John Cheng) , (Max Grossman) , (Ty McKercher)
2017-06
版次: 1
ISBN: 9787111565475
定价: 99.00
装帧: 平装
开本: 其他
页数: 412页
正文语种: 简体中文
原版书名: Professional CUDA C Programming
  • 本书主要介绍了如何使用GPU和利用CUDAC语言对其进行编程的。首先从基本的CUDA概念及结构讲起,一步一步地引导读者进入CUDA的内部世界,由浅入深地介绍了其编程要求及其内部架构,使读者对其有了整体印象后,逐步深入了解其内部机能,后介绍了GPU的一些专用函数和注意事项。
                                     作者:(美国)程润伟(John Cheng) (美国)马克斯·格罗斯曼(Max Grossman) (美国)泰·麦克切尔(Ty McKercher) 译者:颜成钢 殷建 李亮

    程润伟(John Cheng),博士是休斯敦BGP国际的研究科学家,利用GPU开发出了地震成像产品,并开发了许多异构计算平台上的高性能并行生产应用程序。
    马克斯·格罗斯曼(Max Grossman)是GPU计算方面的专家,主要用CUDA解决医学影像、机器学习和地球物理学等问题。
                                     译者序
    推荐序
    自序
    作者简介
    技术审校者简介
    前言
    致谢
    第1章基于CUDA的异构并行计算1
    1.1并行计算1
    1.1.1串行编程和并行编程2
    1.1.2并行性3
    1.1.3计算机架构4
    1.2异构计算6
    1.2.1异构架构7
    1.2.2异构计算范例9
    1.2.3CUDA:一种异构计算平台10
    1.3用GPU输出HelloWorld12
    1.4使用CUDAC编程难吗15
    1.5总结16
    1.6习题16
    第2章CUDA编程模型18
    2.1CUDA编程模型概述18
    2.1.1CUDA编程结构19
    2.1.2内存管理20
    2.1.3线程管理24
    2.1.4启动一个CUDA核函数29
    2.1.5编写核函数30
    2.1.6验证核函数31
    2.1.7处理错误32
    2.1.8编译和执行32
    2.2给核函数计时35
    2.2.1用CPU计时器计时35
    2.2.2用nvprof工具计时39
    2.3组织并行线程40
    2.3.1使用块和线程建立矩阵索引40
    2.3.2使用二维网格和二维块对矩阵求和44
    2.3.3使用一维网格和一维块对矩阵求和47
    2.3.4使用二维网格和一维块对矩阵求和48
    2.4设备管理50
    2.4.1使用运行时API查询GPU信息50
    2.4.2确定最优GPU53
    2.4.3使用nvidia—smi查询GPU信息53
    2.4.4在运行时设置设备54
    2.5总结54
    2.6习题55
    第3章CUDA执行模型56
    3.1CUDA执行模型概述56
    3.1.1GPU架构概述57
    3.1.2Fermi架构59
    3.1.3Kepler架构61
    3.1.4配置文件驱动优化65
    3.2理解线程束执行的本质67
    3.2.1线程束和线程块67
    3.2.2线程束分化69
    3.2.3资源分配74
    3.2.4延迟隐藏76
    3.2.5占用率78
    3.2.6同步81
    3.2.7可扩展性82
    3.3并行性的表现83
    3.3.1用nvprof检测活跃的线程束84
    3.3.2用nvprof检测内存操作85
    3.3.3增大并行性86
    3.4避免分支分化88
    3.4.1并行归约问题88
    3.4.2并行归约中的分化89
    3.4.3改善并行归约的分化93
    3.4.4交错配对的归约95
    3.5展开循环97
    3.5.1展开的归约97
    3.5.2展开线程的归约99
    3.5.3完全展开的归约101
    3.5.4模板函数的归约102
    3.6动态并行104
    3.6.1嵌套执行105
    3.6.2在GPU上嵌套HelloWorld106
    3.6.3嵌套归约109
    3.7总结113
    3.8习题113
    第4章全局内存115
    4.1CUDA内存模型概述115
    4.1.1内存层次结构的优点116
    4.1.2CUDA内存模型117
    4.2内存管理124
    4.2.1内存分配和释放124
    4.2.2内存传输125
    4.2.3固定内存127
    4.2.4零拷贝内存128
    4.2.5统一虚拟寻址133
    4.2.6统一内存寻址134
    4.3内存访问模式135
    4.3.1对齐与合并访问135
    4.3.2全局内存读取137
    4.3.3全局内存写入145
    4.3.4结构体数组与数组结构体147
    4.3.5性能调整151
    4.4核函数可达到的带宽154
    4.4.1内存带宽154
    4.4.2矩阵转置问题155
    4.5使用统一内存的矩阵加法167
    4.6总结171
    4.7习题172
    第5章共享内存和常量内存174
    5.1CUDA共享内存概述174
    5.1.1共享内存175
    5.1.2共享内存分配176
    5.1.3共享内存存储体和访问模式176
    5.1.4配置共享内存量181
    5.1.5同步183
    5.2共享内存的数据布局185
    5.2.1方形共享内存185
    5.2.2矩形共享内存193
    5.3减少全局内存访问199
    5.3.1使用共享内存的并行归约199
    5.3.2使用展开的并行归约202
    5.3.3使用动态共享内存的并行归约204
    5.3.4有效带宽205
    5.4合并的全局内存访问205
    5.4.1基准转置内核205
    5.4.2使用共享内存的矩阵转置207
    5.4.3使用填充共享内存的矩阵转置210
    5.4.4使用展开的矩阵转置211
    5.4.5增大并行性214
    5.5常量内存215
    5.5.1使用常量内存实现一维模板215
    5.5.2与只读缓存的比较217
    5.6线程束洗牌指令219
    5.6.1线程束洗牌指令的不同形式220
    5.6.2线程束内的共享数据222
    5.6.3使用线程束洗牌指令的并行归约226
    5.7总结227
    5.8习题228
    第6章流和并发230
    6.1流和事件概述231
    6.1.1CUDA流231
    6.1.2流调度234
    6.1.3流的优先级235
    6.1.4CUDA事件235
    6.1.5流同步237
    6.2并发内核执行240
    6.2.1非空流中的并发内核240
    6.2.2FermiGPU上的虚假依赖关系242
    6.2.3使用OpenMP的调度操作244
    6.2.4用环境变量调整流行为245
    6.2.5GPU资源的并发限制246
    6.2.6默认流的阻塞行为247
    6.2.7创建流间依赖关系248
    6.3重叠内核执行和数据传输249
    6.3.1使用深度优先调度重叠249
    6.3.2使用广度优先调度重叠252
    6.4重叠GPU和CPU执行254
    6.5流回调255
    6.6总结256
    6.7习题257
    第7章调整指令级原语258
    7.1CUDA指令概述259
    7.1.1浮点指令259
    7.1.2内部函数和标准函数261
    7.1.3原子操作指令262
    7.2程序优化指令264
    7.2.1单精度与双精度的比较264
    7.2.2标准函数与内部函数的比较266
    7.2.3了解原子指令272
    7.2.4综合范例277
    7.3总结279
    7.4习题280
    第8章GPU加速库和OpenACC281
    8.1CUDA库概述282
    8.1.1CUDA库支持的作用域283
    8.1.2通用的CUDA库工作流283
    8.2cuSPARSE库285
    8.2.1cuSPARSE数据存储格
    8.2.2用cuSPARSE进行格式转换
    8.2.3cuSPARSE功能示例
    8.2.4cuSPARSE发展中的重要主题
    8.2.5cuSPARSE小结
    8.3cuBLAS库
    8.3.1管理cuBLAS数据
    8.3.2cuBLAS功能示例
    8.3.3cuBLAS发展中的重要主题
    8.3.4cuBLAS小结
    8.4cuFFT库
    8.4.1使用cuFFTAPI
    8.4.2cuFFT功能示例
    8.4.3cuFFT小结
    8.5cuRAND库
    8.5.1拟随机数或伪随机数的选择
    8.5.2cuRAND库概述
    8.5.3cuRAND介绍
    8.5.4cuRAND发展中的重要主题
    8.6CUDA6.0中函数库的介绍
    8.6.1Drop—In库
    8.6.2多GPU库
    8.7CUDA函数库的性能研究
    8.7.1cuSPARSE与MKL的比较
    8.7.2cuBLAS与MKLBLAS的比较
    8.7.3cuFFT与FFTW及MKL的比较
    8.7.4CUDA库性能小结
    8.8OpenACC的使用
    8.8.1OpenACC计算指令的使用
    8.8.2OpenACC数据指令的使用
    8.8.3OpenACC运行时API
    8.8.4OpenACC和CUDA库的结合
    8.8.5OpenACC小结
    8.9总结
    8.10习题
    第9章多GPU编程
    9.1从一个GPU到多GPU
    9.1.1在多GPU上执行
    9.1.2点对点通信
    9.1.3多GPU间的同步
    9.2多GPU间细分计算
    9.2.1在多设备上分配内存
    9.2.2单主机线程分配工作
    9.2.3编译和执行
    9.3多GPU上的点对点通信
    9.3.1实现点对点访问
    9.3.2点对点的内存复制
    9.3.3统一虚拟寻址的点对点内存访问
    9.4多GPU上的有限差分
    9.4.1二维波动方程的模板计算
    9.4.2多GPU程序的典型模式
    9.4.3多GPU上的二维模板计算
    9.4.4重叠计算与通信
    9.4.5编译和执行
    9.5跨GPU集群扩展应用程序
    9.5.1CPU到CPU的数据传输
    9.5.2使用传统MPI在GPU和GPU间传输数据
    9.5.3使用CUDA—awareMPI进行GPU到GPU的数据传输
    9.5.4使用CUDA—awareMPI进行节点内GPU到GPU的数据传输
    9.5.5调整消息块大小
    行GPU到GPU的数据传输
    9.6总结
    9.7习题
    ……
    第10章程序实现的注意事项
    附录推荐阅读
  • 内容简介:
    本书主要介绍了如何使用GPU和利用CUDAC语言对其进行编程的。首先从基本的CUDA概念及结构讲起,一步一步地引导读者进入CUDA的内部世界,由浅入深地介绍了其编程要求及其内部架构,使读者对其有了整体印象后,逐步深入了解其内部机能,后介绍了GPU的一些专用函数和注意事项。
  • 作者简介:

                                     作者:(美国)程润伟(John Cheng) (美国)马克斯·格罗斯曼(Max Grossman) (美国)泰·麦克切尔(Ty McKercher) 译者:颜成钢 殷建 李亮

    程润伟(John Cheng),博士是休斯敦BGP国际的研究科学家,利用GPU开发出了地震成像产品,并开发了许多异构计算平台上的高性能并行生产应用程序。
    马克斯·格罗斯曼(Max Grossman)是GPU计算方面的专家,主要用CUDA解决医学影像、机器学习和地球物理学等问题。
  • 目录:

                                     译者序
    推荐序
    自序
    作者简介
    技术审校者简介
    前言
    致谢
    第1章基于CUDA的异构并行计算1
    1.1并行计算1
    1.1.1串行编程和并行编程2
    1.1.2并行性3
    1.1.3计算机架构4
    1.2异构计算6
    1.2.1异构架构7
    1.2.2异构计算范例9
    1.2.3CUDA:一种异构计算平台10
    1.3用GPU输出HelloWorld12
    1.4使用CUDAC编程难吗15
    1.5总结16
    1.6习题16
    第2章CUDA编程模型18
    2.1CUDA编程模型概述18
    2.1.1CUDA编程结构19
    2.1.2内存管理20
    2.1.3线程管理24
    2.1.4启动一个CUDA核函数29
    2.1.5编写核函数30
    2.1.6验证核函数31
    2.1.7处理错误32
    2.1.8编译和执行32
    2.2给核函数计时35
    2.2.1用CPU计时器计时35
    2.2.2用nvprof工具计时39
    2.3组织并行线程40
    2.3.1使用块和线程建立矩阵索引40
    2.3.2使用二维网格和二维块对矩阵求和44
    2.3.3使用一维网格和一维块对矩阵求和47
    2.3.4使用二维网格和一维块对矩阵求和48
    2.4设备管理50
    2.4.1使用运行时API查询GPU信息50
    2.4.2确定最优GPU53
    2.4.3使用nvidia—smi查询GPU信息53
    2.4.4在运行时设置设备54
    2.5总结54
    2.6习题55
    第3章CUDA执行模型56
    3.1CUDA执行模型概述56
    3.1.1GPU架构概述57
    3.1.2Fermi架构59
    3.1.3Kepler架构61
    3.1.4配置文件驱动优化65
    3.2理解线程束执行的本质67
    3.2.1线程束和线程块67
    3.2.2线程束分化69
    3.2.3资源分配74
    3.2.4延迟隐藏76
    3.2.5占用率78
    3.2.6同步81
    3.2.7可扩展性82
    3.3并行性的表现83
    3.3.1用nvprof检测活跃的线程束84
    3.3.2用nvprof检测内存操作85
    3.3.3增大并行性86
    3.4避免分支分化88
    3.4.1并行归约问题88
    3.4.2并行归约中的分化89
    3.4.3改善并行归约的分化93
    3.4.4交错配对的归约95
    3.5展开循环97
    3.5.1展开的归约97
    3.5.2展开线程的归约99
    3.5.3完全展开的归约101
    3.5.4模板函数的归约102
    3.6动态并行104
    3.6.1嵌套执行105
    3.6.2在GPU上嵌套HelloWorld106
    3.6.3嵌套归约109
    3.7总结113
    3.8习题113
    第4章全局内存115
    4.1CUDA内存模型概述115
    4.1.1内存层次结构的优点116
    4.1.2CUDA内存模型117
    4.2内存管理124
    4.2.1内存分配和释放124
    4.2.2内存传输125
    4.2.3固定内存127
    4.2.4零拷贝内存128
    4.2.5统一虚拟寻址133
    4.2.6统一内存寻址134
    4.3内存访问模式135
    4.3.1对齐与合并访问135
    4.3.2全局内存读取137
    4.3.3全局内存写入145
    4.3.4结构体数组与数组结构体147
    4.3.5性能调整151
    4.4核函数可达到的带宽154
    4.4.1内存带宽154
    4.4.2矩阵转置问题155
    4.5使用统一内存的矩阵加法167
    4.6总结171
    4.7习题172
    第5章共享内存和常量内存174
    5.1CUDA共享内存概述174
    5.1.1共享内存175
    5.1.2共享内存分配176
    5.1.3共享内存存储体和访问模式176
    5.1.4配置共享内存量181
    5.1.5同步183
    5.2共享内存的数据布局185
    5.2.1方形共享内存185
    5.2.2矩形共享内存193
    5.3减少全局内存访问199
    5.3.1使用共享内存的并行归约199
    5.3.2使用展开的并行归约202
    5.3.3使用动态共享内存的并行归约204
    5.3.4有效带宽205
    5.4合并的全局内存访问205
    5.4.1基准转置内核205
    5.4.2使用共享内存的矩阵转置207
    5.4.3使用填充共享内存的矩阵转置210
    5.4.4使用展开的矩阵转置211
    5.4.5增大并行性214
    5.5常量内存215
    5.5.1使用常量内存实现一维模板215
    5.5.2与只读缓存的比较217
    5.6线程束洗牌指令219
    5.6.1线程束洗牌指令的不同形式220
    5.6.2线程束内的共享数据222
    5.6.3使用线程束洗牌指令的并行归约226
    5.7总结227
    5.8习题228
    第6章流和并发230
    6.1流和事件概述231
    6.1.1CUDA流231
    6.1.2流调度234
    6.1.3流的优先级235
    6.1.4CUDA事件235
    6.1.5流同步237
    6.2并发内核执行240
    6.2.1非空流中的并发内核240
    6.2.2FermiGPU上的虚假依赖关系242
    6.2.3使用OpenMP的调度操作244
    6.2.4用环境变量调整流行为245
    6.2.5GPU资源的并发限制246
    6.2.6默认流的阻塞行为247
    6.2.7创建流间依赖关系248
    6.3重叠内核执行和数据传输249
    6.3.1使用深度优先调度重叠249
    6.3.2使用广度优先调度重叠252
    6.4重叠GPU和CPU执行254
    6.5流回调255
    6.6总结256
    6.7习题257
    第7章调整指令级原语258
    7.1CUDA指令概述259
    7.1.1浮点指令259
    7.1.2内部函数和标准函数261
    7.1.3原子操作指令262
    7.2程序优化指令264
    7.2.1单精度与双精度的比较264
    7.2.2标准函数与内部函数的比较266
    7.2.3了解原子指令272
    7.2.4综合范例277
    7.3总结279
    7.4习题280
    第8章GPU加速库和OpenACC281
    8.1CUDA库概述282
    8.1.1CUDA库支持的作用域283
    8.1.2通用的CUDA库工作流283
    8.2cuSPARSE库285
    8.2.1cuSPARSE数据存储格
    8.2.2用cuSPARSE进行格式转换
    8.2.3cuSPARSE功能示例
    8.2.4cuSPARSE发展中的重要主题
    8.2.5cuSPARSE小结
    8.3cuBLAS库
    8.3.1管理cuBLAS数据
    8.3.2cuBLAS功能示例
    8.3.3cuBLAS发展中的重要主题
    8.3.4cuBLAS小结
    8.4cuFFT库
    8.4.1使用cuFFTAPI
    8.4.2cuFFT功能示例
    8.4.3cuFFT小结
    8.5cuRAND库
    8.5.1拟随机数或伪随机数的选择
    8.5.2cuRAND库概述
    8.5.3cuRAND介绍
    8.5.4cuRAND发展中的重要主题
    8.6CUDA6.0中函数库的介绍
    8.6.1Drop—In库
    8.6.2多GPU库
    8.7CUDA函数库的性能研究
    8.7.1cuSPARSE与MKL的比较
    8.7.2cuBLAS与MKLBLAS的比较
    8.7.3cuFFT与FFTW及MKL的比较
    8.7.4CUDA库性能小结
    8.8OpenACC的使用
    8.8.1OpenACC计算指令的使用
    8.8.2OpenACC数据指令的使用
    8.8.3OpenACC运行时API
    8.8.4OpenACC和CUDA库的结合
    8.8.5OpenACC小结
    8.9总结
    8.10习题
    第9章多GPU编程
    9.1从一个GPU到多GPU
    9.1.1在多GPU上执行
    9.1.2点对点通信
    9.1.3多GPU间的同步
    9.2多GPU间细分计算
    9.2.1在多设备上分配内存
    9.2.2单主机线程分配工作
    9.2.3编译和执行
    9.3多GPU上的点对点通信
    9.3.1实现点对点访问
    9.3.2点对点的内存复制
    9.3.3统一虚拟寻址的点对点内存访问
    9.4多GPU上的有限差分
    9.4.1二维波动方程的模板计算
    9.4.2多GPU程序的典型模式
    9.4.3多GPU上的二维模板计算
    9.4.4重叠计算与通信
    9.4.5编译和执行
    9.5跨GPU集群扩展应用程序
    9.5.1CPU到CPU的数据传输
    9.5.2使用传统MPI在GPU和GPU间传输数据
    9.5.3使用CUDA—awareMPI进行GPU到GPU的数据传输
    9.5.4使用CUDA—awareMPI进行节点内GPU到GPU的数据传输
    9.5.5调整消息块大小
    行GPU到GPU的数据传输
    9.6总结
    9.7习题
    ……
    第10章程序实现的注意事项
    附录推荐阅读
查看详情
您可能感兴趣 / 更多
CUDA C编程权威指南
CURRENTDIAGNOSISANDTREATMENTPSYCHIAT
Michael Ebert、Peter Loosen、Barry Nurcombe 著
CUDA C编程权威指南
CUDA FORTRAN并行计算程序设计及应用
强晟、张勇强、郭晓娜 著
CUDA C编程权威指南
CUDA 编程:基础与实践
樊哲勇
CUDA C编程权威指南
CURRENTDiagnosis&TreatmentinOrthopedics,FourthEdition(LANGECURRENTSeries)
Harry Skinner 著
CUDA C编程权威指南
CUDA与OpenCV并行图像处理实战
王泽宇、宋清洋、栾峰 著
CUDA C编程权威指南
CUPL正能量人物访谈活动报道合集III
黄瑞宇 著
CUDA C编程权威指南
CURRENTGERIATRICDIAGNOSIS&TREATMENT
Brie Williams、Anna Chang、C. Seth Landefeld 著
CUDA C编程权威指南
CUDA for Engineers: An Introduction to High-Performance Parallel Computing
Duane Storti;Mete Yurtoglu
CUDA C编程权威指南
CULT OF THE AMATEUR, THE(ISBN=9780385520812) 英文原版
Andrew Keen
CUDA C编程权威指南
CULTURALCOMPETENCE
Ronnie Leavitt PhD MPH 著
CUDA C编程权威指南
CURRENTMEDICALDIAGNOSISNTREATMT2004
Lawrence M. Tierney、Stephen J. McPhee 著
CUDA C编程权威指南
CURRENTESSENTIALSORTHOPEDICS
Harry Skinner、Michael Fitzpatrick 著
系列丛书 / 更多
CUDA C编程权威指南
CURRENTDIAGNOSISANDTREATMENTPSYCHIAT
Michael Ebert、Peter Loosen、Barry Nurcombe 著
CUDA C编程权威指南
CUDA FORTRAN并行计算程序设计及应用
强晟、张勇强、郭晓娜 著
CUDA C编程权威指南
CUDA 编程:基础与实践
樊哲勇
CUDA C编程权威指南
CURRENTDiagnosis&TreatmentinOrthopedics,FourthEdition(LANGECURRENTSeries)
Harry Skinner 著
CUDA C编程权威指南
CUDA与OpenCV并行图像处理实战
王泽宇、宋清洋、栾峰 著
CUDA C编程权威指南
CUPL正能量人物访谈活动报道合集III
黄瑞宇 著
CUDA C编程权威指南
CURRENTGERIATRICDIAGNOSIS&TREATMENT
Brie Williams、Anna Chang、C. Seth Landefeld 著
CUDA C编程权威指南
CUDA for Engineers: An Introduction to High-Performance Parallel Computing
Duane Storti;Mete Yurtoglu
CUDA C编程权威指南
CULT OF THE AMATEUR, THE(ISBN=9780385520812) 英文原版
Andrew Keen
CUDA C编程权威指南
CULTURALCOMPETENCE
Ronnie Leavitt PhD MPH 著
CUDA C编程权威指南
CURRENTMEDICALDIAGNOSISNTREATMT2004
Lawrence M. Tierney、Stephen J. McPhee 著
CUDA C编程权威指南
CURRENTESSENTIALSORTHOPEDICS
Harry Skinner、Michael Fitzpatrick 著
相关图书 / 更多
CUDA C编程权威指南
CURRENTDIAGNOSISANDTREATMENTPSYCHIAT
Michael Ebert、Peter Loosen、Barry Nurcombe 著
CUDA C编程权威指南
CUDA FORTRAN并行计算程序设计及应用
强晟、张勇强、郭晓娜 著
CUDA C编程权威指南
CUDA 编程:基础与实践
樊哲勇
CUDA C编程权威指南
CURRENTDiagnosis&TreatmentinOrthopedics,FourthEdition(LANGECURRENTSeries)
Harry Skinner 著
CUDA C编程权威指南
CUDA与OpenCV并行图像处理实战
王泽宇、宋清洋、栾峰 著
CUDA C编程权威指南
CUPL正能量人物访谈活动报道合集III
黄瑞宇 著
CUDA C编程权威指南
CURRENTGERIATRICDIAGNOSIS&TREATMENT
Brie Williams、Anna Chang、C. Seth Landefeld 著
CUDA C编程权威指南
CUDA for Engineers: An Introduction to High-Performance Parallel Computing
Duane Storti;Mete Yurtoglu
CUDA C编程权威指南
CULT OF THE AMATEUR, THE(ISBN=9780385520812) 英文原版
Andrew Keen
CUDA C编程权威指南
CULTURALCOMPETENCE
Ronnie Leavitt PhD MPH 著
CUDA C编程权威指南
CURRENTMEDICALDIAGNOSISNTREATMT2004
Lawrence M. Tierney、Stephen J. McPhee 著
CUDA C编程权威指南
CURRENTESSENTIALSORTHOPEDICS
Harry Skinner、Michael Fitzpatrick 著