GPU编程实战 基于Python和CUDA

GPU编程实战 基于Python和CUDA
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (Brian Tuomanen)
2022-06
版次: 1
ISBN: 9787115560919
定价: 79.90
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 244页
字数: 303千字
45人买过
  • 本书旨在引导读者基于 Python 和CUDA 的 GPU 编程开发高性能的应用程序,先后介绍了为什么要学习 GPU 编程、搭建 GPU编程环境、PyCUDA入门等内容,以及 CUDA 代码的调试与性能分析、通过 Scikit-CUDA 模块使用 CUDA 库、实现深度神经网络、CUDA 性能优化等内容。学完上述内容,读者应能从零开始构建基于 GPU的深度神经网络,甚至能够解决与数据科学和 GPU编程高性能计算相关的问题。
      本书适合对GPU 编程与 CUDA编程感兴趣的读者阅读。读者应掌握必要的基本数学概念,且需要具备一定的 Python编程经验。 Brian Tuomanen 博士自2014年以来,一直从事CUDA 和GPU 编程方面的工作。他在美国西雅图华盛顿大学(University of Washington)获得了电气工程专业的学士学位,在攻读数学专业的硕士学位之前,从事过软件工程方面的工作。后来,他在哥伦比亚的密苏里大学攻读数学博士学位,在那里与 GPU 编程\"邂逅\"——GPU编程当时主要用于研究科学问题。Tuomanen 博十曾经在美国陆军研究实验室以GPU编程为题发表演讲,后来在美国马里兰州的一家初创公司负责GPU集成和开发方面的工作。目前,他在西雅图担任微软的机器学习专家(Azure CSI)。 第 1章 为什么要学习GPU编程 1

    1.1 技术要求 2

    1.2 并行化与阿姆达尔定律 2

    1.2.1 使用阿姆达尔定律 3

    1.2.2 Mandelbrot集 5

    1.3 对代码进行性能分析 7

    1.4 小结 9

    1.5 习题 10

    第 2章 搭建GPU编程环境 11

    2.1 技术要求 12

    2.2 确保拥有合适的硬件 12

    2.2.1 检查硬件(Linux系统) 13

    2.2.2 检查硬件(Windows系统) 14

    2.3 安装GPU驱动程序 15

    2.3.1 安装GPU驱动程序(Linux系统) 16

    2.3.2 安装GPU驱动程序(Windows系统) 17

    2.4 搭建C  编程环境 18

    2.4.1 设置GCC、Eclipse IDE和图形处理库(Linux系统) 18

    2.4.2 设置Visual Studio(Windows系统) 18

    2.4.3 安装CUDA Toolkit 20

    2.5 为GPU编程设置Python环境 21

    2.5.1 安装PyCUDA(Linux系统) 22

    2.5.2 创建环境启动脚本(Windows系统) 22

    2.5.3 安装PyCUDA(Windows系统) 23

    2.5.4 测试PyCUDA 23

    2.6 小结 24

    2.7 习题 25

    第3章 PyCUDA入门 26

    3.1 技术要求 26

    3.2 查询GPU 27

    3.3 使用PyCUDA的gpuarray类 31

    3.3.1 使用gpuarray在GPU之间传输数据 31

    3.3.2 使用gpuarray进行基本的逐元素算术运算 32

    3.4 使用PyCUDA的ElementwiseKernel执行逐元素运算 37

    3.4.1 重温Mandelbrot集 40

    3.4.2 函数式编程简介 44

    3.4.3 并行化的扫描内核函数和规约内核函数简介 45

    3.5 小结 47

    3.6 习题 47

    第4章 内核函数、线程、线程块与网格 49

    4.1 技术要求 50

    4.2 内核函数 50

    4.3 线程、线程块与网格 53

    4.4 线程同步与线程通信 60

    4.4.1 使用设备函数__syncthreads 60

    4.4.2 使用共享内存 63

    4.5 并行前缀算法 65

    4.5.1 朴素并行前缀算法 66

    4.5.2 包含型并行前缀算法与独占型并行前缀算法 69

    4.5.3 工作高效型并行前缀算法 69

    4.5.4 工作高效型并行前缀算法的实现 71

    4.6 小结 74

    4.7 习题 74

    第5章 流、事件、上下文与并发性 76

    5.1 技术要求 77

    5.2 CUDA设备同步 77

    5.2.1 使用PyCUDA流类 78

    5.2.2 通过CUDA流实现并发版本的LIFE 82

    5.3 事件 85

    5.4 上下文 89

    5.4.1 同步当前上下文 90

    5.4.2 手动创建上下文 91

    5.4.3 主机端多进程与多线程技术 92

    5.4.4 实现主机端并发的多上下文 93

    5.5 小结 97

    5.6 习题 97

    第6章 CUDA代码的调试与性能分析 99

    6.1 技术要求 100

    6.2 在CUDA内核函数中使用printf函数 100

    6.3 CUDA C编程简介 106

    6.4 利用Nsight IDE开发和调试CUDA C代码 113

    6.4.1 在Windows平台上的Visual Studio中使用Nsight 113

    6.4.2 在Linux平台中使用Nsight和Eclipse 117

    6.4.3 借助Nsight理解CUDA的线程束锁步特性 120

    6.5 使用NVIDIA性能分析工具——nvprof与Visual Profiler 122

    6.6 小结 124

    6.7 习题 125

    第7章 通过Scikit-CUDA模块使用CUDA库 126

    7.1 技术要求 127

    7.2 安装Scikit-CUDA 127

    7.3 利用cuBLAS库处理基本线性代数运算 128

    7.3.1 利用cuBLAS库处理第 1级AXPY运算 128

    7.3.2 其他第 1级cuBLAS函数 130

    7.3.3 利用cuBLAS库处理第 2级GEMV运算 131

    7.3.4 利用cuBLAS中的第3级GEMM操作测量GPU性能 133

    7.4 利用cuFFT库进行快速傅里叶变换 136

    7.4.1 一维快速傅里叶变换示例 137

    7.4.2 使用FFT进行卷积操作 138

    7.4.3 利用cuFFT进行二维卷积 139

    7.5 通过Scikit-CUDA使用cuSolver 144

    7.5.1 奇异值分解 144

    7.5.2 奇异值分解在主成分分析中的应用 146

    7.6 小结 147

    7.7 习题 148

    第8章 CUDA设备函数库与Thrust库 149

    8.1 技术要求 150

    8.2 cuRAND设备函数库 150

    8.3 CUDA Math API 155

    8.3.1 定积分概述 155

    8.3.2 用蒙特卡罗方法计算定积分 156

    8.3.3 编写测试用例 162

    8.4 CUDA Thrust库 164

    8.5 小结 168

    8.6 习题 169

    第9章 实现深度神经网络 170

    9.1 技术要求 170

    9.2 人工神经元与神经网络 171

    9.3 softmax层的实现 177

    9.4 交叉熵损失函数的实现 179

    9.5 序贯网络的实现 180

    9.5.1 推理方法的实现 182

    9.5.2 梯度下降法 184

    9.5.3 数据的规范化和归一化 189

    9.6 Iris数据集 190

    9.7 小结 192

    9.8 习题 193

    第 10章 应用编译好的GPU代码 194

    10.1 通过Ctypes模块启动编译好的 代码 194

    10.2 编译并运行纯PTX代码 201

    10.3 为CUDA Driver API编写 包装器 203

    10.4 小结 210

    10.5 习题 211

    第 11章 CUDA性能优化 212

    11.1 动态并行性 212

    11.2 向量化数据类型与 内存访问 217

    11.3 线程安全的原子操作 218

    11.4 线程束洗牌 220

    11.5 内联PTX汇编 223

    11.6 经过优化的数组求和 函数 227

    11.7 小结 231

    11.8 习题 231

    第 12章 未来展望 233

    12.1 深入了解CUDA和GPGPU 编程技术 234

    12.1.1 多GPU系统 234

    12.1.2 集群计算和消息 传递接口 234

    12.1.3 OpenCL和 PyOpenCLCUDA 234

    12.2 图形领域 235

    12.2.1 OpenGL 235

    12.2.2 DirectX 12 235

    12.2.3 Vulkan 236

    12.3 机器学习与计算机视觉 236

    12.3.1 基础知识 236

    12.3.2 cuDNN 236

    12.3.3 Tensorflow与Keras 237

    12.3.4 Chainer 237

    12.3.5 OpenCV 237

    12.4 区块链技术 237

    12.5 小结 238

    12.6 习题 238

    习题提示 239

    第 1章 为什么要学习GPU编程 239

    第 2章 搭建GPU编程环境 239

    第3章 PyCUDA入门 240

    第4章 内核函数、线程、线程块与网格 240

    第5章 流、事件、上下文与并发性 241

    第6章 CUDA代码的调试与性能分析 241

    第7章 通过Scikit-CUDA模块使用CUDA库 242

    第8章 CUDA设备函数库与Thrust库 242

    第9章 实现深度神经网络 243

    第 10章 应用编译好的GPU代码 243

    第 11章 CUDA性能优化 244

    第 12章 未来展望 244
  • 内容简介:
    本书旨在引导读者基于 Python 和CUDA 的 GPU 编程开发高性能的应用程序,先后介绍了为什么要学习 GPU 编程、搭建 GPU编程环境、PyCUDA入门等内容,以及 CUDA 代码的调试与性能分析、通过 Scikit-CUDA 模块使用 CUDA 库、实现深度神经网络、CUDA 性能优化等内容。学完上述内容,读者应能从零开始构建基于 GPU的深度神经网络,甚至能够解决与数据科学和 GPU编程高性能计算相关的问题。
      本书适合对GPU 编程与 CUDA编程感兴趣的读者阅读。读者应掌握必要的基本数学概念,且需要具备一定的 Python编程经验。
  • 作者简介:
    Brian Tuomanen 博士自2014年以来,一直从事CUDA 和GPU 编程方面的工作。他在美国西雅图华盛顿大学(University of Washington)获得了电气工程专业的学士学位,在攻读数学专业的硕士学位之前,从事过软件工程方面的工作。后来,他在哥伦比亚的密苏里大学攻读数学博士学位,在那里与 GPU 编程\"邂逅\"——GPU编程当时主要用于研究科学问题。Tuomanen 博十曾经在美国陆军研究实验室以GPU编程为题发表演讲,后来在美国马里兰州的一家初创公司负责GPU集成和开发方面的工作。目前,他在西雅图担任微软的机器学习专家(Azure CSI)。
  • 目录:
    第 1章 为什么要学习GPU编程 1

    1.1 技术要求 2

    1.2 并行化与阿姆达尔定律 2

    1.2.1 使用阿姆达尔定律 3

    1.2.2 Mandelbrot集 5

    1.3 对代码进行性能分析 7

    1.4 小结 9

    1.5 习题 10

    第 2章 搭建GPU编程环境 11

    2.1 技术要求 12

    2.2 确保拥有合适的硬件 12

    2.2.1 检查硬件(Linux系统) 13

    2.2.2 检查硬件(Windows系统) 14

    2.3 安装GPU驱动程序 15

    2.3.1 安装GPU驱动程序(Linux系统) 16

    2.3.2 安装GPU驱动程序(Windows系统) 17

    2.4 搭建C  编程环境 18

    2.4.1 设置GCC、Eclipse IDE和图形处理库(Linux系统) 18

    2.4.2 设置Visual Studio(Windows系统) 18

    2.4.3 安装CUDA Toolkit 20

    2.5 为GPU编程设置Python环境 21

    2.5.1 安装PyCUDA(Linux系统) 22

    2.5.2 创建环境启动脚本(Windows系统) 22

    2.5.3 安装PyCUDA(Windows系统) 23

    2.5.4 测试PyCUDA 23

    2.6 小结 24

    2.7 习题 25

    第3章 PyCUDA入门 26

    3.1 技术要求 26

    3.2 查询GPU 27

    3.3 使用PyCUDA的gpuarray类 31

    3.3.1 使用gpuarray在GPU之间传输数据 31

    3.3.2 使用gpuarray进行基本的逐元素算术运算 32

    3.4 使用PyCUDA的ElementwiseKernel执行逐元素运算 37

    3.4.1 重温Mandelbrot集 40

    3.4.2 函数式编程简介 44

    3.4.3 并行化的扫描内核函数和规约内核函数简介 45

    3.5 小结 47

    3.6 习题 47

    第4章 内核函数、线程、线程块与网格 49

    4.1 技术要求 50

    4.2 内核函数 50

    4.3 线程、线程块与网格 53

    4.4 线程同步与线程通信 60

    4.4.1 使用设备函数__syncthreads 60

    4.4.2 使用共享内存 63

    4.5 并行前缀算法 65

    4.5.1 朴素并行前缀算法 66

    4.5.2 包含型并行前缀算法与独占型并行前缀算法 69

    4.5.3 工作高效型并行前缀算法 69

    4.5.4 工作高效型并行前缀算法的实现 71

    4.6 小结 74

    4.7 习题 74

    第5章 流、事件、上下文与并发性 76

    5.1 技术要求 77

    5.2 CUDA设备同步 77

    5.2.1 使用PyCUDA流类 78

    5.2.2 通过CUDA流实现并发版本的LIFE 82

    5.3 事件 85

    5.4 上下文 89

    5.4.1 同步当前上下文 90

    5.4.2 手动创建上下文 91

    5.4.3 主机端多进程与多线程技术 92

    5.4.4 实现主机端并发的多上下文 93

    5.5 小结 97

    5.6 习题 97

    第6章 CUDA代码的调试与性能分析 99

    6.1 技术要求 100

    6.2 在CUDA内核函数中使用printf函数 100

    6.3 CUDA C编程简介 106

    6.4 利用Nsight IDE开发和调试CUDA C代码 113

    6.4.1 在Windows平台上的Visual Studio中使用Nsight 113

    6.4.2 在Linux平台中使用Nsight和Eclipse 117

    6.4.3 借助Nsight理解CUDA的线程束锁步特性 120

    6.5 使用NVIDIA性能分析工具——nvprof与Visual Profiler 122

    6.6 小结 124

    6.7 习题 125

    第7章 通过Scikit-CUDA模块使用CUDA库 126

    7.1 技术要求 127

    7.2 安装Scikit-CUDA 127

    7.3 利用cuBLAS库处理基本线性代数运算 128

    7.3.1 利用cuBLAS库处理第 1级AXPY运算 128

    7.3.2 其他第 1级cuBLAS函数 130

    7.3.3 利用cuBLAS库处理第 2级GEMV运算 131

    7.3.4 利用cuBLAS中的第3级GEMM操作测量GPU性能 133

    7.4 利用cuFFT库进行快速傅里叶变换 136

    7.4.1 一维快速傅里叶变换示例 137

    7.4.2 使用FFT进行卷积操作 138

    7.4.3 利用cuFFT进行二维卷积 139

    7.5 通过Scikit-CUDA使用cuSolver 144

    7.5.1 奇异值分解 144

    7.5.2 奇异值分解在主成分分析中的应用 146

    7.6 小结 147

    7.7 习题 148

    第8章 CUDA设备函数库与Thrust库 149

    8.1 技术要求 150

    8.2 cuRAND设备函数库 150

    8.3 CUDA Math API 155

    8.3.1 定积分概述 155

    8.3.2 用蒙特卡罗方法计算定积分 156

    8.3.3 编写测试用例 162

    8.4 CUDA Thrust库 164

    8.5 小结 168

    8.6 习题 169

    第9章 实现深度神经网络 170

    9.1 技术要求 170

    9.2 人工神经元与神经网络 171

    9.3 softmax层的实现 177

    9.4 交叉熵损失函数的实现 179

    9.5 序贯网络的实现 180

    9.5.1 推理方法的实现 182

    9.5.2 梯度下降法 184

    9.5.3 数据的规范化和归一化 189

    9.6 Iris数据集 190

    9.7 小结 192

    9.8 习题 193

    第 10章 应用编译好的GPU代码 194

    10.1 通过Ctypes模块启动编译好的 代码 194

    10.2 编译并运行纯PTX代码 201

    10.3 为CUDA Driver API编写 包装器 203

    10.4 小结 210

    10.5 习题 211

    第 11章 CUDA性能优化 212

    11.1 动态并行性 212

    11.2 向量化数据类型与 内存访问 217

    11.3 线程安全的原子操作 218

    11.4 线程束洗牌 220

    11.5 内联PTX汇编 223

    11.6 经过优化的数组求和 函数 227

    11.7 小结 231

    11.8 习题 231

    第 12章 未来展望 233

    12.1 深入了解CUDA和GPGPU 编程技术 234

    12.1.1 多GPU系统 234

    12.1.2 集群计算和消息 传递接口 234

    12.1.3 OpenCL和 PyOpenCLCUDA 234

    12.2 图形领域 235

    12.2.1 OpenGL 235

    12.2.2 DirectX 12 235

    12.2.3 Vulkan 236

    12.3 机器学习与计算机视觉 236

    12.3.1 基础知识 236

    12.3.2 cuDNN 236

    12.3.3 Tensorflow与Keras 237

    12.3.4 Chainer 237

    12.3.5 OpenCV 237

    12.4 区块链技术 237

    12.5 小结 238

    12.6 习题 238

    习题提示 239

    第 1章 为什么要学习GPU编程 239

    第 2章 搭建GPU编程环境 239

    第3章 PyCUDA入门 240

    第4章 内核函数、线程、线程块与网格 240

    第5章 流、事件、上下文与并发性 241

    第6章 CUDA代码的调试与性能分析 241

    第7章 通过Scikit-CUDA模块使用CUDA库 242

    第8章 CUDA设备函数库与Thrust库 242

    第9章 实现深度神经网络 243

    第 10章 应用编译好的GPU代码 243

    第 11章 CUDA性能优化 244

    第 12章 未来展望 244
查看详情
相关图书 / 更多
GPU编程实战 基于Python和CUDA
GPS定位测量
周建郑 主编
GPU编程实战 基于Python和CUDA
GPS反射信号建模及其应用研究
孙小荣 著
GPU编程实战 基于Python和CUDA
GPT:使用OpenAI API构建NLP产品的终极指南 [英]桑德拉·库布利克
(英)桑德拉·库布利克; (英)舒巴姆·萨博
GPU编程实战 基于Python和CUDA
GPS测量技术(第2版)/教育部高等学校高职高专测绘类专业教学指导委员会行“牛志宏,陈志兰”规划教材
牛志宏、陈志兰 编
GPU编程实战 基于Python和CUDA
GPT图解 大模型是怎样构建的
黄佳
GPU编程实战 基于Python和CUDA
GPS测量与数据处理(第四版)
李征航,黄劲松 编著
GPU编程实战 基于Python和CUDA
GPT时代的量化交易:底层逻辑与技术实践
罗勇
GPU编程实战 基于Python和CUDA
GPU并行算法——N-S方程高性能计算
白智勇;李志辉
GPU编程实战 基于Python和CUDA
GPS原理与接收机设计(修订版)
谢钢
GPU编程实战 基于Python和CUDA
GPS/GNSS原理与应用(第3版)
Hegarty(克里斯朵夫・赫加蒂盖) 著;[美]Elliott、D.、Kaplan(埃利奥特・D.卡普兰)、Christopher、寇艳红 译
GPU编程实战 基于Python和CUDA
GPT时代人类再腾飞
[美]里德·霍夫曼(Reid Hoffman)& GPT-4 著;芦义 译;湛庐 出品
GPU编程实战 基于Python和CUDA
GPS/INS/星敏感器六自由度建模与仿真:在CADAC++中对一枚三级固体火箭进行NGC仿真
[美]彼得·H·齐普费尔(Peter H.Zipfel) 著;张旭辉、陈洪波、谢泽兵 译
您可能感兴趣 / 更多
GPU编程实战 基于Python和CUDA
与大法官金斯伯格一起健身(RBG金斯伯格独家健身法,从基础到进阶全套图解。附赠运动打卡记录卡与励志贴纸,克服想躺平的心魔。)
布莱恩特·约翰逊 著,帕特里克·威尔什 绘
GPU编程实战 基于Python和CUDA
惟学无际:基于脑科学构建学习模式和设计教学方案
布莱恩·古德温;托妮亚·吉布森;克里斯汀·鲁洛
GPU编程实战 基于Python和CUDA
未来思维
布莱恩·戴维·约翰逊
GPU编程实战 基于Python和CUDA
墨西哥史
布莱恩·R.哈姆内特 著;何晓静 译
GPU编程实战 基于Python和CUDA
死神捞到一条金鱼
布莱恩·雷
GPU编程实战 基于Python和CUDA
互联网进化史:从地下室革命到上帝手机
布莱恩·麦卡洛
GPU编程实战 基于Python和CUDA
黑金:世界石油政治经济史
布莱恩·C.布莱克(Brian C. Black)
GPU编程实战 基于Python和CUDA
伟大的共存:改变人类历史的8个动物伙伴
布莱恩·费根(Brian Fagan)
GPU编程实战 基于Python和CUDA
测算与判断:人工智能的终极未来
布莱恩·坎特韦尔·史密斯(Brian Cantwell 刘志毅
GPU编程实战 基于Python和CUDA
你的 CareerDNA:发现自己的优势,找到适合的职业
布莱恩·A.施华兹博士(Dr. Brian A. Schwartz)
GPU编程实战 基于Python和CUDA
DNA测试和遗传谱系学的人类家庭树指南
布莱恩·贝廷格
GPU编程实战 基于Python和CUDA
布莱恩的传奇人生
布莱恩·约翰逊