GPU 与 MATLAB 混合编程 PDF 文档

发布于 2023-06-11 19:48:06 字数 3485 浏览 72 评论 0

本书介绍 CPU 和 MATLAB 的联合编程方法,包括不使用 GPU 实现 MATLAB 加速的方法;MATLAB 和计算统一设备架构(CUDA)配置通过分析进行最优规划,以及利用 c-mex 进行 CUDA 编程的方法;MATLAB 与并行计算工具箱和运用 CUDA 加速函数库的方法;计算机图形实例和 CUDA 转换实例。本书通过大量的实例、图示和代码,深入浅出地引导读者进入 GPU 的殿堂。通过阅读本书,读者可以轻松学习使用 GPU 进行并行处理,实现 MATLAB 代码的加速,提高工作效率,从而将更多的时间和精力用于创造性工作和其他事情。

本书可作为相关专业高年级本科生和研究生的教材,也可作为工程技术人员的参考书。

MATLAB 是广泛应用于快速原型设计和算法开发的仿真工具,功能强大,简单易用。许多实验室和研究机构都迫切地希望 MATLAB 代码能够更快地运行,以满足大运算量项目的需要。由于 MATLAB 采用向量/矩阵的数据形式,适合于并行处理,因此采用图形处理单元(Graphics Processing Unit,GPU)对提升 MATLAB 运行速度大有裨益。

本书主要面向工程、科学、技术等专业领域,需要利用 MATLAB 进行海量数据处理的师生和科研人员。MATLAB 用户可能来自各个领域,不一定都具有丰富的程序开发经验。对于那些没有程序开发基础的读者,利用 GPU 加速 MATLAB 需要对他们的算法进行移植,会引入一些不必要的麻烦,甚至还需要设定环境。

本书面向具有一定或较多 MATLAB 编程经验,但对 C 语言和计算机并行架构不是很了解的读者,以帮助读者将精力集中在他们的研究工作上,从而避免因使用 GPU 和 CUDA 而对 MATLAB 程序而非算法本身进行大量调整。

目录
第 1 章 不使用 GPU 实现 MATLAB 加速
1.1 本章学习目标
1.2 向量化
1.2.1 元素运算
1.2.2 向量/矩阵运算
1.2.3 实用技巧
1.3 预分配
1.4 for-loop
1.5 考虑稀疏矩阵形式
1.6 其他技巧
1.6.1 尽量减少循环中的文件读/写
1.6.2 尽量减少动态改变路径和改变变量类型
1.6.3 在代码易读性和优化间保持平衡
1.7 实例
第 2 章 MATLAB 和 CUDA 配置
2.1 本章学习目标
2.2 配置 MATLAB 进行 c-mex 编程
2.2.1 备忘录
2.2.2 编译器的选择
2.3 使用 c-mex 实现 Hello mex
2.4 MATLAB 中的 CUDA 配置
2.5 实例:使用 CUDA 实现简单的向量加法
2.6 图像卷积实例
2.6.1 MATLAB 中卷积运算
2.6.2 用编写的 c-mex 计算卷积
2.6.3 在编写的 c-mex 中利用 CUDA 计算卷积
2.6.4 简单的时间性能分析
2.7 总结
第 3 章 通过耗时分析进行最优规划
3.1 本章学习目标
3.2 分析 MATLAB 代码查找瓶颈
3.2.1 分析器的使用方法
3.2.2 针对多核 CPU 更精确的耗时分析
3.3 CUDA 的 c-mex 代码分析
3.3.1 利用 VisualStudio 进行 CUDA 分析
3.3.2 利用 NVIDIAVisualProfiler 进行 CUDA 分析
3.4 c-mex 调试器的环境设置
第 4 章 利用 c-mex 进行 CUDA 编程
4.1 本章学习目标
4.2 c-mex 中的存储布局
4.2.1 按列存储
4.2.2 按行存储
4.2.3 c-mex 中复数的存储布局
4.3 逻辑编程模型
4.4 GPU 简单介绍
4.4.1 数据并行
4.4.2 流处理器
4.4.3 流处理器簇
4.4.4 线程束
4.4.5 存储器
4.5 第一种初级方法的分析
4.5.1 优化方案 A:线程块
4.5.2 优化方案 B
4.5.3 总结
第 5 章 MATLAB 与并行计算工具箱
5.1 本章学习目标
5.2 GPU 处理 MATLAB 内置函数
5.3 GPU 处理非内置 MATLAB 函数
5.4 并行任务处理
5.4.1 MATLABworker
5.4.2 parfor
5.5 并行数据处理
5.5.1 spmd
5.5.2 分布式数组与同分布数组
5.5.3 多个 GPU 时的 worker
5.6 无需 c-mex 的 CUDA 文件直接使用
第 6 章 使用 CUDA 加速函数库
6.1 本章学习目标
6.2 CUBLAS
6.2.1 CUBLAS 函数
6.2.2 CUBLAS 矩阵乘法
6.2.3 使用 VisualProfiler 进行 CUBLAS 分析
6.3 CUFFT
6.3.1 通过 CUFFT 进行二维 FFT 运算
6.3.2 用 VisualProfiler 进行 CUFFT 时间分析
6.4 Thrust
6.4.1 通过 Thrust 排序
6.4.2 采用 VisualProfiler 分析 Thrust
第 7 章 计算机图形学实例
7.1 本章学习目标
7.2 Marching-Cubes 算法
7.3 MATLAB 实现
7.3.10 时间分析
7.4 采用 CUDA 和 c-mex 实现算法
7.4.3 时间分析
7.5 用 c-mex 函数和 GPU 实现
7.5.6 时间分析
7.6 总结
第 8 章 CUDA 转换实例:3D 图像处理
8.1 本章学习目标
8.2 基于 Atlas 分割方法的 MATLAB 代码
8.2.1 基于 Atlas 分割背景知识
8.2.2 用于分割的 MATLAB 代码
8.3 通过分析进行 CUDA 最优设计
8.3.1 分析 MATLAB 代码
8.3.2 结果分析和 CUDA 最优设计
8.4 CUDA 转换 1——正则化
8.5 CUDA 转换 2——图像配准
8.6 CUDA 转换结果
8.7 结论
附录
附录 A 下载和安装 CUDA 库
A.1 CUDA 工具箱下载
A.2 安装
A.3 确认
附录 B 安装 NVIDIANsight 到 VisualStudio

下载地址: https://www.wenjiangs.com/wp-content/uploads/2023/06/ZjFzvm2GLUjYlTXS.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

qq_7J1imQ

文章 0 评论 0

《一串符号》

文章 0 评论 0

hls.

文章 0 评论 0

雅心素梦

文章 0 评论 0

塔塔猫

文章 0 评论 0

微信用户

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文