国际信息工程先进技术译丛 GPU与MATLAB混合编程
作者:郑郁旭
出版时间:2016
内容简介
本书介绍CPU和MATLAB的联合编程方法,包括首先介绍了不使用GPU实现MATLAB加速的方法;然后介绍了MATLAB和计算统一设备架(CUDA)配置通过分析进行zuiyou规划,以及利用c-mex进行CUDA编程;接着介绍了MATLAB与并行计算工具箱和运用CUDA加速函数库;zui后给出计算机图形实例和CUDA转换实例。本书还通过大量的实例、图示和代码,深入浅出地引导读者进入GPU的殿堂,易于读者理解和掌握。通过阅读本书,读者无需付出很多的精力和时间,就可以学习使用GPU进行并行处理,实现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 利用Visual Studio进行CUDA分析
3.3.2 利用NVIDIA Visual Profiler进行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.3.1 逻辑分组1
4.3.2 逻辑分组2
4.3.3 逻辑分组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 MATLAB worker
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 使用Visual Profiler进行CUBLAS分析
6.3 CUFFT
6.3.1 通过CUFFT进行二维FFT运算
6.3.2 用Visual Profiler进行CUFFT时间分析
6.4 Thrust
6.4.1 通过Thrust排序
6.4.2 采用Visual Profiler分析Thrust
第7章 计算机图形学实例
7.1 本章学习目标
7.2 Marching-Cubes算法
7.3 MATLAB实现
7.3.1 步骤1
7.3.2 步骤2
7.3.3 步骤3
7.3.4 步骤4
7.3.5 步骤5
7.3.6 步骤6
7.3.7 步骤7
7.3.8 步骤8
7.3.9 步骤9
7.3.10 时间分析
7.4 采用CUDA和c-mex实现算法
7.4.1 步骤1
7.4.2 步骤2
7.4.3 时间分析
7.5 用c-mex函数和GPU实现
7.5.1 步骤1
7.5.2 步骤2
7.5.3 步骤3
7.5.4 步骤4
7.5.5 步骤5
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 安装NVIDIA Nsight到Visual Studio