展开全部

主编推荐语

基于Python和CUDA介绍GPU编程,重点介绍如何通过GPU编程来实现高性能的并行计算。

内容简介

本书旨在引导读者基于Python和CUDA的GPU编程开发高性能的应用程序,先后介绍了为什么要学习GPU编程、搭建GPU编程环境、PyCUDA入门等内容,以及CUDA代码的调试与性能分析、通过Scikit-CUDA模块使用CUDA库、实现深度神经网络、CUDA性能优化等内容。

目录

  • 版权信息
  • 内容提要
  • 作者简介
  • 审稿人简介
  • 前言
  • 第1章 为什么要学习GPU编程
  • 1.1 技术要求
  • 1.2 并行化与阿姆达尔定律
  • 1.2.1 使用阿姆达尔定律
  • 1.2.2 Mandelbrot集
  • 1.3 对代码进行性能分析
  • 使用cProfile模块
  • 1.4 小结
  • 1.5 习题
  • 第2章 搭建GPU编程环境
  • 2.1 技术要求
  • 2.2 确保拥有合适的硬件
  • 2.2.1 检查硬件(Linux系统)
  • 2.2.2 检查硬件(Windows系统)
  • 2.3 安装GPU驱动程序
  • 2.3.1 安装GPU驱动程序(Linux系统)
  • 2.3.2 安装GPU驱动程序(Windows系统)
  • 2.4 搭建C++编程环境
  • 2.4.1 设置GCC、Eclipse IDE和图形处理库(Linux系统)
  • 2.4.2 设置Visual Studio(Windows系统)
  • 2.4.3 安装CUDA Toolkit
  • 2.5 为GPU编程设置Python环境
  • 2.5.1 安装PyCUDA(Linux系统)
  • 2.5.2 创建环境启动脚本(Windows系统)
  • 2.5.3 安装PyCUDA(Windows系统)
  • 2.5.4 测试PyCUDA
  • 2.6 小结
  • 2.7 习题
  • 第3章 PyCUDA入门
  • 3.1 技术要求
  • 3.2 查询GPU
  • 使用PyCUDA查询GPU
  • 3.3 使用PyCUDA的gpuarray类
  • 3.3.1 使用gpuarray在GPU之间传输数据
  • 3.3.2 使用gpuarray进行基本的逐元素算术运算
  • 3.4 使用PyCUDA的ElementwiseKernel执行逐元素运算
  • 3.4.1 重温Mandelbrot集
  • 3.4.2 函数式编程简介
  • 3.4.3 并行化的扫描内核函数和规约内核函数简介
  • 3.5 小结
  • 3.6 习题
  • 第4章 内核函数、线程、线程块与网格
  • 4.1 技术要求
  • 4.2 内核函数
  • PyCUDA SourceModule函数
  • 4.3 线程、线程块与网格
  • 康威生命游戏
  • 4.4 线程同步与线程通信
  • 4.4.1 使用设备函数__syncthreads
  • 4.4.2 使用共享内存
  • 4.5 并行前缀算法
  • 4.5.1 朴素并行前缀算法
  • 4.5.2 包含型并行前缀算法与独占型并行前缀算法
  • 4.5.3 工作高效型并行前缀算法
  • 4.5.4 工作高效型并行前缀算法的实现
  • 4.6 小结
  • 4.7 习题
  • 第5章 流、事件、上下文与并发性
  • 5.1 技术要求
  • 5.2 CUDA设备同步
  • 5.2.1 使用PyCUDA流类
  • 5.2.2 通过CUDA流实现并发版本的LIFE
  • 5.3 事件
  • 事件与CUDA流
  • 5.4 上下文
  • 5.4.1 同步当前上下文
  • 5.4.2 手动创建上下文
  • 5.4.3 主机端多进程与多线程技术
  • 5.4.4 实现主机端并发的多上下文
  • 5.5 小结
  • 5.6 习题
  • 第6章 CUDA代码的调试与性能分析
  • 6.1 技术要求
  • 6.2 在CUDA内核函数中使用printf函数
  • 利用printf函数调试代码
  • 6.3 CUDA C编程简介
  • 6.4 利用Nsight IDE开发和调试CUDA C代码
  • 6.4.1 在Windows平台上的Visual Studio中使用Nsight
  • 6.4.2 在Linux平台中使用Nsight和Eclipse
  • 6.4.3 借助Nsight理解CUDA的线程束锁步特性
  • 6.5 使用NVIDIA性能分析工具
  • 6.6 小结
  • 6.7 习题
  • 第7章 通过Scikit-CUDA模块使用CUDA库
  • 7.1 技术要求
  • 7.2 安装Scikit-CUDA
  • 7.3 利用cuBLAS库处理基本线性代数运算
  • 7.3.1 利用cuBLAS库处理第1级AXPY运算
  • 7.3.2 其他第1级cuBLAS函数
  • 7.3.3 利用cuBLAS库处理第2级GEMV运算
  • 7.3.4 利用cuBLAS中的第3级GEMM操作测量GPU性能
  • 7.4 利用cuFFT库进行快速傅里叶变换
  • 7.4.1 一维快速傅里叶变换示例
  • 7.4.2 使用FFT进行卷积操作
  • 7.4.3 利用cuFFT进行二维卷积
  • 7.5 通过Scikit-CUDA使用cuSolver
  • 7.5.1 奇异值分解
  • 7.5.2 奇异值分解在主成分分析中的应用
  • 7.6 小结
  • 7.7 习题
  • 第8章 CUDA设备函数库与Thrust库
  • 8.1 技术要求
  • 8.2 cuRAND设备函数库
  • 用蒙特卡罗方法估计圆周率
  • 8.3 CUDA Math API
  • 8.3.1 定积分概述
  • 8.3.2 用蒙特卡罗方法计算定积分
  • 8.3.3 编写测试用例
  • 8.4 CUDA Thrust库
  • 在Thrust中使用仿函数
  • 8.5 小结
  • 8.6 习题
  • 第9章 实现深度神经网络
  • 9.1 技术要求
  • 9.2 人工神经元与神经网络
  • 实现一个密集层
  • 9.3 softmax层的实现
  • 9.4 交叉熵损失函数的实现
  • 9.5 序贯网络的实现
  • 9.5.1 推理方法的实现
  • 9.5.2 梯度下降法
  • 9.5.3 数据的规范化和归一化
  • 9.6 Iris数据集
  • 9.7 小结
  • 9.8 习题
  • 第10章 应用编译好的GPU代码
  • 10.1 通过Ctypes模块启动编译好的代码
  • 重温Mandelbrot集
  • 10.2 编译并运行纯PTX代码
  • 10.3 为CUDA Driver API编写包装器
  • 使用CUDA Driver API
  • 10.4 小结
  • 10.5 习题
  • 第11章 CUDA性能优化
  • 11.1 动态并行性
  • 基于动态并行性的快速排序算法
  • 11.2 向量化数据类型与内存访问
  • 11.3 线程安全的原子操作
  • 11.4 线程束洗牌
  • 11.5 内联PTX汇编
  • 11.6 经过优化的数组求和函数
  • 11.7 小结
  • 11.8 习题
  • 第12章 未来展望
  • 12.1 深入了解CUDA和GPGPU编程技术
  • 12.1.1 多GPU系统
  • 12.1.2 集群计算和消息传递接口
  • 12.1.3 OpenCL和PyOpenCLCUDA
  • 12.2 图形领域
  • 12.2.1 OpenGL
  • 12.2.2 DirectX 12
  • 12.2.3 Vulkan
  • 12.3 机器学习与计算机视觉
  • 12.3.1 基础知识
  • 12.3.2 cuDNN
  • 12.3.3 Tensorflow与Keras
  • 12.3.4 Chainer
  • 12.3.5 OpenCV
  • 12.4 区块链技术
  • 12.5 小结
  • 12.6 习题
  • 习题提示
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。